C语言学习(二)————编译和预处理过程

c语言编译过程

预处理

简单来说是替换
gcc -E -o outputFile InputFile --预处理

编译(编译成汇编文件)

.c — .s gcc -S .c
汇编(编译成对象文件 .o文件 包含各个函数的入口标记)
.s ---- .o gcc -c .s

链接(可执行文件 link)

gcc -o outputFile inputFile

预处理命令

include :包含头文件
define :宏定义

思考一:为什么define 和 include 不是c语言中的关键字?
关键字是在编译过程中会使用的 而define和include 会在预处理时就将其替换
成等价的语句 不会出现在编译的过程
define宏定义:预处理时 只进行替换 不进行语法的检查 (完全替换)
#else #ifndef #endif #ifdef:条件编译
#ifdef xxx   ====如果xxx定义了 就编译 里面包含在里头的代码
	代码
#else
预定义宏(这是系统定义的宏 跟编译有关 如gcc)
__FUNCTION__ :当前所在的函数的函数名(%s)
__LINE__: 输出行号(%d)
__FILE__:输出当前的文件名(%s)
宏定义展开的 #、##

#:代表将值字符串化 如:#define ABC(x) #x ----把x字符串化 ABC(x)== string(x)
##:连接符
如:MyDay1 MyDay2
#define Day(x) MyDay##x
Day(1)==MyDay1 Day(2)==MyDay2

宏定义常量(宏定义时宏名都要用大写字母 注意式子要加上括号)
一般宏定义的常量都是int常量

改变类型
如:#define VAR (99999*99999)L ----将int转化为long
UL:unsigned long
LL:long long

你可能感兴趣的:(学习记录,C语言基础)