函数定义

时间:2016-04-14 09:28:49

标签: c++ visual-studio visual-studio-2015

我正在围绕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.

1 个答案:

答案 0 :(得分:4)

您始终可以将 declarator-id

括起来
int32_t (::motek_mds_enable_data_is_enabled)(const Data* a_Data) { ... }
//      ^                                  ^