C#预处理器指令
#define和#undef
#define DEBUG
告诉编译器存在给定名称的符号。类似声明一个变量,但这个变量没有真正的值,只是存在。
#undef DEBUG
和#define正好相反--删除符号的定义,如果符号不存在,没有任何作用。如果符号存在,define不起作用。必须把#define和#undef命令放在C#源文件的开头位置,在声明要编译的任何对象的代码之前
#if、#elif、#else、#endif
点击查看代码
int DoWork(double x)
{
#if DEBUG
WriteLine($"x is {x}")
#endif
编译器遇到#if指令,先检查相关符号是否存在,存在就执行编译,否则会忽略所有代码。执行完#if,完成调试后,会把#define指令注释掉,可执行文件会变小。也可以嵌套#if块。还支持逻辑运算符“!”、“==”、“!=”、“||”。
#warning和#error
编译器遇到#warning,会向用户显示指令后面的文本
遇到#error会向用户显示后面的文本,并立即退出编译,不会生成IL代码