1).#include 预处理命令
#include 命令有如下两种形式:
#include <filename>
#include "filename"
它们的差别在于查找欲包含文件的起始位置不同。
用引号括起来:预处理程序就会从待编译文件所在待编译目录里开始查找欲包含的文件,这种方法通常用于包含程序员定义的头文件。
用<>:用于标准函数库的头文件,预处理程序就会按照一种依赖于系统实现的方式,通常是在预先指定的编译器和系统目录中进行查找。
2).条件编译
条件编译使用户能够控制预处理命令的执行以及对程序代码的编译。每一个条件预处理命令都要计算一个整型常量表达式的值。但是类型强转表达式、sizeof表达式及枚举常量的值不能再预处理命令中计算。
如下代码:
#if !defined(MY_CONSTANT)
#define MY_CONSTANT 0
#endif
首先判断MY_CONSTANT是否被定义了。如果定义了,则表达式defined(MY_CONSTANT)的值为1,否则为0.如果该表达式的值为0,则!defined(MY_CONSTANT)的值久为1,于是就定义MY_CONSTANT,否则#define预处理命令就被略过。
每个#if结构都以#endif来结束。预处理命令#ifdef和#ifndef是#if defined(name)和#if !defined(name)的缩写形式。对于多分枝的条件预处理结构,需使用命令#elif(等价于if语句中的else if)和#else(等价于if语句中的else)来测试。
3).#error和#pragma预处理命令
#error tokens的功能是:打印出包含命令中指定tokens(标记)的信息,信息的具体内容与系统的实现有关。标记是用空格分割的一个字

本文详细介绍了C语言预处理的一些关键概念,包括#include命令的不同形式,条件编译的使用,如#define、ifdef、ifndef等结构,以及#error和#pragma指令的作用。此外,还讲解了#和##运算符的功能,输入输出重定向,以及全局变量和static关键字在多源文件程序中的应用。
最低0.47元/天 解锁文章
961

被折叠的 条评论
为什么被折叠?



