链接相关 & 预处理

链接

当多个文件同时被编译时,不同文件中的函数的使用,比如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 );

定义这种函数宏要格外小心,首先这种的参数不需要类型,另外要多用括号 ()

条件预处理

条件编译
另外判断式
原文地址:https://www.cnblogs.com/moveofgod/p/2727083.html