0

代码看起来像这样

#include <cstdlib>
#include <iostream>

using namespace std;
#define n 3;
#define m 4;

int main(int argc, char* argv[])
{
    int arr[n][m];
    bool f=true;
    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++)
            cin>>arr[i][j];
    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++)
            if(arr[i][j]!=a[0][j])
                f=false;
    if(f)
            cout<<"Setirler eynidir.";
    else 
        cout<<"muxtelifdir";
    system("pause");
    return 0;
}

得到一堆错误

在此处输入图像描述

我看不到任何有问题的代码。有什么建议么?我错过了什么?

4

4 回答 4

8

#defines 不以 s 结尾;,因此分号实际上也粘贴在那里,产生

int arr[3;][4;];

这是无效的代码。

永远记住,避免像瘟疫一样的预处理器。

于 2012-06-28T19:22:17.193 回答
4

由于#define是预处理器指令,因此您在数组声明中犯了一些错误。

#define n 3;
#define m 4;

int arr[m][n];

// This translates into 
int arr[3;][4;];

您可以通过删除;定义之后的来修复它:

#define n 3
#define m 4

甚至更好:

static const size_t n = 3;
static const size_t m = 3;

由于上述内容将为您提供您可能使用的其他地方的类型安全性nm.

于 2012-06-28T19:22:30.780 回答
2
#define 

语句后面没有分号。

[EDIT1] 实际上他们可以,但是要小心,因为像这样的预处理器语句会变成严格的文本替换。

于 2012-06-28T19:22:37.170 回答
1

删除#define.

通过或多或少地将内容复制+粘贴到源文件中来扩展定义。因此

int arr[n][m];

扩展为

int arr[3;][4;];

这显然是一个语法错误。你的 for 循环也是如此。

于 2012-06-28T19:22:43.167 回答