“;错误:应为'''';或';)';在数值常量之前”;快到我的密码了
我在尝试运行此c程序时遇到此错误: 该程序有两个以上的文件不会产生问题。 也许问题与定义无关?我可以做一个常数吗 头文件:“;错误:应为'''';或';)';在数值常量之前”;快到我的密码了,c,C,我在尝试运行此c程序时遇到此错误: 该程序有两个以上的文件不会产生问题。 也许问题与定义无关?我可以做一个常数吗 头文件: #ifndef NUMBERGAME_H_ #define NUMBERGAME_H_ #define COLSIZE 4 #define ROWSIZE 5 void creatGameMatrix(int* mat, int ROWSIZE , int COLSIZE); void shuffleMatrix(int* mat, int ROWSIZE , int C
#ifndef NUMBERGAME_H_
#define NUMBERGAME_H_
#define COLSIZE 4
#define ROWSIZE 5
void creatGameMatrix(int* mat, int ROWSIZE , int COLSIZE);
void shuffleMatrix(int* mat, int ROWSIZE , int COLSIZE);
#endif /* NUMBERGAME_H_ */
文件:
#include <stdio.h>
#include "NumberGame.h"
//creat an ordered matrix N*M
void creatGameMatrix(int* mat, int ROWSIZE , int COLSIZE)
{
int number = 1;
for (int i = 0; i < ROWSIZE; ++i) {
for (int j = 0; j < COLSIZE; ++j) {
mat [i][j] = number++;
}
}
}
void shuffleMatrix(int* mat, int ROWSIZE , int COLSIZE)
{
int row1, col1, row2, col2;
do{
row1 = 1 + rand() % (ROWSIZE) ;
row2 = 1 + rand() % (ROWSIZE) ;
col1 = 1 + rand() % (COLSIZE) ;
col2 = 1 + rand() % (COLSIZE) ;
}while (row1 == row2 || col1 == col2);
}
#包括
#包括“NumberGame.h”
//创建一个有序矩阵N*M
空矩阵(int*mat,int ROWSIZE,int COLSIZE)
{
整数=1;
对于(int i=0;i
错误指向ROWSIZE
#define COLSIZE 4
#define ROWSIZE 5
void creatGameMatrix(int* mat, int ROWSIZE , int COLSIZE);
这毫无意义。它扩展到
void creatGameMatrix(int* mat, int 5, int 4);
这显然是不对的(特别是函数参数名称必须是标识符,4
和5
不是标识符)。选项如下:
rowsize
和colsize
,并在例程中使用这些参数。使用ROWSIZE
和COLSIZE
定义在中传递值李>
这毫无意义。它扩展到
void creatGameMatrix(int* mat, int 5, int 4);
这显然是不对的(特别是函数参数名称必须是标识符,4
和5
不是标识符)。选项如下:
rowsize
和colsize
,并在例程中使用这些参数。使用ROWSIZE
和COLSIZE
定义在中传递值李>
不能声明名为
ROWSIZE
的函数参数,因为ROWSIZE
是一个#定义。预编译器将用5替换ROWSIZE
。COLSIZE
也是如此,它使标题成为void shuffleMatrix(int*mat,int 5,int 4)代码>。这不是有效的代码
由于您已经定义了它们,您可以将它们作为参数删除到函数中,因为它们可以在该文件中的任何位置使用。您不能声明名为ROWSIZE
的函数参数,因为ROWSIZE
是一个定义。预编译器将用5替换ROWSIZE
。COLSIZE
也是如此,它使标题成为void shuffleMatrix(int*mat,int 5,int 4)代码>。这不是有效的代码
由于您已经定义了它们,您可以将它们作为参数删除到函数中,因为它们可以在该文件中的任何位置使用。您不能将这些宏用作函数参数的名称。宏展开后,您将得到:
void creatGameMatrix(int* mat, int 5 , int 4);
void shuffleMatrix(int* mat, int 5 , int 4);
这毫无意义——函数参数必须是有效的变量名,而不是数字
为函数参数使用不同的名称,然后在调用函数时使用宏
void creatGameMatrix(int* mat, int rowsize , int colsize);
void shuffleMatrix(int* mat, int rowsize , int colsize);
或者您可以完全忽略这些参数:
void creatGameMatrix(int* mat);
void shuffleMatrix(int* mat);
不能将这些宏用作函数参数的名称。宏展开后,您将得到:
void creatGameMatrix(int* mat, int 5 , int 4);
void shuffleMatrix(int* mat, int 5 , int 4);
这毫无意义——函数参数必须是有效的变量名,而不是数字
为函数参数使用不同的名称,然后在调用函数时使用宏
void creatGameMatrix(int* mat, int rowsize , int colsize);
void shuffleMatrix(int* mat, int rowsize , int colsize);
或者您可以完全忽略这些参数:
void creatGameMatrix(int* mat);
void shuffleMatrix(int* mat);
如果ROWSIZE
和COLSIZE
是固定的,那么您可能不需要将它们传递给函数。只需删除int ROWSIZE、int COLSIZE
参数。如果ROWSIZE
和COLSIZE
是固定的,则可能不需要将它们传递给函数。只需删除int ROWSIZE,int COLSIZE
参数。我将其更改为有效变量名称我将其更改为有效变量名称