max*_*986 2 linux include-guards gcc-warning
我需要围绕标准系统调用的一组包装器 - 打开,监听等.对于这些我有一些"#define",如:
#define open(a,b,c) JCL_Open(a,b,c)
Run Code Online (Sandbox Code Playgroud)
但是当我编译头文件和相关的.c文件时,我收到以下警告:
/jcl_wrappers.h:114:1:警告:"打开"重新定义
/jcl_wrappers.h:113:1:警告:这是前一个定义的位置
我怎么能抑制这些警告?
认沽包括守卫在你的头文件.
基本上你需要将这两行放在头文件的开头
#ifndef _yourincludefilename_h_
#define _yourincludefilename_h_
Run Code Online (Sandbox Code Playgroud)
和
#endif /* _yourincludefilename_h_ */
Run Code Online (Sandbox Code Playgroud)
在你的最后包括文件.
编辑:
rascher是对的,open不是宏的好名字,因为它会与库函数冲突.通常,使宏全部为大写是很好的C约定,所以我建议将宏更改为
#define OPEN(a,b,c) JCL_Open(a,b,c)
Run Code Online (Sandbox Code Playgroud)
甚至更好
#define XYZ_OPEN(a,b,c) JCL_Open(a,b,c)
Run Code Online (Sandbox Code Playgroud)
其中XYZ是特定于您的代码的前缀.
保留标准功能并重命名该功能:
#define myopen(a,b,c) JCL_Open(a,b,c)
Run Code Online (Sandbox Code Playgroud)
有人会后来感谢你.
| 归档时间: |
|
| 查看次数: |
16548 次 |
| 最近记录: |