GCC – GNU C Compiler
GCC – GNU C Collection(如今)
GNU是一个组织 gcc是编译器,将人类语言翻译为机器语言
使用
gcc -o output
gcc -o 输出文件名 输入文件名
-v 显示过程
//在编译时define,相当于文件内define
gcc -DABC1 ==> #define ABC1
编译过程
预处理(gcc -E) 把define,include替换出来
- 输入c
- 输出i文件
编译cc1 (gcc -S)
- 输入c/i
- 输出s文件
汇编as (gcc -c)
- 输入s
- 输出o文件
链接collect2(gcc -o)
- 输入o与库o
- 输出最终程序
define 和 include 不是关键字,因为他们在预处理阶段就被替换了,而关键字是在编译环境中被处理的。
错误
预处理错误
找不到库
#include "" //当前目录下找
#include <> //环境变量找
-I 找找不见的库,指定一个目录去找 gcc -I -o …..
语法错误
- 分号
- 括号
- …
链接错误
函数声明未定义或者函数多定义
预处理器使用
- #include–>包含一个源代码文件
- #define 宏名 宏体–>不进行语法检查
- /#undef 取消已定义宏
- #ifdef \ifndef #else #endif
- 程序维护时,做开关
- 日志开关
- 预定义宏(直接用,可以快速定位)
- _FUNCTION_-函数名称
- _FILE_-函数所在文件
- _LINE_-函数行
- #error 停止编译并显示错误信息
#与##
# 字符串化 ## 连接符号
#define ABC(x) #x
#define ABCD(x) myday##x
ABC(1) == 1
ABCD(1) == myday1