|
发表于 2018-2-25 04:23:39
|
显示全部楼层
#ifndef _MAIN_H
#define_MAIN_H
......
#endif
如果没有定义 _MAIN_H, 就定义 _MAIN_H, 并且包含插入......中的内容到当前文件中
如果已定义了 _MAIN_H, ......中的内容不会被包含插入到当前文件中
这种情况用于被其它多个.c/.h包含插入(#include)的基础定义文件
如文件 A.h
在B.h 中有#include A.h
在C.h 中也有#include A.h
在D.h 中也有#include A.h
那么如在文件X.c中有
#include A.h
#include B.h
#include C.h
#include D.h
如A.h中无以上定义, 编译器会把A.h 同样的内容至少4次插入到X.c中, 会引起错误
如A.h有以上声明, 在X.c中, A.h在被多个文件包含(#include)时, 包含(#include)A.h第一次时即定义_MAIN_H, 以后再包含(#include)A.h时, 因为已经定义了 _MAIN_H, 所以A.h不再重复插入. X.c中只会插入一次A.h
建义楼主打开全部Listing选项, 然后项目目录内会产生一些.lst/.i/.map/.txt文件, 看看这些文件或许会更好理解编译器工作原理
|
|