23.4 #define和#undef指令

这两条指令主要用于定义和撤销编译符号。那么究竟什么是编译符号呢?简单来说,编译符号具有如下几个特点:

❑它是一个标识符;

❑它不能为true和false;

❑它有且仅有两种状态:已定义和未定义;

❑它不能被赋值。

可以使用如下语法定义或取消定义编译符号:


define DEBUG

define SPECIAL

undef DEBUG


需要注意的是,不能在文件的第一个标记之后定义或取消定义编译符号,也不能在同一个源文件重复定义2次编译符号,如代码清单23-2所示。

代码清单23-2 预处理指令的正确和错误用法


define DEBUG//正确

define DEBUG//错误,重复定义

undef DEBUG//正确

using System;#define MILESTON//错误

define SPECIAL//错误

namespace ProgrammingCSharp4

{

undef SPECIAL//错误

class Preprocessor

{

//……

}

}