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

时间:2014-06-20 05:59:49

标签: c++ c function parameters variable-names

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); // ???
}

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

在C ++中,您可以为对象定义命名空间,在您的示例中,您可以这样做:

namespace MyFunctions {


    int f()
    {
        return 0;
    }
}

int main()
{
    int f = MyFunctions::f(); 
} 

答案 1 :(得分:1)

答案很简单。这不受支持。 C,和许多其他语言一样,不能完全支持所有场景。实现这样一个目标是不合理的。没有人试图实现这一目标。

在您的特定情况下,您应该重命名参数。功能的范围有限。它总是被重新编译成一个整体。头文件中原型中的params名称可能具有不同的名称。在函数体中重命名param将在99.9999%的情况下工作。