>  기사  >  백엔드 개발  >  정의되지 않은 상수는 C 및 C의 #if 조건에서 0으로 평가됩니까?

정의되지 않은 상수는 C 및 C의 #if 조건에서 0으로 평가됩니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-15 12:43:02481검색

Do Undefined Constants Evaluate to 0 in #if Conditions in C and C  ?

C 및 C의 정의되지 않은 상수 및 #if 조건 평가

전처리기 논리에서는 매크로와 상수가 중요한 역할을 하는 경우가 많습니다. #if 조건에서 정의되지 않은 상수를 처리할 때 한 가지 일반적인 시나리오가 발생합니다. 여기에서는 이러한 정의되지 않은 상수의 예측 가능한 동작에 의존하는 것이 유효한지 여부를 살펴보겠습니다.

문제:

개발자는 종종 정의되지 않은 상수가 다음과 같은 값을 취한다고 가정합니다. #if 평가에 사용되는 경우 0입니다. 이 가정을 신뢰할 수 있습니까, 아니면 정의되지 않은 상수에서 정의되지 않은 동작을 예상해야 합니까?

답변:

예, 이 가정을 신뢰할 수 있습니다. C99 표준은 §6.10.1 ¶3에서 다음과 같이 명확하게 지정합니다.

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

마찬가지로 C 표준(§16.1 ¶4)에서는 다음과 같이 규정합니다.

매크로 확장 및 정의된 단항 연산자로 인한 모든 대체가 수행된 후 true 및 false를 제외한 나머지 모든 식별자와 키워드는 다음과 같습니다. pp-번호 0으로 대체됩니다

즉, 매크로 확장 및 기타 전처리 단계 후에 #if 조건에 나타나는 정의되지 않은 식별자 또는 상수가 자동으로 값 0으로 대체됩니다. 이 동작은 전체에서 일관됩니다. C 및 C.

이러한 예측 가능한 동작을 통해 개발자는 정의되지 않은 결과나 오류의 위험 없이 #if 조건에서 정의되지 않은 상수를 플래그나 자리 표시자로 편리하게 사용할 수 있습니다. 전처리 단계 이전에 정의되지 않은 상수가 정의되지 않은 경우 컴파일러는 기본적으로 이를 0으로 처리합니다.

위 내용은 정의되지 않은 상수는 C 및 C의 #if 조건에서 0으로 평가됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.