c语言的预处理/条件编译( 二 )

【c语言的预处理/条件编译】#if 常量表达式
Statements;
#elif 常量表达式
Statements;

#elif 常量表达式
Statements;
#else
Statements;
#endif
预处理器从第一条依次判断常量表达式的真假(0为假),

  • 从前往后当一个为真时,就编译该分支的语句,忽略之后的所有 分支的语句,当所有的常量表达式均为假,才编译“#else”分支的语句 。
  • 注意:这里的常量表达式,一般用是一个用#define 声明的常量,不要错误使用全局变量,或是const 修饰的只读变量 。
9.文件包含
  • a.你编写被包含文件(.h)时,在文件头部加上:
#ifndef _FILENAME_H
#define _FILENAME_H
XXXX(其他语句)
#endif
来防止重复包含
  • b.包含文件时的写法分两种:
  • #incldue <FileName.h>
  • 使用尖括号的,这是指包含的文件时自带的库函数头文件
  • #include“FileName.h”
  • 使用双引号的,这是包含用户自己编写的头文件
  • 这两种的区别就是编译器搜索文件的方式不同 。
在结束的时候,还是再说一下学习过程中的感想,预编译这块很容易被我们忽视,初学起来感觉难度并没有很大,但是这里可以深究的地方还是很多的,多看一看这方面的例子,或者稍复杂些的宏定义,就会有很容易掉坑里的感觉,而且这里出现的Bug是很不容易被发现的 。在程序编写时,恰当的使用宏和条件编译会让程序的结构得到优化,在uboot中大规模的使用宏定义条件编译相关的语句来实现配置选择和功能的选择,所以说这部分的知识很重要,需要取细细研究 。争取做到准确,熟练,快速的看懂,看的对宏的意图!




推荐阅读