c++ - 将 << 值传递给宏

标签 c++ visual-c++ metaprogramming

我想制作一个可以处理传递给它的流的宏。如何处理通过“<<”传递的宏体中的“hello”

#define MY_MACRO(){std::cout<<value;}

int _tmain(int argc, _TCHAR* argv[])
{
    MY_MACRO<<"hello";

    return 0;
}

最佳答案

宏执行文本替换。如果我们扩展它,您的来源将变为:

{std::cout<<value;}<<"hello";

这是行不通的。

现在您可以将宏重写为:

#define OUTPUT(x) std::cout << x

你会这样使用它:

#include <iostream>
#include <string>

#define OUTPUT(x) std::cout << x

int main(int argc, char **argv)
{ 
    OUTPUT("test");
}

Live Example

关于c++ - 将 << 值传递给宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747912/

相关文章:

c++ - Qt SQL 线程数据库查询

c++ - 嵌套结构的零初始化 - 编译器错误?

c++ - Visual Studio sizeof 非法操作数

c++ - Visual Studio 2010 和内核级编程!

c++ - 用于对类进行不同的部分特化的 Varadiac 宏

使用 "invalid"模板参数的 C++ 元编程 - 允许吗?

java - 注释是 Java 中的某种 DSL 吗?

c++ - 我如何使用位操作对单个整数中的两个数字进行编码和解码?

c++ - 积分修改值

c++ - 如何找出 cstyle cast 的实际作用?