我正在编写一个与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/