|
컴파일한 내용을 assembly로 변형해 봤습니다.
전역변수로
int a = 3;
const int ca = 5;
로 해 놓고
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int b;
int cb;
b = a; // 요 부분과
cb = ca; // 요 부분의 컴파일이 조금 다릅니다.
...
...
}
b = a부분은 다음과 같이 컴파일됩니다.
mov edx,[a]
mov [ebp-0x38], 3dx
그리고 cb = ca부분은 다음과 같이 컴파일됩니다.
mov [ebp-0x3c], 5
즉 전역변수로 선언된 변수는 #define과 비슷하다고 보셔야 할 것 같네요.
말씀하신 부분에 대해서 컴파일 에러가 나지 않게 하려면
a.cpp에 aa를 선언하지 말고 a.h에 선언해서 사용하면 될 것 같습니다.
지영배 님이 쓰신 글 :
:
:
:
: A.cpp 에서
:
: const int aa = 3;
:
: 이라고 해주고..
:
:
: B.cpp 에서
:
: extern const int aa;
:
: 라고 명시해주고..
:
: 사용하려고 하니 안되더군요
:
: const 로 선언한 변수는 저렇게 사용하는것이 불가능한것인지요?
:
:
|