請問使用constexpr而不是const更好的幫忙編譯優化?我有一些不變的價值。我可以使用enum
代替,但它們並非全部屬於同一類型,我不想使用#define
。他們聲明如下代碼。我的問題是:如果我使用constexpr
它會增加編譯器替換文字常量值所使用的值的可能性,或者如果我使用const
,它將不會有所不同?我知道這是由每個編譯器決定的,如果這樣做或者不是優化,而是一個「普遍」的答案,因爲它在大多數編譯器中的行爲是非常受歡迎的。另外,假設結果對於這樣的簡單當地人來說是不同的,如果它們不是struct/class
的成員,那麼結果是不同的?在這種情況下,const是最難以執行的操作嗎?constexpr vs const:會用constexpr代替const更好的幫忙編譯優化?
e.g,
int foo()
{
constexpr int x = 10;
constexpr int y = x * 3;
do_domsething(y + n);
}
與
int foo()
{
const int x = 10;
const int y = x * 3;
do_domsething(y + n);
}
您指的是哪種優化機會?我不認爲像這樣的東西存在(除了常量摺疊,這應該適用於'const'和'constexpr',因爲它總是在子表達式上工作,而且這些既不是'const'也不是'constexpr')。 'const'可以幫助你*寫出更高效,因爲你可以避免在某些地方複製。但它不允許編譯器執行優化。 –
@KonradRudolph:例如,constness限制別名。 –