我正在创建一个围绕C++库的C Package 器。在这样做时,一个常见的错误是由于某种原因(打字错误,重命名,添加/删除参数等),函数声明和定义不匹配。
例如:
// 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。
2条答案
按热度按时间fnx2tebb1#
您可以始终将 declarator-id 括在括号中:
izkcnapc2#
另一种具有后期指定的返回类型的解决方案: