[英]What is the purpose of '_' in macro
我试图了解VPP 示例函数名称“ sample_plugin_api_hookup”之一。 在宏( #define _(N,n)
)中加下划线('_')的目的是什么?
#define _(N,n) \
vl_msg_api_set_handlers((VL_API_##N + sm->msg_id_base), \
#n, \
vl_api_##n##_t_handler, \
vl_noop_handler, \
vl_api_##n##_t_endian, \
vl_api_##n##_t_print, \
sizeof(vl_api_##n##_t), 1);
foreach_sample_plugin_api_msg;
#undef _
_
是有效的C标识符,尽管保留用于文件范围。 AC标识符由字母或下划线组成,后跟零个或多个字母,下划线或数字(我忽略了通用字符名称)。
显然,该代码的作者想要一个简短,易于键入且不引人注目的名称。 我相信GNU gettext包或使用它的代码遵循此约定,并带有如下宏调用
_("This is a message")
被消息的本地化版本替换。 (这意味着使用GNU gettext的程序可能必须选择其他名称)。
foreach_sample_plugin_api_msg
是另一个使用_
宏的宏,这就是在该行之后立即未定义_
宏的原因。
也许作者受到Go语言的影响,该语言使用_
作为空白标识符 。
关于这是一个绝妙的or俩还是危害良好品味的犯罪,人们的意见可能会有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.