导航:
1. gcc编译
2. 预处理
—–>x<————->x<—————>x<—————>x<————->x<—–
1. gcc编译
— 1.0 预处理 gcc -E [.c –> .i ] 展开宏定义. — 1.1 编译 gcc -S [ .c –> .s ] — 1.2 汇编 gcc -c [ .s –> .o ] — 1.3 链接 gcc -o [*.o –> bin] 链接了系统库. — 1.4 手动链接库文件 -I 比如我拿到了一个私库,没有提供源码只提供了一些接口.那么在使用后编译的时候 需要手动导入,就是库的使用. -I路径. 在后文,我们自己会生成库文件,静态库和动态库,这个很基础,一定要学好. — 1.5 预处理开关 gcc -Dxxx 打开预处理的选项.!! 2.预处理 2.1 #include #include “” 和 #include <> 的区别. <>只寻找系统库.不寻找用户头文件. 2.2 #define (1) 替换: #define 宏名 宏体 在替换过程中不进行语法检查,所以宏体运算尽量加().
比如: #define A 3+2 a = 4*A –> 4*3+2 xx #define A (3+2) (2) 宏函数 #define ABC(x) (5+x) 2.3 #ifdef #ifndef #else #endif (1) 条件预处理 应用:调试版本和发行版本的切换
(2) # 和 ##
define ABC(x) #x 实际上是转换成”x” 字符串 define ABC(x) day##x –>dayx 就是一个连接符,把day当前前缀再展开.define:
int main()
{
#ifdef ABC
printf("我是调试信息\n");
#endif
printf("我是正常信息\n");
return ;
}