链接相关 & 预处理
链接
当多个文件同时被编译时,不同文件中的函数的使用,比如main中使用了其他文件的函数,那么这是有问题的。因为main不认识该函数
解决以上问题的办法有2个,
1) 用 extern 来声明别的文件中的函数或变量,而此时,如果多个文件需要该文件中的函数时,每个文件都要声明一次,这样不好。所以就引入第2种办法
2)使用头文件,然后在使用到得地方加入 #include “stack.h”这样的话,就解决了以上问题,使用头文件时要注意,Header Guard,就是要避免头文件被多次的预处理。具体办法是使用宏。。。看以下例子
Header Guard
这样做的目的是,防止同一个头文件被多次处理,如果是已经定义了STACK_H这个宏的话,那么该文件就会被看做是个空文件。至于动态链接(比如链接math.h) 这个是在本地链接之后。有的时候还需要指定链接的库才可以,详情参考gcc相关内容。
预处理
1。宏定义
变量宏 #define N 20 或 #define STR “hello, world”
函数宏 #define MAX(a, b) ( (a) > (b ) ? (a ) : (b ))
k = MAX( i, j );
定义这种函数宏要格外小心,首先这种的参数不需要类型,另外要多用括号 ()
条件预处理
条件编译
另外判断式