条件编译

在设计头文件时,应使其可以多次包含在同一个源文件中。我们必须保证多次包含同一个头文件不会引起该头文件定义的类和对象被多次定义。使得头文件安全的通用做法是使用预处理器定义的条件编译。


预处理器允许我们自定义变量,为了避免名字冲突,预处理器经常用全大写字母表示。预处理器变量有两种状态:已定义和未定义。#define命令接受一个名字并将其定义为预处理器变量。#ifndef命令检测指定的预处理器变量是否未定义。格式如下:

1 #ifndef 标识符
2 #define X Y
3 程序段1
4 #else
5 程序段2
6 #endif


上述方法也可以用条件语句来实现。但是用条件语句将会对整个源程序进行编译,生成的目标代码很长。而使用上述方法,则根据条件只编译其中的程序段1或程序段2,生成的目标程序较短。


最佳实践头文件应该含有条件编译。如果头文件被多次包含,它可以避免难以理解的编译错误。

你可能感兴趣的:(预处理器)