摘要:
条件编译的基本概念: 条件编译就是利用预处理器的功能来对代码进行一些删除操作。 程序示例: 运行结果如下: 单步编译的结果如下: 条件编译的本质: 通过命令行定义宏: 程序与运行结果如下: 如果我们判断一个宏标识符是否存在,需要使用#ifdef指令。示例如下: 执行单步编译: 中间结果如下: #in 阅读全文
posted @ 2018-08-26 12:09
周伯通789
阅读(165)
评论(0)
推荐(0)
摘要:
C语言中的宏定义: 定义宏常量: 就宏定义来说,这是正确的,预处理器可以编译过。 但是就真正的编译来说,这是错误的,真正的编译会有语法错误。 示例程序: 执行预处理,gcc -E test.c -o test.i,预处理器处理之后结果如下: 预处理器进行直接的文本替换,是不会进行语法检查的。第4行最 阅读全文
posted @ 2018-08-26 11:09
周伯通789
阅读(329)
评论(0)
推荐(0)
摘要:
工程中的每个C语言源文件被编译后产生目标文件,这些目标文件如何生成最终的可执行程序呢? 链接器: 静态链接: 静态链接就是将库文件或者目标文件直接加入到可执行文件当中。 Linux下静态库的创建和使用: 静态库示例程序:20-1.c slib.c 将slib.c制作成静态库: 先将slib.c编译成 阅读全文
posted @ 2018-08-26 10:30
周伯通789
阅读(198)
评论(0)
推荐(0)
摘要:
初识编译器: 预编译: 示例程序: 源文件: 头文件: 执行预编译命令: 得到的中间文件如下: 预处理过后,注释被删掉了,7和9行的全局变量也直接被复制过来了,1-6行为需要传递给后续编译器的信息。我们在c文件中定义的宏也被展开了。 预编译其处理之后就该执行真正的编译了。 编译: 编译过程主要对源程 阅读全文
posted @ 2018-08-26 09:59
周伯通789
阅读(185)
评论(0)
推荐(0)
摘要:
三目运算符: 在C语言中,三目运算符不能当左值使用。因为三目运算符最终返回的是一个值并不是一个变量。三目运算符作为左值时,相当于2 = 3,这种赋值,编译器当然会报错。 既然三目元算符返回的是一个值,那么有没有办法将它当做左值又不报错呢? 解决方案就是返回变量的地址。 第13行返回变量的地址。 运算 阅读全文
posted @ 2018-08-26 08:44
周伯通789
阅读(589)
评论(0)
推荐(0)
浙公网安备 33010602011771号