我想知道是否有办法在运行时设置#define 的值。
我假设在下面的代码中有针对特定于 Oracle 和特定于 Sql Server 的查询。
#define oracle
// ...
#if oracle
// some code
#else
// some different code.
#endif
我想知道是否有办法在运行时设置#define 的值。
我假设在下面的代码中有针对特定于 Oracle 和特定于 Sql Server 的查询。
#define oracle
// ...
#if oracle
// some code
#else
// some different code.
#endif
绝对不是,#defines 甚至在编译器看到它之前就由预处理器编译出来 - 所以标记“oracle”甚至不在您的代码中,只是“1”或“0”。将#define 更改为全局变量或(更好)返回正确值的函数。
#if
是编译时。您可以在构建过程中指定它(通过切换到 msbuild/csc),但不是在运行时指定。排除的代码不存在。您可能会更好地建议 (1 of):
不,预处理器在编译之前运行并且可以在那个时候改变代码,这就是它的目的,如果你想在运行时根据某些东西切换行为,请使用变量和正常的条件逻辑。