c#中的预处理器指令
本文关键字:处理器 指令 预处理 | 更新日期: 2023-09-27 18:14:14
在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#语言规范,Section2.5
预处理指令提供了有条件地跳过源文件的部分,以报告错误和警告条件;并描绘源代码的不同区域。这个词"预处理指令"仅用于与C和c++编程语言。在c#中,没有分离预处理步骤;预处理指令作为一部分进行处理词法分析阶段
预处理指令不是令牌,也不属于c#的语法。然而,预处理指令可以用于包含或排除标记序列,并且可以以这种方式影响c#程序的意义