我正在编写一个与C中的数据结构相关的简单的平衡括号程序。这是我的函数原型及其对应的方法体:

int IsBracketBalanced(char[]);

int IsBracketBalanced(char bracketSequence[1000])
{
        char stack[1000];
        int isBracketBalanced = 1;

    //do something here

    return isBracketBalanced;
}


但是Visual Studio在函数原型下面显示了一个绿色的花体,并显示警告为


  找不到“ IsBracketBalanced”的函数定义。


由于字符数组参数,我的签名有问题吗?我已在Visual Studio 2015上以C语言编写了此代码,操作系统为Windows 7。

最佳答案

它们不是完全相同的原型,也许这会使代码分析器感到困惑,只需使用

int IsBracketBalanced(char *, size_t);


相反,当然

int IsBracketBalanced(char *bracketSequence, size_t size)


并将大小作为参数传递,避免了很多问题。许多库函数(例如gets())最终都被重写为使用这种原型。

由于毕竟您无法利用该函数采用数组的事实,因为无论如何它都会转换为指针,因此使用char []除了可能具有可读性外,没有其他好处。

关于c - 功能原型(prototype)给出未找到警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40878464/

10-10 07:24