gcc -o o是output的意思,-v是打印详细信息
在linux系统中return 0;0代表成功,其他都代表不成功
gcc根据文件名的后缀调用不同的翻译模块,翻译为机器码
gcc -c 直接由a.c到a.o,不用a.s再到a.o
gcc -o 包括编译 链接
gcc -E 预处理
预处理:处理include define的内容,处理过后.i文件中已经没有include define了,
后面紧跟着是编译(-S)、汇编(-c)、链接(-o)
所以include define不是关键字
#include "":""会先在当前目录下找包含文件,然后再去系统中找
gcc -I 查找头文件的目录
#define 宏替换,不进行语法检查,宏体习惯加括号,防止意外错误
#define ABC(x) (5+(x)) 一般宏名大写
__FUNCTION__ __FILE__ __LINE通常用来调试
条件编译:gcc -DABC1 ===#define ABC1
宏体中的#是字符串化,eg:#define ABC(x) #x ,如果是ABC(a),则会成为‘a’,a会成为字符串
宏体中的##是连接,eg:#define ABC(x) day##x,如果是ABC(a),则会成为dayx,day是前缀
sizeof是关键字,严格来说,eg:printf("%lu",sizeof(a));sizeof是编译器给我们查看变量内存容量的工具
sizeof不区分环境,他不是函数,所以在裸机和linux系统编程中都可以使用
sizeof 的值由编译器决定,不同的编译器sizeof的值不同
c语言操作的是内存(包括内存、显存等各类资源)
char类型是1个字节,8bit,最大值是255,char a = 300,这就不对了