【发布时间】:2021-06-29 14:15:09
【问题描述】:
我有一个结构数组,其中 .act 值不是字符串,而是函数名:
cgi_object_t cgi_machine_learning_handlers[] =
{
{
.path = "schema",
.grp = ACC_GRP_ML,
.r_vdom = VDOM_PER_VDOM,
.r_global = VDOM_PER_VDOM,
.act = cgi_ml_schema,
.flags = API_FLAG_NO_SCHEMA,
},
{
.path = "policy.svmattacktypes",
.grp = ACC_GRP_ML,
.r_vdom = VDOM_PER_VDOM,
.r_global = VDOM_PER_VDOM,
.act = cgi_ml_policy_svmattacktypes_get,
.flags = API_FLAG_NO_SCHEMA,
}
我正在尝试以字符串的形式访问这些函数名—— cgi_ml_schema 等。有没有办法做到这一点?我尝试在下面使用#,但它抱怨程序中有杂散的'#'。
const char * var = json_object_object_get(request, #(m->act))
response = json_object_object_get(info, #(m->act));
【问题讨论】:
-
将名称添加为结构中的字段。
-
是的。有没有我不必这样做的替代方法?直接读取指针名称? @dbush
-
您可能必须创建一个X macro 才能在此处以可维护的方式添加某种内省。但是,只有在初始化函数指针后从不更改函数指针时,这才有效。