/define(C# 编译器选项)
/define 选项将 name 定义为程序的所有源代码文件中的一个符号。
/define:name[;name2]
参数
- name, name2
要定义的一个或多个符号的名称。
备注
使用 /define 选项与使用 #define 预处理器指令具有相同的效果,不同点在于编译器选项对项目中的所有文件都有效。 在源文件中的 #undef 指令移除定义之前,符号在源文件中始终保持已定义状态。 使用 /define 选项时,一个文件中的 #undef 指令不会影响到项目中的其他源代码文件。
可以将用该选项创建的符号与 #if、#else、#elif 和 #endif 一起使用,以按条件编译源文件。
/d 是 /define 的缩写形式。
通过使用分号或逗号分隔符号名称,可以使用 /define 定义多个符号。 例如:
/define:DEBUG;TUESDAY
C# 编译器自身没有定义可以在源代码中使用的符号或宏;所有符号定义必须是用户定义的。
备注
与 C++ 这样的语言相同,C# #define 不允许给符号赋值。例如,不能使用 #define 创建宏或定义常数。如果您需要定义常数,请使用 enum 变量。如果您希望创建 C++ 样式的宏,请考虑其他方式,例如泛型。由于宏有容易出错的坏名声,因此 C# 不允许使用宏,而是提供了其他更安全的选择。
在 Visual Studio 开发环境中设置此编译器选项
打开项目的**“属性”**页。
在**“生成”选项卡上,键入要在“条件编译符号”**框中定义的符号。 例如,如果要使用下面的代码示例,只需在文本框中键入 xx。
有关如何以编程方式设置此编译器选项的信息,请参见 DefineConstants。
示例
// preprocessor_define.cs
// compile with: /define:xx
// or uncomment the next line
// #define xx
using System;
public class Test
{
public static void Main()
{
#if (xx)
Console.WriteLine("xx defined");
#else
Console.WriteLine("xx not defined");
#endif
}
}