gcc가 제공 한 헤더 stddef.h를 읽을 때 실수가있을 수 있음을 발견했습니다. 처음에는 실수라고 생각합니다. 그러나 gcc (3.4.5, 4,4,3 및 4,6,3) 세 가지 버전의 stddef.h 헤더를 읽은 후에는 그 점이 동일하다는 것을 알았으므로 확실하지 않습니다. 아마 내가 틀렸어.헤더의 가능한 실수 stddef.h
#if (!defined(_STDDEF_H) && !defined(_STDDEF_H_) && !defined(_ANSI_STDDEF_H) \
&& !defined(__STDDEF_H__)) \
|| defined(__need_wchar_t) || defined(__need_size_t) \
|| defined(__need_ptrdiff_t) || defined(__need_NULL) \
|| defined(__need_wint_t)
위의 코드는 stddef.h와의 시작입니다. 다음은 stddef.h의 끝입니다. 한 쌍이 있습니다. 단어가
|| __need_XXX was not defined before */
을 삭제할 수 "없습니다"해야 :
#endif /* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
|| __need_XXX was not defined before */
나는 라인에 실수가 있다고 생각하십니까?
실수는 있지만 실수가 발견되지 않고 변경된 이유는 무엇입니까?
답장을 보내 주셔서 감사합니다. "용어가 추가되기 전에 헤더 파일을 식별하는 정의 된 기호 세트보다 나중에 추가 된 것 같습니다." 자세히 설명해 주시겠습니까? – junwanghe
내가 그 옛날에 조건이 &&! 정의 &&! 정의 (_STDDEF_H) (_STDDEF_H_) (_ANSI_STDDEF_H) 정의'의 #if를! 읽는 가정하고있어 &&! 정의 (__ STDDEF_H __)'다음'__need_XXX' 옵션이 추가되었습니다, 원 상태를 중심으로 괄호가 필요하고 추가 조건을 요구하는 경우. '__need_XXX' 조건을 생략하면, 닫은 구는 의미가 있습니다.파일에 진입 할 때 조건이 충족되지 않았습니다. 나중에,'__need_XXX' 용어가 추가되었지만, 주석의 문구가 문법적으로 정확하도록 완전히 조정되지 않았습니다. –