2011-02-22 2 views

답변

56

예, 신뢰할 수 있습니다. C99 표준 §6.10.1 ¶3에서 지정 매크로 팽창 정의 단항 연산자에 의한 모든 교체가 수행 된 후

나머지 모든 식별자 프로파일 번호 0

로 대체

편집

죄송합니다, 나는 그것이 C의 문제라고 생각; 여전히 더 큰 문제는, C++ 표준 (§16.1 ¶4)에 해당하는 부분은 언급하지 : 때문에 매크로 확장 및 가, 나머지 모든 식별자와 키워드 수행 된 정의 단항 연산자로 모두 교체 후

, truefalse를 제외하고 PP-수 0

유일한 차이점은 C++에서 그들은 심지어 특별한 의미를 가지고있는 동안, 특별한 처리가 필요하지 않습니다 C에서 truefalse의 다른 처리입니다으로 대체됩니다 전처리 단계에서

12

매크로로 정의되지 않은 식별자는식이 계산되기 전에 0으로 변환됩니다.

예외는 true 인 식별자이며 1으로 변환됩니다. 이것은 C++ 전 처리기에만 해당됩니다. C에서 이것은 발생하지 않으며 true을이 방법으로 사용하려면 <stdbool.h>을 포함해야합니다.이 경우 매크로로 정의되며 특별한 처리가 필요하지 않습니다.

관련 문제