预期')'之前';' 令牌G ++

You*_*ufi 2 c++ gcc expression token

GCC一直告诉我:

预期')'之前';' token,
''
'''''''''''''''''''''''''' 在')'令牌之前

我找不到问题.这是有问题的功能:

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;
            }                   
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是导致问题的行:

if(G[k][j] < menorCoste[j] && menorCoste[j]!=infinito){
Run Code Online (Sandbox Code Playgroud)

这是我的变量:

#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];
Run Code Online (Sandbox Code Playgroud)

Mys*_*ial 12

你的宏中有一个额外的分号.

#define infinito 10000;
                      ^
Run Code Online (Sandbox Code Playgroud)

摆脱它.

实际上,您的行已扩展为:

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

或者,根本不要使用宏:

const int MAX_NODOS = 20000;
const int infinito = 10000;
Run Code Online (Sandbox Code Playgroud)