繁体   English   中英

dprintf隐式声明警告

[英]dprintf implicit declaration warning

使用dprintf()时 ,出现警告“ dprintf的隐式声明”。 这往往意味着没有包含必要的文件,但是我已经包含了stdio.h,应该是它所需要的。 dprintf还需要其他东西吗?

手册页的“ feature_test_macros”部分说明,要使stdio.h声明dprintf(),必须首先#define _POSIX_C_SOURCE 200809L (或更高版本),然后再#include <stdio.h> 原因是dprintf()直到POSIX.1-2008才被标准化,但是<stdio.h>需要继续使用之前编写的代码,即使该代码使用了自己的名为“ dprintf”的标识符也是如此。 (在Linux上也可以定义_GNU_SOURCE或_XOPEN_SOURCE,但是_POSIX_C_SOURCE是常规可移植性的最佳选择。)

您可能需要设置一些宏。 放在文件顶部,然后include以下内容

#define _POSIX_C_SOURCE  200809L
#define _GNU_SOURCE

(其中之一就足够了,但我不知道您使用的GLibC版本)

您可以在此处查找fprintf()

我遇到了同样的问题,因此我被迫在基于POSIX的计算机上运行,​​我必须更改代码,因此fprintf()是(可能是)许多选项之一。 例如:

fprintf(stderr,"file not found");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM