预处理
#include #define 都属于预处理操作,两者都不是关键字
#include 包含头文件
#define 宏,是直接替换,不进行语法检查
#define 宏名 宏体 (一般为了保险起见,尽量加个括号)
#define ABC (5+3)
#define ABC(x) (5+(x)) (宏函数,参数x也尽量加个括号)
条件编译:根据开关量来控制哪些区域的代码编译与否
#ifdef
#else
#endif
预定义宏(系统宏)
__FUNCTION__:函数名
__LINE__:行号
__FILE__:文件名
使用gcc命令加-D参数时: gcc -DABC 相当于: #define ABC 预处理之前,通过编译器人为增加的宏名
宏展开下的#、##
#(字符串化)
##(连接符号)
#define ABC(x) #x
printf(ABC(abc\n)) ---> printf("abc\n")
#define ABC(x) day##x
printf("the day is %d\n", ABC(1)) ---> printf("the day is %d\n", day1)
链接
链接实际上就是把很多 .o文件融合连接在一起生成可执行程序
常见错误
预处理错误
#include "name" //在当前目录下寻找名字,自定义的头文件,#include "abc.h"
#include <name> //在系统的环境变量中寻找名字,系统库的
一般错误都会是:not find
解决方法:gcc -I跟查找头文件的目录 gcc -I./inc -o xxx xxx.c
也可以在:#include "name"处填写为:#include "./inc/abc.h"

浙公网安备 33010602011771号