c - 使用## 和# 运算符连接 C 宏中的字符串

标签 c macros operator-keyword

我有一段代码需要连接字符串,如下所示:

#define CMD(A,B)  CMD_##A_PROMPT##B

void main()
{
    int a = 10, b = 5;
    printf("%s\n", CMD(a, b));
}

所需的输出是:CMD10_PROMPT5
这可以通过任何方式实现吗?

最佳答案

我不认为这可以完成,因为您正在寻找的宏是编译时“字符串化”,参数在运行时接收它们的值-时间

如果您正在寻找运行时“字符串化”,请使用 sprintf 等。

关于c - 使用## 和# 运算符连接 C 宏中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10928217/

相关文章:

clojure:如何将命名空间作为宏参数传递?

c++ - 如何从内部运算符构造函数正确调用复制构造函数?

c++ - C++ 中的自减运算符

c - 这个条件部分是如何工作的?

C- 在 Windows 中使用 exec()

c - 为什么我的 shell 在终止进程后打印不正确?

c++ - 重载键多重集的字符串运算符

c - printf ("%*.*s",int,int,char *) 在c中是什么意思?

macros - 为什么我无法在 Rust 宏中使用 `block` 匹配器来匹配结构体?

macros - 以编程方式填写 Scheme 中的 letrec。宏还是评估?