宏定义define的用途
普通的define大家肯定都会用,定义常量中的字符串、数值等等,
#define pai 3.141592653
#define name “abcdef”
也可以用来作程序的分支条件
#ifdef
....
#define
...
#endif
平常需要注意的问题就是如果定义中包含表达式的话,那么就需要用()来保证表达式的正确运算,以免优先级混乱
最近做工程的时候碰到一个问题,编写一个动态库时需要用到一个宏定义,但是又希望能在外部修改宏定义的值
左右思量,不太希望添加新的配置文件,于是就有了在编译选项中加入-DAAA=1000的想法,内部代码
#ifndef AAA
#define AAA 2000
#endif
从实用来看AAA是一个静态数组的大小,打印的时候大小也没有问题,但是在调用动态库的过程中,却出现内存紊乱。
纠结了好几天,也没有找到问题的所在,最终解决方法是在调用的程序中也必须加入-DAAA=1000。
具体的内存空间的分配原理还需要细细的分析。
另外附上如果想在调试过程中查看宏定义的值,可以加上编译条件 -gdwarf-2 -g3