我在交流代码中有这些标题
#include <stdio.h>
#include <unistd.h>
Run Code Online (Sandbox Code Playgroud)
一切都编译得很好,直到我将-std = c99标志添加到gcc命令(启用限制).这引发了以下错误.
警告:隐式声明函数
fileno
错误:
F_LOCK
未声明(在此函数中首次使用)
错误:(每个未声明的标识符仅报告一次错误:对于它出现的每个函数.)
错误:F_ULOCK
未声明(在此函数中首次使用)
任何解决这些错误/警告的想法?
您需要告诉标题您想要POSIX扩展.这些天,我使用:
#if __STDC_VERSION__ >= 199901L
#define _XOPEN_SOURCE 600
#else
#define _XOPEN_SOURCE 500
#endif /* __STDC_VERSION__ */
Run Code Online (Sandbox Code Playgroud)
如果我正在编译-std=c89
,它会提供正确的POSIX版本; 如果你用-std=c89
它编译,它会给出正确的POSIX版本.我在Solaris 9和10,MacOS X(10.4.x,10.5.x),HP-UX 11.x,Linux(RHEL4和5,SuSE 9和10)以及AIX 5.x和6.x - AFAICR上使用它,到目前为止没有问题.
此节应该出现在包含任何系统头之前(在您自己的头文件中,或在每个源文件中),或者您需要-D_XOPEN_SOURCE=600
在编译器命令行或其他类似机制上实现相同的效果.
归档时间: |
|
查看次数: |
2550 次 |
最近记录: |