dprintf()을 사용할 때 경고 메시지 "dprintf의 암시 적 선언"이 표시됩니다. 그것은 필요한 파일이 포함되지 않았 음을 의미하는 경향이 있지만, 필요한 모든 것으로되어있는 stdio.h가 이미 포함되어 있습니다. dprintf에 필요한 다른 것이 있습니까?dprintf 암시 적 선언 경고
1
A
답변
3
의은 "feature_test_macros"절을 man 페이지는 stdio.h가 dprintf()를 선언하도록하기 위해 #include <stdio.h>
전에 먼저 #define _POSIX_C_SOURCE 200809L
(이상)을 사용해야 함을 설명합니다. 그 이유는 POSIX.1-2008까지는 dprintf()가 표준화되지 않았지만 <stdio.h>
은 그 코드가 "dprintf"라는 자체 식별자를 사용 했더라도 그 전에 작성된 코드로 작업해야합니다. (_GNU_SOURCE를 정의 또는 _XOPEN_SOURCE 또한 리눅스에서 작동,하지만 _POSIX_C_SOURCE 일반 휴대 성을위한 최고의 선택입니다.)
2
일부 매크로를 설정해야 할 수도 있습니다. 어떤 include
의 전에 파일의 상단에 넣어
#define _POSIX_C_SOURCE 200809L
#define _GNU_SOURCE
(그 중 하나는 충분하다하지만 난 당신이 사용하는 GLIBC 버전 모르는) 다음
0
당신은 fprintf()
here을 위해 찾아 볼 수 있습니다.
동일한 문제가 발생하여 POSIX 기반 컴퓨터에서 실행해야하므로 내 코드가 변경되어야합니다. 따라서 fprintf()
은 여러 가지 옵션 중 하나입니다. 예 :
fprintf(stderr,"file not found");
또는'#define _XOPEN_SOURCE 700'. 또는'-std = gnu11'. –
@JonathanLeffler :'-std = gnu11'의 주석에 덧붙여 GCC가 파일의 맨 위에 놓이지 않는 옵션입니다. – deamentiaemundi