一种预编译容易出错的地方:
2016-03-15 13:58
225 查看
经常见到这样的一段程序:
1 /* file of aa.h*/
#ifdef XXX_MODULE_GLOBALS
#define XXX_EXT
#else
#define XXX_EXT extern
#endif
XXX_EXT unsigned char VAL1, VAL2......
// end of file of aa.h
2/* file of aa.c*/
#define XXX_MODULE_GLOBALS
#include aa.h
VAL1=...
VAL2=...
3/* file of bb.c.......*/
#include aa.h
VAL1=...
VAL2=...
总结:如果步骤二中
#define XXX_MODULE_GLOBALS
#include aa.h
这两句的顺序不是这样的而是:
#include aa.h
#define XXX_MODULE_GLOBALS
编译器就会报错:变量未定义,所以一定要注意顺序。
1 /* file of aa.h*/
#ifdef XXX_MODULE_GLOBALS
#define XXX_EXT
#else
#define XXX_EXT extern
#endif
XXX_EXT unsigned char VAL1, VAL2......
// end of file of aa.h
2/* file of aa.c*/
#define XXX_MODULE_GLOBALS
#include aa.h
VAL1=...
VAL2=...
3/* file of bb.c.......*/
#include aa.h
VAL1=...
VAL2=...
总结:如果步骤二中
#define XXX_MODULE_GLOBALS
#include aa.h
这两句的顺序不是这样的而是:
#include aa.h
#define XXX_MODULE_GLOBALS
编译器就会报错:变量未定义,所以一定要注意顺序。
相关文章推荐
- HDU 1503 带回朔路径的最长公共子串
- 汇总Linux命令 --查看语言,安装包
- app性能测试
- 四则运算:我的设计和设想(未完成版)
- SQLServer replication 复制常见错误及其处理方法
- SpringMVC之context-dispatcher.xml,了解基本的控制器
- (4.5.1.2)Open an existing Android Studio project和Import Non-Android Studio project图解
- android ImageView实现上面圆角下面直角(自定义view实现)
- SpringMVC的三个XML(web.xml、application-context.xml、context-dispatcher.xml)
- Linux shell用法和技巧(转)
- Protected vs protected internal (Again) in c#
- UILabel各种属性设置
- Alarm(硬件时钟) init
- 四则运算:我的设计和设想(未完成版)
- CentOS 安装nexus并设置为系统服务
- eclipse中文乱码
- HDU 5642 数位DP
- zabbix_agent相关
- 【Boost】boost库asio详解10——服务器端口复用
- 使用JSONP解决Ajax跨域访问问题