【问题标题】:Is it really necessary to explicitly define "undefine" even when the define is commented out?即使定义被注释掉,是否真的有必要明确定义“取消定义”?
【发布时间】:2014-10-19 03:33:57
【问题描述】:

我在执行这段代码时遇到了一些问题:

#if TRACE
            dbgLog = new LogInfo( "PlatypusCE" );
#endif   

即使上面注释掉了“TRACE”,也发生了这种情况,就在一大块通用 cmets 之后:

//#define TRACE

一旦我在它下面添加了这个:

#undef TRACE

...所以它是:

//#define TRACE
#undef TRACE

...不过,它可以正常工作(“#if TRACE”代码不执行)。

真的有必要取消定义尚未定义的东西(被注释掉)吗?看起来很奇怪。

【问题讨论】:

  • TRACE 是否有可能是通过compiler switches 而不是#define 定义的?你看项目设置了吗?

标签: c# conditional-compilation undef


【解决方案1】:

默认情况下,在配置文件调试和发布中,Visual Studio 将定义TRACE 常量。您可以在项目设置中更改此行为(在Build 选项卡中)。 DEBUG 常量类似,默认情况下在 Debug 配置文件中处于活动状态(但不是 Release)。

【讨论】:

    【解决方案2】:

    TRACE 是默认为调试版本定义的两个常量之一:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多