我正在围绕C ++库创建一个C包装器。 这样做的一个常见错误是函数声明和定义由于某种原因而不匹配(拼写错误,重命名,添加/删除参数等)。
例如:
// enabledata.h
MDS_C_API const char* motek_mds_enable_data_get_enable_command_name();
// enabledata.cpp
const char* motek_mds_enable_data_enable_command_name() { ... }
名称不匹配,但由于缺少这些函数的作用域,因此不会导致任何编译错误,并且只会在稍后的行中显示为链接错误。
我希望编译器通过使用全局范围运算符来帮助我找到这些错误,如下所示:
const char* ::motek_mds_enable_data_get_disable_command_name() { ... }
如果函数尚未声明,现在将显示为编译错误,这正是我想要的。
但是,当函数返回typedef时,这不起作用:
int32_t ::motek_mds_enable_data_is_enabled(const Data* a_Data) { ... }
这将导致尝试使用int32_t
作为范围,这当然会导致错误:
left of '::' must be a class/struct/union
有没有办法让这项工作?当然,也欢迎更好的替代品。
我目前正在使用Visual Studio 2015 Update 2.
答案 0 :(得分:4)
您始终可以将 declarator-id :
括起来int32_t (::motek_mds_enable_data_is_enabled)(const Data* a_Data) { ... }
// ^ ^