使用dprintf()时,我会收到警告" dprintf"的隐式声明。这往往意味着不包含必要的文件,但我已经包含了stdio.h,它应该是它所需要的全部内容。还有其他dprintf需要的吗?
答案 0 :(得分:3)
手册页的“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是一般可移植性的最佳选择。)
答案 1 :(得分:2)
您可能需要设置一些宏。在任何include
以下
#define _POSIX_C_SOURCE 200809L
#define _GNU_SOURCE
(其中一个就够了,但我不知道你使用的GLibC版本)
答案 2 :(得分:0)
您可以查找fprintf()
here。
我遇到了同样的问题,因此我被迫在基于POSIX的机器上运行,我必须更改我的代码,因此fprintf()
是我可能有的许多选项之一。
例如:
fprintf(stderr,"file not found");