如何命名具有相同名称的函数和变量
How to name a function and a variable with the same name?
下面的代码不能用vc++和clang编译。
int f()
{
return 0;
}
int main()
{
// error : called object type 'int' is not a function or function pointer
int f = f();
}
在某些情况下这是必要的。例如,我有一个函数来计算一个字符串的字符数,它被命名为count
,然而,另一个函数参数也被表达地命名为count
。
size_t count(char* sz)
{
return strlen(sz);
}
bool check_count(char* sz, size_t count)
{
return count == count(sz); // ???
}
如何解决这个问题?
在c++中你可以为你的对象定义一个命名空间,在你的例子中你可以这样做:
namespace MyFunctions {
int f()
{
return 0;
}
}
int main()
{
int f = MyFunctions::f();
}
答案很简单。这是不支持的。C和许多其他语言一样,不能完全支持所有的场景。提出这样的目标是不合理的。从来没有人试图做到这一点。
在您的特殊情况下,您应该重命名参数。函数的作用域总是有限的。它总是作为一个整体重新编译。头文件中原型中的参数名可能有不同的名称。在函数体中重命名参数在99.9999%的情况下都有效。
相关文章:
- 未使用的C++未优化的静态成员函数/变量
- 内联函数/变量的外部链接
- 同一函数中的静态函数变量初始化顺序
- 将非静态成员函数C 的使用无效,而将成员功能作为函数变量
- 如何从doxygen输出中排除类的无证件成员函数/变量
- 如何在LUA C API中分配全局LUA函数变量
- 如何将函数变量传递给C lambda函数
- 通过另一个C++函数更改函数变量
- c++11 lambda 真的支持闭包吗?函数变量中存在语义冲突
- C++:静态成员不能在声明时定义,但静态函数变量可以?
- apache-frift是否支持函数变量作为参数
- 类函数/变量在使用之前必须声明
- 函数变量去哪里
- 无法使用函数变量?错误表达式必须具有类类型
- 如何在main中使用函数变量
- 每当尝试打印函数变量时,C++ cout 错误
- 是否存在查看成员函数/变量的整洁等效项
- 访问友元类之间的函数变量
- 函数到函数变量
- 一个定义规则是否强制创建一个静态函数变量