我在C#类中有这个代码。
#if DEBUG
private const string BASE_URL = "http://www.a.com/";
#else
private const string BASE_URL = "http://www.b.com//";
#endif
我想问的是什么时候
#if DEBUG
代码中的路径被执行了吗?
是否会被执行
答案 0 :(得分:47)
#if DEBUG
这是预处理器的定义。
在定义DEBUG常量时进行编译。是的,它是Debug Build Configuration的默认设置。
Visual Studio 2010项目属性:
如果选中Define DEBUG constant
,VS将编译:
private const string BASE_URL = "http://www.a.com/";
否则(未选中)VS将编译:
private const string BASE_URL = "http://www.b.com//";
答案 1 :(得分:13)
这是一个预处理器指令。执行调试构建时会编译DEBUG部分中的代码(更具体地说,在定义DEBUG常量时)。即如果您进行调试构建,BASE_URL将指向www.a.com。否则它将指向www.b.com。
答案 2 :(得分:8)
使用DEBUG指令编译时。因此,如果设置它,则只有第一行将是已编译二进制文件的一部分,如果未设置,则第二行将成为二进制文件的一部分。
默认情况下,在VS中编译调试配置时会设置DEBUG,但您可以手动为任何配置设置DEBUG
答案 3 :(得分:5)
答案 4 :(得分:3)
这是一个"编译器指令",这意味着它实际上会根据你输入的#if包括或排除构建过程(或编译)中的代码。这就是说,DEBUG符号位于项目的属性中,并且在Visual Studio中通常会自动删除" Release"建立。
所以基本上,它不必在Visual Studio中运行调试,它不必在任何特定的文件夹中,你的代码就是这样构建的。
答案 5 :(得分:2)
如果使用DEBUG配置进行编译,则else行之前的代码将被编译而另一行则不会。如果你在任何其他配置中编译,第二行将被编译,而第一行则不会。
答案 6 :(得分:0)
转到"项目属性" - >构建应用程序的选项卡。如果配置:活动(调试),则启用调试配置。 下面的代码将打印到控制台。
#if DEBUG
Console.WriteLine("in debug mode...");
#endif
如果配置:活动(发布),则启用发布配置。下面的代码将打印到控制台。
#if RELEASE
Console.WriteLine("in release mode...");
#endif
如果要在DEBUG和RELEASE模式之间切换,请使用"调试/发布/配置管理器"在大多数开发人员都知道的情况下,按照工具菜单下的方式下载...但有时会被忽略,并导致混淆为什么上面的代码运行不正确。