如何让GCC不再提示参数列表内结构体前置声明的警告?
解决方法
你需要在#pragma GCC diagnostic ignore后面填入"-Wunknown-type-name"——这是GCC专门针对未知类型名触发的警告选项,正好匹配你这里struct stat未定义时编译器抛出的警告。
完整代码如下:
#pragma GCC diagnostic push #pragma GCC diagnostic ignore "-Wunknown-type-name" int fstat(int handle, struct stat *statbuf); /* to get struct stat, #include <asm/stat.h> */ #pragma GCC diagnostic pop
补充说明
- 对于不需要使用
struct stat的大多数用户,编译器会忽略该类型未定义的警告,不影响头文件的正常使用; - 当有用户需要操作
struct stat时,只要在包含这个头文件前先引入<asm/stat.h>,就能正常访问结构体成员,不会出现编译错误。
内容的提问来源于stack exchange,提问作者Joshua
相关产品推荐
相关产品推荐

