似乎在#if false块内评估预处理器代码

时间:2015-06-26 18:06:59

标签: c# unity3d undef

我通过MonoDevelop 4.0.1(Unity的当前版本)在C#中工作, 并且看似古怪的语言。

这是我的整个.cs文件:

#if false

#define foo

#endif

class myClass {
  int member;
}

#if false

#error this error does not trigger

#undef foo
// "cannot define or undefine preprocessor symbols after first token in file

#endif

我理解在声明令牌后不#undef预处理器符号的规则,但在这种情况下我 #undef因为#undef位于#if false内。

这个例子并不完全是设计的,它试图通过here描述的方法在C#和C ++中编译单个源文件。

1 个答案:

答案 0 :(得分:1)

Visual Studio不会抱怨相同的代码。我想你在Mono中发现了一个错误。