mkstemp 函数的隐式声明
Posted
技术标签:
【中文标题】mkstemp 函数的隐式声明【英文标题】:mkstemp implicit declaration of function 【发布时间】:2014-07-15 12:19:05 【问题描述】:我对函数mkstemp()
有疑问。 cygwin
上的 GCC 编译器生成警告:
implicit declaration of function ‘mkstemp‘
GCC 标志:-std=c99 -Wall
包括:
#include </usr/include/stdlib.h>
#include </usr/include/unistd.h>
【问题讨论】:
来自手册页:#include在我的cygwin
stdlib.h
中,mkstemp
声明像这样受到保护:
#ifndef __STRICT_ANSI__
#ifndef _REENT_ONLY
int _EXFUN(mkstemp,(char *));
#endif
好像mkstemp
不是ANSI C
。确保您没有将编译器设置为强制执行特定标准(放弃c99
)并且不要使用-ansi/-pedantic
标志。
另外...在您的#include
s 中删除/usr/include/
部分。编译器会为您处理这些。
【讨论】:
我想强制执行标准 c99,因为“'for' 循环初始声明只允许在 C99 模式下” 您可以使用-std=gnu99
代替(但要注意:这会导致编译器中出现一些不符合要求的行为,包括某些浮点损坏)或 -U__STRICT_ANSI__
在保留 C99 的同时省略 __STRICT_ANSI__
宏功能。以上是关于mkstemp 函数的隐式声明的主要内容,如果未能解决你的问题,请参考以下文章