gpt4 book ai didi

c++ - 函数定义上的全局命名空间作用域运算符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:05 24 4
gpt4 key购买 nike

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

最佳答案

您始终可以将 declarator-id 括起来:

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

关于c++ - 函数定义上的全局命名空间作用域运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36618953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com