编译和预处理相关知识点

来源:互联网 发布:域名 绑定公网ip 编辑:程序博客网 时间:2024/06/05 02:46

编译和预处理相关知识点

GCC

本质:翻译官,把高级语言翻译成机器指令

常用选项:

gcc -o 输出文件名 输入文件名gcc -o build 01.c (后缀不能为其他)gcc -v -o build 01.cgcc -l -o  用来指定程序要链接的库,-l参数紧接着就是库名gcc -L -o   -L参数跟着的是库文件所在的目录名gcc -E -ogcc -S -ogcc -c -o

编译过程

第一步:编译 gcc -S -o a.s 01.c
第二步:汇编 gcc -c -o a.o a.s
第三步:链接 gcc -o build 01.c

预处理

gcc -E -o a.i 01.c生成a.i

常见错误

(1)预处理错误:找不到,未定义
解决方案:gcc -I ./dir -o build 01.c
(2)编译错误:语法错误
(3)链接错误:原材料不够(函数未实现)或者原材料多了(多次实现)
解决方案:寻找标签是否实现或者只保留一个实现

预处理使用

define 宏替换不进行语法检查
include
预定义宏 FUNCTION LINE FILE
条件编译(开关) #ifdef #else #endif
提前定义一个宏:gcc -DABC 等价于#define ABC
宏展开下的#和##:
#define ABC(a)   #a      字符串#define DAY(a)    myday##a     连接符号
0 0
原创粉丝点击