假设这是函数 f()
之前的预处理器定义:
#define write std::cout << "test";
write
void f()
{
//...
}
这是该宏的结果:
std::cout << "test"
void f()
{
//...
}
我该如何编写该宏,使其跳过函数并在函数后面插入一些代码,以便结果如下所示:
std::cout << "test";
void f()
{
//...
}
std::cout << "test";
你知道我的意思:一个跳过一些代码并插入多行的宏(或其他东西)。
最佳答案
您可以将函数本身作为参数传递给宏:
#define write(...) \
std::cout << "test"; \
__VA_ARGS__ \
std::cout << "test";
write(
void f()
{
//...
})
当然,这个特定示例的格式不正确,因为在函数之外还有语句。
如果您真的对在函数的开头和结尾打印文本感兴趣,最好的办法是创建一个在其构造函数和析构函数中打印文本的类,并在函数的开头声明该类型的实例功能。
关于c++ - 如何编写跳过 C++ 代码行的预处理器定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8686797/