C#预处理指令

与C++不同,C#没有独立的预处理器。C#中的预处理指令(pre-processing directives)仅仅用来与C保持一致,而并不是编译器开始编译代码之前的一个单独的处理步骤,它是作为词法解析的一部分来执行的。
 
预处理指令都以#号开头并位于行首(前面可以出现空格符)。在介绍条件编译之前,我们先学习两条用于定义符号和取消符号定义的预处理指令:#define和#undef。
 
#define指令对于有一点C语言知识的读者来说再熟悉不过,它非常类似于C中的宏定义:
 
#define COUNT
 
这里定义了符号COUNT,它的作用域是该定义所在的整个文件。需要注意的是,符号定义必须放在所有其它语句的前面,或者说是放在所有“实代码”(real code)的前面。所以下面的代码是错误的:
 
using System
 #define COUNT
 
再看一下例子:
 
#define A
 
namespace N
 {
 #define B
 #if B
 class Class1{}
 #endif
 }
 
由于在第二个#define指令之前出现了“实代码”,因而是错误的。
 
然而,下面的代码却是合法的,因为#if是不“实代码”:
 
#define A
 
#if A
 #define B
 #endif
 
namespace N
 {
 #if B
 class Class1{}
 #endif
 }
 有时候我们想在源程序中取消某个符号的定义,这时就要用到#undef指令:
 
#undef COUNT
 
与#define一样,#undef的作用域也是定义所在的整个文件,它也必须出现在所有“实代码”之前。下面的例子定义了一个符号,然后又取消了它,第二个#undef指令虽然不起任何作用,但却是合法的:
 
#define A
 
#undef A
 
#undef A
 
好了,简单地介绍了预处理语句之后,我们就可以来学习如何使用定义的符号进行条件编译了。

本文来自编程入门网:http://www.bianceng.cn/Programming/csharp/200709/4405.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值