代码之家  ›  专栏  ›  技术社区  ›  guskenny83

用引号定义C++预处理器宏[复制]

  •  1
  • guskenny83  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我试图定义一个C++中的宏,它把引号放在变量周围。

    我要做的一个简单的例子是:

    #define PE(x) std::cout << "x" << std::endl;
    

    然后当我打字的时候 PE(hello) 在我的代码中,它应该打印 hello 但是它只是打印出来的 x .

    我知道如果我做到了:

    #define PE(x) std::cout << x << std::endl;
    

    然后类型 PE("hello") 然后它会工作,但我想能够使用它没有引号。

    这有可能吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sid S    6 年前

    可以使用字符串化操作符, # :

    #define PE(x) std::cout << #x << std::endl;
    

    不过,我建议您从宏中删除分号。所以,

    #define PE(x) std::cout << #x << std::endl
    ...
    PE(hello);