C_and_CPP 板


LINE

開發平台(Platform): (Ex: Win10, Linux, ...) Linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 問題(Question): 對於 constexpr 跟 static const 的差別不太了解 static const 在編譯時期時 常數會直接儲存在執行檔的 .data 這個 segment 裡 這是我的理解 問題是 constexpr 會檢查 expression 是否為編譯期常數 但檢查完後它資料是仍然放在 stack 中 還是也會放在 .data 中 然後我到底該不該用 constexpr 取代 static const ? 還是說其實根本可以 static constexpr ? 麻煩大家撥冗滿足我的好奇心,謝謝 ----- Sent from JPTT on my Samsung SM-A810YZ. --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.191.102 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1560279267.A.F58.html
1F:→ sarafciel: 你如果編譯期就保證x=3了 那幹嘛還浪費記憶體去存x 06/12 11:23
2F:→ sarafciel: 直接把程式碼裡看到的x代換成3就好了 06/12 11:24
3F:→ CarbonK: 我會選擇用變數而不是純數字的原因是為了減少 magic numb 06/12 11:59
4F:→ CarbonK: er,增加程式可讀性,也是提醒自己數字的用途 06/12 11:59
5F:→ CarbonK: 至於不用 define 的原因是常數我想放在 function 內提醒 06/12 12:00
6F:→ CarbonK: 自己用途以及作用範圍 06/12 12:00
7F:→ CarbonK: 而且你沒回答到問題欸 06/12 12:12
8F:→ sarafciel: 不 我已經在回答你的問題了 06/12 12:16
9F:→ sarafciel: constexpr是放.data還是stack?都不是 06/12 12:17
10F:→ sarafciel: 因為真正的常數根本不需要放記憶體 編在指令裡就好了 06/12 12:20
11F:推 KaryuuIssen: constexpr要看情況 要保證不產生symbol可用匿名enum 06/12 12:20
12F:→ CarbonK: 你這樣講我就理解你的意思了,看來這部分是由編譯器優化 06/12 14:21
13F:→ CarbonK: 掉了 06/12 14:21
14F:→ CarbonK: 這樣的話我對 static const 跟 .data 好像有些誤解,那麼 06/12 14:22
15F:→ CarbonK: .data 裡面存的不是常數的話會是哪些資料呢? 06/12 14:22
16F:→ CarbonK: @kary(後略) 我的應用場合不太像是要用 enum ,而是定義 06/12 14:24
17F:→ CarbonK: 一些像螢幕長寬、基本速度之類的數值,這些是有可能重複 06/12 14:24
18F:→ CarbonK: 的,所以不能用 enum 06/12 14:24
19F:→ oToToT: 匿名enum也可以有scope吧 06/12 14:53
20F:→ james732: .data是用來儲存有初始化的全域變數吧? 06/12 15:08
21F:推 KaryuuIssen: 回原PO 你所指的常數應該是直接嵌在.text中的數字 06/12 15:20
22F:→ KaryuuIssen: 但constexpr並不保證常數不會生成符號(佔據.rodata 06/12 15:20
23F:→ KaryuuIssen: 空間) 而匿名enum因為規定是純右值 所以一定不會有 06/12 15:20
24F:→ KaryuuIssen: 符號 然後我沒看懂你說會重複而不能用enum的問題 06/12 15:21
25F:→ CarbonK: 了解,這樣我理解兩者的差異了,另外那個重複什麼的問題 06/12 16:19
26F:→ CarbonK: 說理解錯誤,謝謝你的解答 06/12 16:19
27F:→ CarbonK: 更正,是我理解錯誤 06/12 16:20
28F:→ firejox: 可以寫static constexpr阿 06/13 03:11
29F:→ CarbonK: 原來是可以的嗎?謝謝提供答案 06/13 13:13







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP