我在 Microsoft Visual C++ 2010 Express 中执行的 C 项目中遇到了一个非常奇怪的语法错误。我有以下代码:
void LoadValues(char *s, Matrix *m){
m->columns = numColumns(s);
m->rows = numRows(s);
m->data = (double*)malloc(sizeof(double) * (m->rows * m->columns));
int counter = 0;
double temp;
bool decimal;
int numDec;
while(*s != '\0'){
.
.
.
}
}
当我尝试构建解决方案时,我得到“缺少的';' 我的所有变量(temp、counter 等)的 before type”错误,并尝试在 while 循环中使用它们中的任何一个都会导致“未声明的标识符”错误。我确保 bool 是通过做定义的
#ifndef bool
#define bool char
#define false ((bool)0)
#define true ((bool)1)
#endif
在 .c 文件的顶部。我在 Stack Overflow 上搜索了答案,有人说旧的 C 编译器不允许你在同一个块中声明和初始化变量,但我认为这不是问题,因为当我注释掉这些行时
m->columns = numColumns(s);
m->rows = numRows(s);
m->data = (double*)malloc(sizeof(double) * (m->rows * m->columns));
所有的语法错误都消失了,我不知道为什么。任何帮助表示赞赏。
---EDIT--- 请求了 Matrix 的代码
typedef struct {
int rows;
int columns;
double *data;
}Matrix;