2011-09-05 2 views

답변

1

, basename, strerror_r 같은 일을 생각하고 당신에게 XPG/POSIX 정의를 제공합니다. _BSD_SOURCE 또는 _SVID_SOURCE 중 하나가 정의되어있는 경우

MAP_ANONYMOUS는 GNU 확장 (_GNU_SOURCE) 아니다, 그것은 정의입니다.

+1

POSIX에는 없지만 보편적으로 존재하며 많은 프로그램을 작성하는 데 정말로 필요한 것들이 있습니다 ('MAP_ANONYMOUS'가 가장 좋은 예입니다). 그러나'_GNU_SOURCE'를 추가하면 GNU 사람들 (또는 Ulrich Drepper)이 표준보다 낫다고 결정하기 때문에 모든 종류의 함수가 중단 될 수 있음을 의미합니다. 아마도 중요한 모든 것을 얻을 수있는'_BSD_SOURCE'와 같은 다른 매크로가있을 것입니다. .. –

+1

@R : 네,'_GNU_SOURCE'는 gcc의 기본 호출에 포함되지 않고'__USE_GNU'에 의해 보호되는 것들에만 필요합니다 - gcc의 기본 호출은'_BSD_SOURCE', _SVID_SOURCE','_POSIX_SOURCE','_POSIX_C_SOURCE = 200112L' 등이 있습니다. – caf

+0

문제는 이식 가능한 프로그램이 "대부분 POSIX와 일부 추가 기능"인 기본 환경에 크게 의존 할 수 없다는 것입니다. 어떤 시스템에서는 디폴트가 끔찍하게 부적합하고'-D_POSIX_C_SOURCE = ... '가 실제로 필요하다. 또한 POSIX 2008/XOPEN 7을 원한다면 어떤 이유로 든 기본값에 있지 않습니다. –

관련 문제