我正在编写一个与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。
答案 0 :(得分:1)
它们不是完全相同的原型,也许这会让代码分析器感到困惑,只需使用
即可int IsBracketBalanced(char *, size_t);
相反,当然
int IsBracketBalanced(char *bracketSequence, size_t size)
并将大小作为参数传递,避免了许多问题。像gets()
这样的许多库函数最终都被重写为使用这种原型。
因为毕竟你不能利用函数采用数组的事实,因为无论如何它都被转换为指针,除了可读性之外,使用char []
没有任何好处。 / p>