在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
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
DEBUG from preprocessor directive is working!
.......(from display())
.......(from show())
Run Code Online (Sandbox Code Playgroud)
但是实际输出:
.......(from display())
.......(from show())
DEBUG from preprocessor directive is working!
Run Code Online (Sandbox Code Playgroud)
您期望的输出错误。
在DEBUG模式/配置中处理(待编译)的代码
static void Main(string[] args)
{
Program1.display();
Program2 p2 = new Program2();
p2.show();
Console.WriteLine("DEBUG from preprocessor directive is working!");
}
Run Code Online (Sandbox Code Playgroud)
码处理(进行编译)的非 - DEBUG模式/配置
static void Main(string[] args)
{
Program1.display();
Program2 p2 = new Program2();
p2.show();
}
Run Code Online (Sandbox Code Playgroud)
希望这可以消除您对预处理器不会决定执行顺序的困惑。