【问题标题】:How to use #define from another file?如何从另一个文件中使用#define?
【发布时间】:2012-06-10 14:10:36
【问题描述】:

例如:

define.cs

#define FOO

form1.cs

#if FOO 
  MessageBox.Show("foo is set!");
#else 
  MessageBox.Show("foo is not set!");
#endif

define.cs 包含在与 form1.cs 相同的项目中,但上述条件给出:foo is not!

【问题讨论】:

    标签: c# c-preprocessor


    【解决方案1】:

    你不能,用#define创建的符号的范围是定义它的文件。

    【讨论】:

      【解决方案2】:

      根据this MSDN page

      使用 #define 创建的符号的范围是定义它的文件。

      【讨论】:

        【解决方案3】:

        你不能,但你可以做的是将定义移动到项目配置中,以便项目中的所有文件都可以看到定义。

        请参阅How to define a constant globally in C# (like DEBUG) 中的说明。

        【讨论】:

          【解决方案4】:

          正如其他人所说,#define 仅限于单个文件。

          但是,您可以定义作用于整个程序集的预处理器变量。为此,您只需进入项目设置的“构建”部分并将其放入“条件编译符号”部分。 (这只是管理/define compiler switch 的一种更简单的方法。)这种方法还有一个额外的优势,即还允许您为不同的构建配置定义不同的符号集。

          【讨论】:

            【解决方案5】:

            在 C# 中,#define 的范围仅限于声明它的文件。
            要定义在所有文件中可见的符号,一种方法是 Project->Properties->Build->Conditional Compilation Symbols 并在此处指定符号“FOO”。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-03-11
              • 2012-10-24
              • 2011-03-04
              • 1970-01-01
              • 2015-02-02
              • 2015-04-14
              • 1970-01-01
              相关资源
              最近更新 更多