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

最佳答案

手册页的“feature_test_macros”部分说明,要使stdio.h declare dprintf(),必须先#define _POSIX_C_SOURCE 200809L(或更高)再#include <stdio.h>。原因是dprintf()直到POSIX.1-2008才被标准化,但是<stdio.h>需要继续使用在此之前编写的代码,即使该代码使用了自己的名为“dprintf”的标识符。(定义GNU-SOURCE或XOPEN-SOURCE也适用于Linux,但是POSIX-C-u-SOURCE是通用可移植性的最佳选择。)

关于c - dprintf隐式声明警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39671090/

10-12 05:53