dprintf 隐式声明警告

dprintf implicit declaration warning

使用 dprintf() 时,我收到警告 "implicit declaration of dprintf"。这往往意味着没有包含必要的文件,但我已经包含了 stdio.h,这应该是它所需要的全部。 dprintf 还需要什么吗?

您可能需要设置一些宏。放在文件顶部,在任何 includes 以下

之前
#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");