在#iffalse块中查看预处理器代码的评估

本文关键字:处理器 代码 评估 预处理 #iffalse | 更新日期: 2023-09-27 18:00:02

我通过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内部。

这个例子并不完全是人为的,它试图通过这里描述的方法获得一个在C#和C++中编译的源文件。

在#iffalse块中查看预处理器代码的评估

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