- 论坛徽章:
- 0
|
10可用积分
通过 #ifndef来避免宏的重复定义,
case1, 不使用 #ifndef , 而重复定义宏, 在编译的时候并没有什么问题,而且这样也不会对结果有什么影响吧?
#define MAC
..................
#define MAC
case 2, 不使用 #ifndef, 重复定义宏, 后面覆盖前面, 这样保证了该程序的正确性,但是影响到后面用到宏的地方
,如果加了ifndef MAC, 那么保证了其他调用宏的正确性,但是本程序确使用了错误的宏, (通过#else prinf ("xxxxx"来提示错误?)
# define MAC 1
...........
# define MAC 2
所以,想请教,加 #ifndef .... 的作用到底是为了什么呢? 还是我在对其理解上有问题?
还请大家指教 |
最佳答案
查看完整内容
1. 多次包含的情况include xxx 就是将xxx的内容原地展开假设有:a.h, 内容是Ab.h, 内容是:#include "a.h"Bc.h, 内容是:#include "a.h"C如果有一个文件x.c, 内容是:#include "b.h"#include "c.h"Xb.h和c.h的内容就会被插入到X之前, 也就是这个样子:ABACXA的内容就出现了2次。在更复杂的环境中, A的内容还可能出现多次。2. 多次出现是有问题的一般来说, 重复声明没什么问题。所以, 如果A.h中止包含一些声明, 那重复了也 ...
|