You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现C宏参数插值:为函数名添加前缀并调用

解决C宏参数与前缀拼接问题

你当前的宏定义里,__some_function_name_prefix__name会被预处理器视为一个单独的标识符,不会将参数name替换为传入的实际值。要实现令牌拼接,需要使用C预处理器的令牌粘贴运算符##。

修正后的宏定义如下:

#define FUNC(name) __some_function_name_prefix__##name()

此时调用宏的展开效果完全符合预期:

FUNC(add)      // => __some_function_name_prefix__add()
FUNC(subtract) // => __some_function_name_prefix__subtract()
FUNC(multiply) // => __some_function_name_prefix__multiply()
FUNC(divide)   // => __some_function_name_prefix__divide()

##运算符的作用是将左右两侧的预处理器令牌合并为一个新的令牌。在这里,它会把前缀__some_function_name_prefix__和传入的参数(比如add)拼接成完整的函数名,再加上括号形成函数调用。

内容的提问来源于stack exchange,提问作者Michael M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:10:25