c++ - 将引号传递给宏

标签 c++ preprocessor

#include <iostream>

#define DEF(A) #A

int main()
{
    std::cout << DEF(qwer) << std::endl; //prints: qwer
    std::cout << DEF("qwer") << std::endl; //prints: "qwer"
    std::cout << DEF("qwer) << std::endl; //error, but I want to print "qwer without a second quote
}

如何将只有一个引号的参数传递给宏?

最佳答案

你不能那样做。

与编译器相比,预处理器对语法的要求要低得多,但您提供给它的仍然必须是一系列有效的标记,而未终止的字符串文字不是有效标记。

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

相关文章:

javascript - 如何将sass添加到webpack+react中?

c - 如果未定义宏,则忽略它

asp-classic - VBScript/Classic ASP 中还有其他预处理器指令吗?

c# - "Base b = new Derived()"是哪个 OO 概念的一个例子?

具有 2 个参数问题的 C 预处理器宏

c++ - 将前 n 个字符复制到 std::string

c++ - 模板模板参数 : constructor initialization

preprocessor - 处理神经网络输入的文本字符串

c++ - 为什么我不能在声明中定义静态字段?

c++ - 计算机图形学中的最大凸面修补