编译和预处理相关知识点
2015-12-11 16:28
155 查看
编译和预处理相关知识点
GCC
本质:翻译官,把高级语言翻译成机器指令
常用选项:
gcc -o 输出文件名 输入文件名 gcc -o build 01.c (后缀不能为其他) gcc -v -o build 01.c gcc -l -o 用来指定程序要链接的库,-l参数紧接着就是库名 gcc -L -o -L参数跟着的是库文件所在的目录名 gcc -E -o gcc -S -o gcc -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
预定义宏 [b]FUNCTION LINE FILE[/b]
条件编译(开关) #ifdef #else #endif
提前定义一个宏:gcc -DABC 等价于#define ABC
宏展开下的#和##:
#define ABC(a) #a 字符串 #define DAY(a) myday##a 连接符号
相关文章推荐
- Android menu菜单介绍
- apktool常见错误
- (转)对《30个提高Web程序执行效率的好经验》的理解
- eclipse插件开发中全局对象的获取
- swift po 实现动态按钮2
- nancy中的诊断功能面板1
- 老李分享: JSON
- 测试开发技术:DOM中 innerHTML、innerText、outerHTML、outerText的区别
- DTS和PTS的解释(FFMPEG、HLS相关)
- iOS开发多线程篇—线程安全
- 10 Java基础 多线程2
- 关于Acitivity的启动模式和onNewIntent()
- 烂笔头—I2C中的从/子地址问题
- Java的几种对象(PO,VO,DAO,BO,POJO)解释
- DtCMS 在IIS7.0 下之伪静态
- php 生成验证码
- PAT乙级 部分A+B (15)
- Android Permissions - Protection Levels
- windows和Linux共享文件的几种方式
- JS动态调用方法名示例介绍