#与##
2026/7/6小于 1 分钟
#与##
#(字符串化):把宏参数转为字符串字面量。
#define STR(x) #x
STR(hello) // → "hello"##(连接/粘贴):把两个token拼接成一个。
#define CONCAT(a, b) a##b
CONCAT(var, 1) // → var1实际应用:
#define REG(name) (*(volatile uint32_t*)name##_ADDR)
REG(GPIOA) // → (*(volatile uint32_t*)GPIOA_ADDR)
#define ASSERT_MSG(cond) do { if(!(cond)) printf("Assert: " #cond); } while(0)嵌入式中常用于寄存器宏生成、调试断言、代码生成。

