C dprintf隐式声明警告
使用时,我得到警告“隐式声明dprintf”。这意味着没有包含必要的文件,但我已经包含了stdio.h,这应该是它所需要的全部。dprintf还需要什么吗?您可能需要设置一些宏。在文件顶部,在任何C dprintf隐式声明警告,c,warnings,implicit-declaration,C,Warnings,Implicit Declaration,使用时,我得到警告“隐式声明dprintf”。这意味着没有包含必要的文件,但我已经包含了stdio.h,这应该是它所需要的全部。dprintf还需要什么吗?您可能需要设置一些宏。在文件顶部,在任何之前包括以下内容 #define _POSIX_C_SOURCE 200809L #define _GNU_SOURCE (其中一个就足够了,但我不知道您使用的GLibC版本)您可能需要设置一些宏。在文件顶部,在任何之前包括以下内容 #define _POSIX_C_SOURCE 200809L
之前包括以下内容
#define _POSIX_C_SOURCE 200809L
#define _GNU_SOURCE
(其中一个就足够了,但我不知道您使用的GLibC版本)您可能需要设置一些宏。在文件顶部,在任何之前包括以下内容
#define _POSIX_C_SOURCE 200809L
#define _GNU_SOURCE
(其中一个就足够了,但我不知道您使用的GLibC版本)手册页的“功能测试宏”部分解释说,要使stdio.h声明dprintf(),您必须在包含之前先定义\u POSIX_C_SOURCE 200809L
(或更高版本)。原因是,直到POSIX.1-2008,dprintf()才被标准化,但是
需要继续使用在此之前编写的代码,即使该代码使用了自己的标识符“dprintf”。(定义_GNU_SOURCE或_XOPEN_SOURCE也可以在Linux上运行,但是_POSIX_C_SOURCE是通用可移植性的最佳选择。)手册页的“feature_test_macros”部分解释说,要使stdio.h声明dprintf(),必须先定义(u POSIX_C_C_SOURCE 200809L
#或更高版本),然后才能包含
。原因是,直到POSIX.1-2008,dprintf()才被标准化,但是
需要继续使用在此之前编写的代码,即使该代码使用了自己的标识符“dprintf”。(定义_GNU_SOURCE或_XOPEN_SOURCE也适用于Linux,但_POSIX_C_SOURCE是通用可移植性的最佳选择。)您可以查找fprintf()
我遇到了同样的问题,因此我被迫在基于POSIX的机器上运行,我必须更改我的代码,因此fprintf()
是我的众多选项之一。
例如:
fprintf(stderr,"file not found");
您可以查找fprintf()
我遇到了同样的问题,因此我被迫在基于POSIX的机器上运行,我必须更改我的代码,因此fprintf()
是我的众多选项之一。
例如:
fprintf(stderr,"file not found");
或#定义XOPEN\uSOURCE 700
。或者-std=gnu11
。除了@JonathanLeffler的注释外:-std=gnu11
是GCC不放在文件顶部的选项。或者\define\XOPEN\u SOURCE 700
。或者-std=gnu11
。除了@JonathanLeffler的注释外:-std=gnu11
是GCC不放在文件顶部的选项。