繁体   English   中英

宏中“ _”的作用是什么

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM