在没有 Google 帮助的情况下,我想知道是否有人可以告诉我是否可以创建一个 C++ (g++) 调试宏,其行为类似于“改进的”std::cout。想法是通过 << 接受参数并附加一些文本,以便
DBG << "Hello" << world;
可能产生
myfile.cpp 1420 Hello world
我知道有一些日志库(?)/宏(?)可以做这种事情。我感兴趣的是它是如何完成的,而不是使用一些包。
最佳答案
您的宏可以创建一个临时变量,它在销毁时调用 endl
。临时文件会一直存在,直到封闭的表达式结束,通常是在 ;
处。
#include <iostream>
struct X {
~X() { std::cout << std::endl; }
};
#define DBG (X(), std::cout << __FILE__ << " " << __LINE__ << " ")
int main () {
std::string world(", world");
DBG << "Hello" << world;
}
关于c++ - 制作一个像流一样的 C++ 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903814/