期望')'之前';' token g++

Expected ‘)’ before ‘;’ token G++

本文关键字:token g++ 期望 之前      更新时间:2023-10-16

GCC一直告诉我:

expected ') ' before '; ' token,
') '标记前预期的主表达式
期望';' before ') '标记

我找不到问题。下面是有问题的函数:

void prim(){
    prepararEstructuras();
    int min,k;  
    for(int i=1;i<nnodos;i++){
        min = menorCoste[1];
        k = 1;
        for(int j=2;i<nnodos;j++)
            if(menorCoste[j] < min){
                min = menorCoste[j];
                k = j;
            }
        solucion[k][masCercano[k]] = G[k][masCercano[k]];
        menorCoste[k] = infinito;
        for(int j=1;j<nnodos;j++)
            if(G[k][j] < menorCoste[j] && menorCoste[j]!=infinito){
                menorCoste[j] = G[k][j];
                masCercano[j] = k;
            }                   
    }
}

这是引起问题的行:

if(G[k][j] < menorCoste[j] && menorCoste[j]!=infinito){

这里是我的变量:

#define MAX_NODOS 20000
#define infinito 10000;
int nnodos;
int nAristas;
int G[MAX_NODOS][MAX_NODOS]; 
int solucion[MAX_NODOS][MAX_NODOS];
int menorCoste[MAX_NODOS];
int masCercano[MAX_NODOS];

宏中有一个额外的分号。

#define infinito 10000;
                      ^

把它扔掉

事实上,你的行被扩展成这样:

if(G[k][j] < menorCoste[j] && menorCoste[j]!=10000;){
                                                  ^ does not belong here

或者,根本不使用宏:

const int MAX_NODOS = 20000;
const int infinito = 10000;

请学会使用良好的风格。在外部语句(例如包含其他语句的语句)中省略括号是一种非常糟糕的风格

然而,实际的错误在于一些预处理语句及其生成的代码:#define infinito 10000;在表达式之间产生了一个额外的分号,而您并不期望有这样一个额外的表达式。特别是在你根本不需要分号的地方

相关文章: