[英]Preprocessor directives in C#
在C#中,如果预处理程序指令是在实际编译之前进行预处理的指令,那么为什么不在该程序中首先执行该指令?
static void Main(string[] args)
{
Program1.display();
Program2 p2 = new Program2();
p2.show();
#if DEBUG
Console.WriteLine("DEBUG from preprocessor directive is working!");
#endif
}
预期产量:
DEBUG from preprocessor directive is working!
.......(from display())
.......(from show())
但是实际输出:
.......(from display())
.......(from show())
DEBUG from preprocessor directive is working!
您期望的输出错误。
以DEBUG
模式/配置处理(待编译)的代码
static void Main(string[] args)
{
Program1.display();
Program2 p2 = new Program2();
p2.show();
Console.WriteLine("DEBUG from preprocessor directive is working!");
}
以非 DEBUG
模式/配置处理(待编译)的代码
static void Main(string[] args)
{
Program1.display();
Program2 p2 = new Program2();
p2.show();
}
希望这可以消除您对预处理器不会决定执行顺序的困惑。
C#语言规范,第2.5节
预处理伪指令提供了有条件地跳过源文件的各个部分,报告错误和警告条件以及描绘源代码不同区域的功能。 术语“预处理指令”仅用于与C和C ++编程语言保持一致。 在C#中,没有单独的预处理步骤。 预处理指令作为词法分析阶段的一部分进行处理
预处理指令不是标记,也不是C#语法的一部分。 但是,预处理指令可用于包含或排除标记序列,并以此方式影响C#程序的含义
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.