【发布时间】:2022-08-07 22:17:39
【问题描述】:
我正在尝试定义以下宏函数:
#define TEST_INSTRUCTIONS_INPUT(name) const InstructionArray name =
#define TEST_INSTRUCTIONS_SIZE(name) const uint16_t name_size = sizeof(name) / sizeof(name[0]);
第一个有效,但第二个无效(name 未被替换)。
一般来说F(x) x_name似乎不会取代x,所以F(test)->x_name,而不是test_name
我的猜测是 C 预处理器:
- 如果宏 args 是它认为是 \'word\' 的子字符串,则无法识别它们
- 不将
_视为\'words\' 之间的有效分隔符
有没有办法解决这个问题来得到我想要的? (带有“装饰”名称的函数声明)。
谢谢。
-
尝试使用 ## \"operator\"
-
from the GNU C Preprocessor docs,希望这让您无需猜测。
-
_是标识符的有效字符。它不分隔“单词”。
标签: c macros c-preprocessor