如何命名具有相同名称的函数和变量

How to name a function and a variable with the same name?

本文关键字:函数 变量 何命名      更新时间:2023-10-16

下面的代码不能用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%的情况下都有效。