2014-03-30 75 views
0

在C或C++中,是否可以用全局作用域聲明一個常量,但是定義是在函數內部設置的?聲明一個全局作用域變量const在C++中

+0

爲什麼你需要這個? –

+0

我在異步環境中進行編程,如果我沒有將它設置在一個特定的位置,變量會提取錯誤的定義。 – user3353209

+0

這並不特別清楚。如果在全局範圍內有'const int x = 3;',無論何時/無論何時引用它,它都將是'3'。你能舉一個你看到的問題的具體例子嗎? –

回答

4

約做這樣的事情(live sample

const int& MyConstValue(int x) { 
    static const int myConstValue = x; 
    return myConstValue; 
} 

int main() { 
    std::cout << MyConstValue(5) << std::endl; // This is the 1st call and "wins" 
    std::cout << MyConstValue(8) << std::endl; 

    return 0; 
} 

輸出是什麼

5 
5 

至少在這甚至保證是線程安全的。

+0

這將被放置在全局範圍內?並且在被調用至少一次之前不會被初始化? – user3353209

+0

@ user3353209 _'這將被放置在全球範圍內? ......確實! –

+0

@ user3353209請檢查我的編輯內容... –

1

不,這是不可能的。聲明必須與定義處於相同的範圍。否則,它不是同一個名字。