Re: [問題] constexpr 與 static const 的選擇

作者: poyenc (髮箍)   2019-06-13 13:33:43
※ 引述《CarbonK (HTYISABUG)》之銘言:
: 開發平台(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 ?
: 麻煩大家撥冗滿足我的好奇心,謝謝
:
作者: CarbonK (HTYISABUG)   2019-06-13 22:06:00
十分感謝你的回文!也就是說,實際上如果要保證編譯期常數就應該要用 constexpr而 static const 常常會變成編譯期常數是編譯器優化的結果我這樣的理解是正確的嗎?
作者: poyenc (髮箍)   2019-06-14 00:20:00
你指的如果是不存在於 object file 的話, 對喔

Links booklink

Contact Us: admin [ a t ] ucptt.com