【发布时间】:2020-04-12 08:24:57
【问题描述】:
错误消息说:
在函数void LCSlength(std::__cxx11::string, std::__cxx11::string, int, int)
错误:
表达式不能用作函数 查找[ i ][ j ] = max (查找[i - 1] [ j ],查找[ i ] [ j - 1 ]);
#define max 20
int lookup[max][max];
void LCSlength(string x,string y,int m,int n)
{
for(int i = 1;i<=m;i++)
{
for(int j = 1;j<=n;j++)
{
if(x[i - 1] == y[j - 1])
lookup[i][j] = lookup[i - 1][j - 1] + 1;
else
lookup[i][j] = max(lookup[i - 1][j], lookup[i][j - 1]);
}
}
}
【问题讨论】:
-
如果您有一个为简洁起见没有显示的函数 max,那么您可以通过“#define max 20”删除对它的引用,并且您可能在其他地方声明的 max 函数无法访问。因为一旦预处理器指令运行,最后一行在编译器中看起来就像“lookup [i] [j] = 20(lookup[i-1][j],lookup[i][j-1]);”你不能有一个名为“20”的函数。在#define / 数组大小中使用“max”的替代标签,或创建或重命名 max 函数为其他内容
-
您希望
max成为什么?20的占位符或返回两个值之间最大值的函数(或宏)的名称?前者可以使用MAX_SIZE,后者使用std::max。
标签: c++ syntax-error