C#基础知识 - 什么是预处理(#define、#if)

2025-10-10 06:00:29

1、《C# 指南 》中标识了如下预处理指令,依次理解演示。

#if

#else

#elif

#endif

#define

#undef

#warning

#error

#line

#region

#endregion

#pragma

#pragma warning

#pragma checksum

C#基础知识 - 什么是预处理(#define、#if)

1、此四个指令组成一个系列

1、以 #if 指令开头的条件指令必须以 #endif 指令显式终止。

2、#if 、#else、#elif、#endif,允许基于“是否”“存在”一个或多个符号包括或排除代码。 这在条件编译调试版本的代码或编译特定配置的代码时会很有用。

3、仅可以使用运算符 ==(相等)和 !=(不相等)测试 true 或 false。

4、 可以使用运算符 && (and)、|| (or) 和 ! (not) 评估是否已经定义了多个符号。

2、此处演示#if、#endif,没有其他预编译指令时,可观察到MyTest处于未定义状态,那么#if(MyTest)下的语句不执行,不编译(代码处于灰色状态)

C#基础知识 - 什么是预处理(#define、#if)

3、#if、#else、#elif、#endif,演示观察下,MyTest和MySign均处于未定义状态,可使用&&组成较复杂的条件编译。

C#基础知识 - 什么是预处理(#define、#if)

4、与if、else、elif用法类似,同样是优先执行后,跳出if代码段。

C#基础知识 - 什么是预处理(#define、#if)

1、#define定义符号。 将符号用作传递给 #if 指令的表达式时,该表达式的计算结果为 true

1、#define需要放在using之前使用

2、#define 指令不能用于声明常量值

#undef 允许定义符号,通过将该符号用作 #if 指令中的表达式,表达式将计算为 false。使用类似#define

C#基础知识 - 什么是预处理(#define、#if)

C#基础知识 - 什么是预处理(#define、#if)

2、 1、#define放在其他位置时

CS1032 不能在文件的第一个标记之后定义或取消定义预处理器符号 

2、#define 指令不能用于声明常量值

CS1025 应输入单行注释或行尾 

C#基础知识 - 什么是预处理(#define、#if)

C#基础知识 - 什么是预处理(#define、#if)

3、生成系统还会感知表示不同目标框架的预定义预处理器符号。 

因此在创建面向多个.NET 实现或版本的应用程序时,预处理符号会很有用。

C#基础知识 - 什么是预处理(#define、#if)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢