使用dprintf()时,我收到警告“dprintf 的隐式声明”。这往往意味着没有包含必要的文件,但我已经包含了 stdio.h,这应该是它所需要的全部。dprintf 还有其他需要吗?
问问题
1744 次
3 回答
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 是一般可移植性的最佳选择。)
于 2016-09-24T00:25:29.440 回答
2
您可能需要设置一些宏。放在文件顶部,在include
以下任何 s之前
#define _POSIX_C_SOURCE 200809L
#define _GNU_SOURCE
(其中一个就足够了,但我不知道您使用的 GLibC 版本)
于 2016-09-24T00:02:38.813 回答
0
fprintf()
你可以在这里查找。
我遇到了同样的问题,因此我被迫在基于 POSIX 的机器上运行,我必须更改我的代码,所以fprintf()
(可能是)我拥有的许多选项之一。例子 :
fprintf(stderr,"file not found");
于 2018-01-31T17:28:05.453 回答