2014-06-20 6 views
1

보통 나는 그렇게처럼 쓰기 :일부 경비원은 정의 된 가치가 있습니까? 경비를 포함 사용할 때

#ifndef FILENAME_H 
#define FILENAME_H 

... 

#endif // FILENAME_H 

이제 어떤 librarys에서 내가 본 무엇인가 :

#ifndef FILENAME_H 
#define FILENAME_H 1 

... 

#endif // FILENAME_H 

나는에 관해서는 어떤 이유를 찾지 못했습니다 일부 조직 reserach 후 include-gurad가 초기화되어야하는 이유는 무엇입니까?

이 작업을 수행 할 이유가 있습니까?

답변

1

필자는 그러한 컴파일러를 본 적이 없지만 "비어있는"정의는 정의되지 않은 것으로 간주 될 수 있다고 들었습니다. 나는 어떤 컴파일러가 그렇게 행동하는지 매우 흥미가있다.

에도 C89 주 : 폼

정의 식별자 3.8.1 조건부 포함 제약

조건이 포함 적분 상수 표현한다 제어 식 [...]

정의 (식별자)

식별자가 현재 매크로 이름으로 정의되어 있으면 1로 평가됩니다 (즉, 사전 정의되었거나 #define 전처리 지시문의 주체 식별자가 동일한 #undef 지시어가없는 경우), 그렇지 않으면 0입니다.

+0

슬프게도 내가 본 것을 기억하지 못한다. 아마 수학 함수를위한 라이브러리 일 것이다. 그것은 리눅스 밑에 있었다. – Ragas