2014-03-30 2 views
0

C 또는 C++에서 글로벌 범위의 const를 선언 할 수 있습니까?하지만 정의는 함수 안에 설정되어 있습니까?C++에서 전역 범위 변수 const 선언하기

+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

아니요, 불가능합니다. 선언은 정의와 동일한 범위에 있어야합니다. 그렇지 않으면 같은 이름이 아닙니다.