Programing

#if에서 사용되는 정의되지 않은 상수의 값은 무엇입니까?

lottogame 2020. 12. 9. 07:40
반응형

#if에서 사용되는 정의되지 않은 상수의 값은 무엇입니까?


내 전처리 기는 #if조건 을 평가하기 위해 정의되지 않은 상수가 0이라고 가정하는 것 같습니다 .

이것은 신뢰할 수 있습니까, 아니면 정의되지 않은 상수가 정의되지 않은 동작을 제공합니까?


예, 신뢰할 수 있습니다. C99 표준은 §6.10.1 ¶3에서 지정합니다.

매크로 확장 및 정의 된 단항 연산자로 인한 모든 대체가 수행 된 후 나머지 모든 식별자는 pp- 번호로 대체됩니다. 0

편집하다

죄송합니다. C 질문이라고 생각했습니다. 여전히 큰 문제는 아니지만 C ++ 표준 (§16.1 ¶4)의 동등한 섹션은 다음과 같이 말합니다.

매크로 인해 팽창 및 정의 단항 연산자 모두 교체가 나머지 모든 식별자와 키워드를 수행 한 후를 제외 true하고 false, 보호 프로파일 번호로 대체0

유일한 차이점은 trueand 의 다른 처리입니다 false. C에서는 특별한 처리가 필요하지 않지만 C ++에서는 전처리 단계에서도 특별한 의미가 있습니다.


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

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

참고 URL : https://stackoverflow.com/questions/5085392/what-is-the-value-of-an-undefined-constant-used-in-if

반응형