调试注释和 C/C++ 宏

Jel*_*Cat 4 c++ macros c-preprocessor

我正在使用 g++ 编译器,并且我希望注释掉或不注释我的 c++ 代码的某些行,具体取决于我的配置。

我意识到我可以这样做:

#ifdef DEBUG
cout << "foo" << endl;
#endif
Run Code Online (Sandbox Code Playgroud)

但我宁愿这一切都在一行上:

#define DEBUG //
DEBUG cout << "foo" << endl;
Run Code Online (Sandbox Code Playgroud)

...DEBUG作为 的宏//。但写作#define DEBUG //却一无所获。谁能告诉我该怎么办?

Cor*_*lks 5

这是一种方法:

#ifdef DEBUG
#define DEBUG_LOG(x) std::cout << x << std::endl;
#else
#define DEBUG_LOG(x)
#endif

DEBUG_LOG("foo")
Run Code Online (Sandbox Code Playgroud)


Dav*_*men 5

但我宁愿这一切都在一行上:
#define DEBUG //

人们已经给出了如何实现您想要的目标的好例子,但没有人评论为什么您的方法不起作用。

你的方法永远不会奏效。这是行不通的。没有机制可以定义成为注释序列开始的宏,原因很简单,在定义预处理器符号时注释不存在。他们已经被剥夺了。