dprintf 隐式声明警告
dprintf implicit declaration warning
使用 dprintf() 时,我收到警告 "implicit declaration of dprintf"。这往往意味着没有包含必要的文件,但我已经包含了 stdio.h,这应该是它所需要的全部。 dprintf 还需要什么吗?
您可能需要设置一些宏。放在文件顶部,在任何 include
s 以下
之前
#define _POSIX_C_SOURCE 200809L
#define _GNU_SOURCE
(其中一个就足够了,但我不知道你使用的 GLibC 版本)
手册页的 "feature_test_macros" 部分解释说,要使 stdio.h 声明 dprintf(),您必须先 #define _POSIX_C_SOURCE 200809L
(或更高),然后再 #include <stdio.h>
。这样做的原因是 dprintf() 直到 POSIX.1-2008 才标准化,但是 <stdio.h>
需要继续使用之前编写的代码,即使该代码使用自己的标识符 "dprintf"。 (定义 _GNU_SOURCE 或 _XOPEN_SOURCE 也适用于 Linux,但 _POSIX_C_SOURCE 是一般可移植性的最佳选择。)
您可以查找 fprintf()
here.
我 运行 遇到了同样的问题,因此我被迫在基于 POSIX 的机器上 运行,我必须更改我的代码,所以 fprintf()
是其中之一(可能)我有很多选择。
示例:
fprintf(stderr,"file not found");
使用 dprintf() 时,我收到警告 "implicit declaration of dprintf"。这往往意味着没有包含必要的文件,但我已经包含了 stdio.h,这应该是它所需要的全部。 dprintf 还需要什么吗?
您可能需要设置一些宏。放在文件顶部,在任何 include
s 以下
#define _POSIX_C_SOURCE 200809L
#define _GNU_SOURCE
(其中一个就足够了,但我不知道你使用的 GLibC 版本)
手册页的 "feature_test_macros" 部分解释说,要使 stdio.h 声明 dprintf(),您必须先 #define _POSIX_C_SOURCE 200809L
(或更高),然后再 #include <stdio.h>
。这样做的原因是 dprintf() 直到 POSIX.1-2008 才标准化,但是 <stdio.h>
需要继续使用之前编写的代码,即使该代码使用自己的标识符 "dprintf"。 (定义 _GNU_SOURCE 或 _XOPEN_SOURCE 也适用于 Linux,但 _POSIX_C_SOURCE 是一般可移植性的最佳选择。)
您可以查找 fprintf()
here.
我 运行 遇到了同样的问题,因此我被迫在基于 POSIX 的机器上 运行,我必须更改我的代码,所以 fprintf()
是其中之一(可能)我有很多选择。
示例:
fprintf(stderr,"file not found");