8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
GNU编译器
1、支持众多编程语言、平台
2、构建过程(C代码是如何变成可执行文件的)。
第一步,预处理. 这一步处理 头文件、条件编译指令和宏定义。
第二步,编译. 将第一步产生的文件连同其他源文件一起编译成汇编代码。
第三步,汇编。将第二步产生的汇编源码转换为 object file.
第四步,链接. 将第三步产生的一些object file 链接成一个可执行的文件。
预处理:把程序员所编译的C代码翻译成标准的C代码
汇编:把预处理后的C代码翻译成汇编代码
编译:把会标代码翻译成二进制指令
链接:把若干个目标文件合并成一个可执行文件
3、gcc -v 查看版本
4、文件后缀
.h 头文件
.gch 头文件的编译结果,一般不要保留。
.c 源文件
.i 预处理文件
.s 汇编文件
.o 目标文件
.a 静态库文件
.so 共享库文件
5、参数
-E 预处理
-S 汇编
-c 编译(只生成目标文件)
-o 指定编译结果的名字
-Wall 产生尽可能多的警告
-Werror 把警告当作错误处理
-x 指定编译的语言
-g 生成调试信息
-On 优化等级
-D 编译时定义宏
-l 链接里加库
-I 指定头文件的查找路径,配置环境变量
1、打开 vim ~/.bashrc
2、在文件末尾,添加一行 export C_INCLUDE_PATH=$C_INCLUDE_PATH:NEW_PATH
3、重新加载配置文件 source ~/.bashrc
注意:如果要删除环境变量需要在~/.bashrc文件中删除环境变量后,退出终端重新打开。
考题1:#include <> / #include "" 区别?
考题2:头文件中可以编写哪些内容?
考题3:头文件的作用?
1、说明对应的.c文件的内容有哪些(声明函数、全局变量)。
2、定义结构、联合、枚举、宏
3、类型重定义
虽然函数可以隐式声明,但并不一定准确,而且非常有可能造成严重错误。
6、预处理指令
#include 文件包含,区别""和<>的区别
#define 定义宏常量或宏函数
# 把标识符转换成字符串
## 合并标识符
#undef 删除宏
#line 指定当前行的行号
#if 条件编译
#ifndef 常用于头文件卫士
#ifdef
#elif
#endif
#error 在编译期间产生错误
#warning 在编译期间产生警告
#pragma
#pragma GCC dependency "文件" 用于监控文件,防止所依赖的文件,修改后而不知道
#pragma GCC poison 标识符 用于禁用某些标识符
#pragma pack(n) 设置结构、联合的补齐和对齐字节数
n的值必须比默认的要小
对齐边界必须是2的较小次方
思考:
头文件的作用是什么?
编译时头文件找不到怎么办?