Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C dprintf隐式声明警告_C_Warnings_Implicit Declaration - Fatal编程技术网

C 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

使用时,我得到警告“隐式声明dprintf”。这意味着没有包含必要的文件,但我已经包含了stdio.h,这应该是它所需要的全部。dprintf还需要什么吗?

您可能需要设置一些宏。在文件顶部,在任何
之前包括以下内容

#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不放在文件顶部的选项。