繁体   English   中英

如何编写跳过C ++代码行的预处理器定义?

[英]How to write preprocessor definition that skips lines of code in C++?

假设这是函数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()
{
    //...
})

当然,此特定示例格式不正确,因为在函数之外有一些语句。

如果您实际上对在函数的开头和结尾处打印文本感兴趣,那么最好的选择是创建一个在其构造函数和析构函数中打印文本的类,并在函数的开头声明该类型的实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM