dan*_*jar 4 c++ compiler-construction warnings
我使用了一个空语句并且知道这一点。那么如何禁用编译器警告呢?
警告 C4390:“;” :发现空的受控语句;这是意图吗?
可能有一种方法可以明确表示我想要一个空语句。
在开发环境中,调试功能应显示错误消息并退出应用程序。在富有成效的版本中,它不应该执行任何操作。所以我为此编写了一个宏。
#ifdef _DEBUG
#include <iostream>
#define Debug(text) { cout << "Error: " << text; cin.get(); exit(1); }
#else
#define Debug(text) ;
#endif
Run Code Online (Sandbox Code Playgroud)
空语句宏的常见用法是这样的:
#define Debug(text) do {} while (0)
Run Code Online (Sandbox Code Playgroud)
正如 Ben 在评论中指出的那样,在宏的两个版本中使用此技术是谨慎的。
#ifdef _DEBUG
#include <iostream>
#define Debug(text) do { cout << "Error: " << text; cin.get(); exit(1); } while (0)
#else
#define Debug(text) do {} while (0)
#endif
Run Code Online (Sandbox Code Playgroud)
这个习语在很多地方都有讨论。例如: