#if에서 사용되는 정의되지 않은 상수의 값은 무엇입니까?
내 전처리 기는 #if
조건 을 평가하기 위해 정의되지 않은 상수가 0이라고 가정하는 것 같습니다 .
이것은 신뢰할 수 있습니까, 아니면 정의되지 않은 상수가 정의되지 않은 동작을 제공합니까?
예, 신뢰할 수 있습니다. C99 표준은 §6.10.1 ¶3에서 지정합니다.
매크로 확장 및 정의 된 단항 연산자로 인한 모든 대체가 수행 된 후 나머지 모든 식별자는 pp- 번호로 대체됩니다.
0
편집하다
죄송합니다. C 질문이라고 생각했습니다. 여전히 큰 문제는 아니지만 C ++ 표준 (§16.1 ¶4)의 동등한 섹션은 다음과 같이 말합니다.
매크로 인해 팽창 및 정의 단항 연산자 모두 교체가 나머지 모든 식별자와 키워드를 수행 한 후를 제외
true
하고false
, 보호 프로파일 번호로 대체0
유일한 차이점은 true
and 의 다른 처리입니다 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
'Programing' 카테고리의 다른 글
파일 또는 디렉토리가 변경 될 때 쉘 스크립트를 실행하는 방법은 무엇입니까? (0) | 2020.12.09 |
---|---|
필요한 HTTP 응답 헤더 (0) | 2020.12.09 |
웹 인터페이스를 통해 TeamCity 서버 다시 시작 (0) | 2020.12.09 |
Internet Explorer 용 양식 제출에서 문자 인코딩 설정 (0) | 2020.12.09 |
Swing JDialog에서 "X"버튼 제거 (0) | 2020.12.09 |