2.#if, #else, #elif, #endif
3.#undef
这些东西的用法网上介绍的很详细,也会用,但是什么时候有必要用它呢?我咋感觉没啥用呢
3 个解决方案
#1
你可以使用
#if DEBUG
....
#else
....
#endif
来区别调试开发和发布的不同代码。因为调试是几乎不使用 try...catch 机制的,需要尽可能早地让vs 调试器捕获异常。而 Release 版本一定是在最外层处理掉抛出的异常、而不让应用崩溃的。
如果有同一个类库,需要分别为 Silverlight、WPF、Winform、ASP.NE等等使用,但是每一个环境都有一点点差别,需要使用不同的实现方法,这就需要条件编译。
如果你需要为不同目标编译不同代码,例如给不同团队稍有区别,或者你不同的调试级别下需要屏蔽不同的代码,等等,可以自定义条件编译变量(在工程的属性窗口设置)。
条件编译可以使得目标代码“很干净”,并不需要在代码中执行什么 if 判断代码。因为根本不编译进目标代码中。
#if DEBUG
....
#else
....
#endif
来区别调试开发和发布的不同代码。因为调试是几乎不使用 try...catch 机制的,需要尽可能早地让vs 调试器捕获异常。而 Release 版本一定是在最外层处理掉抛出的异常、而不让应用崩溃的。
如果有同一个类库,需要分别为 Silverlight、WPF、Winform、ASP.NE等等使用,但是每一个环境都有一点点差别,需要使用不同的实现方法,这就需要条件编译。
如果你需要为不同目标编译不同代码,例如给不同团队稍有区别,或者你不同的调试级别下需要屏蔽不同的代码,等等,可以自定义条件编译变量(在工程的属性窗口设置)。
条件编译可以使得目标代码“很干净”,并不需要在代码中执行什么 if 判断代码。因为根本不编译进目标代码中。
#2
如果有同一个类库,需要分别为 Silverlight、WPF、Winform、ASP.NE等等使用,但是每一个环境都有一点点差别,需要使用不同的实现方法,这就需要条件编译。
预处理能自动判断是WPF还是winform,还是也得手动更改#define 内容?
#3
例如 SILVERLIGHT就是vs 自动设置的。你可以在“生成”属性窗口去设置条件编译符号。
源代码中通常不设置。源代码文件可能被引入不同工程(例如使用“添加现有文件->link”方式)。
#1
你可以使用
#if DEBUG
....
#else
....
#endif
来区别调试开发和发布的不同代码。因为调试是几乎不使用 try...catch 机制的,需要尽可能早地让vs 调试器捕获异常。而 Release 版本一定是在最外层处理掉抛出的异常、而不让应用崩溃的。
如果有同一个类库,需要分别为 Silverlight、WPF、Winform、ASP.NE等等使用,但是每一个环境都有一点点差别,需要使用不同的实现方法,这就需要条件编译。
如果你需要为不同目标编译不同代码,例如给不同团队稍有区别,或者你不同的调试级别下需要屏蔽不同的代码,等等,可以自定义条件编译变量(在工程的属性窗口设置)。
条件编译可以使得目标代码“很干净”,并不需要在代码中执行什么 if 判断代码。因为根本不编译进目标代码中。
#if DEBUG
....
#else
....
#endif
来区别调试开发和发布的不同代码。因为调试是几乎不使用 try...catch 机制的,需要尽可能早地让vs 调试器捕获异常。而 Release 版本一定是在最外层处理掉抛出的异常、而不让应用崩溃的。
如果有同一个类库,需要分别为 Silverlight、WPF、Winform、ASP.NE等等使用,但是每一个环境都有一点点差别,需要使用不同的实现方法,这就需要条件编译。
如果你需要为不同目标编译不同代码,例如给不同团队稍有区别,或者你不同的调试级别下需要屏蔽不同的代码,等等,可以自定义条件编译变量(在工程的属性窗口设置)。
条件编译可以使得目标代码“很干净”,并不需要在代码中执行什么 if 判断代码。因为根本不编译进目标代码中。
#2
如果有同一个类库,需要分别为 Silverlight、WPF、Winform、ASP.NE等等使用,但是每一个环境都有一点点差别,需要使用不同的实现方法,这就需要条件编译。
预处理能自动判断是WPF还是winform,还是也得手动更改#define 内容?
#3
例如 SILVERLIGHT就是vs 自动设置的。你可以在“生成”属性窗口去设置条件编译符号。
源代码中通常不设置。源代码文件可能被引入不同工程(例如使用“添加现有文件->link”方式)。