如何在没有大量警告的情况下在一个地方进行全局预处理器定义?
How to make global preprocessor definitions in a single place without having lots of warnings?
我想要一种方法 "global preprocessor definitions" 以便我可以在编译前更改单个值以添加或删除我的程序的功能。目前我有一个 "global script"(称为 God.cs),其常量如:
public const bool PRINT_RUN_VALUES = true;
public const bool DEBUG_MOVEMENT = false;
public const bool DOUBLE_SPEED = false;
所有相关脚本都使用这些值,例如:
在脚本 1 中:
if (God.PRINT_RUN_VALUES) {
float averageDist = /* calculate values */
print("Script1: averageDist = " + averageDist);
}
在脚本 2 中:
if (God.PRINT_RUN_VALUES) {
print("Script2: radius = " + radius);
print("Script2: time = " + time);
}
这个方法的问题是我得到了很多
CS0162: Unreachable code detected
警告。我可以使用以下方法关闭这些警告:
#pragma warning disable 0162
#pragma warning disable 0429
但我不想这样做,因为这些警告在不涉及 God.cs 中的这些值的情况下可能很有用。另一种方法可能是使用经典的预处理器定义,例如:
#define PRINT_RUN_VALUES
...
#if (PRINT_RUN_VALUES)
float averageDist = /* calculate values */
print("Script1: averageDist = " + averageDist);
#endif
但是据我所知,这需要我在每个 .cs 文件的开头添加“#define PRINT_RUN_VALUES”,当我想快速关闭或打开这些文件时,这将成为一场噩梦全局语句。我希望所有这些全局定义都在一个地方,这样我就可以快速关闭和打开它们。
我怎样才能定义一些预处理器,使其不包含在每个脚本中?我知道有符合此标准的处理器定义,例如用于检查哪个操作系统正在编译软件的定义。或者有其他解决方法吗?
您可以在项目属性中设置这些,例如,这就是 DEBUG
符号的定义方式。右键单击您的项目,select Properties 并在标记为 Conditional compilation symbols:
的框中输入您的自定义 csymbols
现在在我的代码中我可以这样做:
#if CHEESE
public string CheeseName = "Gouda";
#endif
请注意,这些符号被定义为配置的一部分。这意味着您可以为发布定义不同的符号,例如调试或 UAT 环境。
我想要一种方法 "global preprocessor definitions" 以便我可以在编译前更改单个值以添加或删除我的程序的功能。目前我有一个 "global script"(称为 God.cs),其常量如:
public const bool PRINT_RUN_VALUES = true;
public const bool DEBUG_MOVEMENT = false;
public const bool DOUBLE_SPEED = false;
所有相关脚本都使用这些值,例如:
在脚本 1 中:
if (God.PRINT_RUN_VALUES) {
float averageDist = /* calculate values */
print("Script1: averageDist = " + averageDist);
}
在脚本 2 中:
if (God.PRINT_RUN_VALUES) {
print("Script2: radius = " + radius);
print("Script2: time = " + time);
}
这个方法的问题是我得到了很多
CS0162: Unreachable code detected
警告。我可以使用以下方法关闭这些警告:
#pragma warning disable 0162
#pragma warning disable 0429
但我不想这样做,因为这些警告在不涉及 God.cs 中的这些值的情况下可能很有用。另一种方法可能是使用经典的预处理器定义,例如:
#define PRINT_RUN_VALUES
...
#if (PRINT_RUN_VALUES)
float averageDist = /* calculate values */
print("Script1: averageDist = " + averageDist);
#endif
但是据我所知,这需要我在每个 .cs 文件的开头添加“#define PRINT_RUN_VALUES”,当我想快速关闭或打开这些文件时,这将成为一场噩梦全局语句。我希望所有这些全局定义都在一个地方,这样我就可以快速关闭和打开它们。
我怎样才能定义一些预处理器,使其不包含在每个脚本中?我知道有符合此标准的处理器定义,例如用于检查哪个操作系统正在编译软件的定义。或者有其他解决方法吗?
您可以在项目属性中设置这些,例如,这就是 DEBUG
符号的定义方式。右键单击您的项目,select Properties 并在标记为 Conditional compilation symbols:
现在在我的代码中我可以这样做:
#if CHEESE
public string CheeseName = "Gouda";
#endif
请注意,这些符号被定义为配置的一部分。这意味着您可以为发布定义不同的符号,例如调试或 UAT 环境。