sizeof는 컴파일 타임에 정수 상수로 평가되는 연산자라는 것을 알고 있습니다.전처리 조건에서 sizeof를 사용할 수없는 이유는 무엇입니까?
이#if 4 == sizeof(int)
typedef int Int32;
#endif
왜 이러한 사용되지 않습니다 (Cygwin에서-GCC 3.4.4뿐만 아니라 비주얼 C++ 6.0 보고서가 오류를 컴파일) : 그러나이 같은의 #if 전처리 지시어에 사용할 수없는 것 허용 되었습니까? sizeof
는 지시가 전에 컴파일, 그 컴파일러하지 않는 부분을 평가하는 동안 컴파일 시간에 평가되는, 그래서 어떤 sizeof
수단 이해하지 못할
실제로 전처리는 컴파일 중 발생하며 이전 단계 중 하나에서만 발생합니다. 'sizeof' 평가는 나중 단계에서 발생합니다. – sbi
@sbi 전처리는 컴파일의 일부가 아닙니다. 컴파일러는 일반적으로 실제 컴파일 전에 선행 처리기를 실행하지만 컴파일러에서 그렇게하지 않도록 지시 할 수 있습니다. RichN의 대답은 100 % 정확합니다. – qrdl
음, 틀 렸지만 전문 용어로만 : 번역의 단계 중 하나입니다. 이 http://stackoverflow.com/questions/1476892/1479972#1479972에 따르면 "컴파일"이라는 단계가 없으므로 해석의 의미가있는 것 같습니다. – sbi