明确提及预期的分号

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)

Dav*_*nan 6

空语句宏的常见用法是这样的:

#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)

这个习语在很多地方都有讨论。例如:


Mot*_*tti 5

你可以明确告诉编译器你没有做任何事情

(void)0;
Run Code Online (Sandbox Code Playgroud)