Erros pawn

From SA-MP Wiki

Jump to: navigation, search

Erros do compilador


Erro 001 - expected token: O compilador esperava encontrar um simbolo mas encontrou outro, isso ocorre no fechamento de linhas, parênteses, chaves, colchetes. Normalmente a linha apontada é a debaixo do erro.

</b>Exemplos:</b>

new a
new b;
// Acima irá apontar que esperava encontrar ; mas encontrou o new e alinha apontada sera a new b;


Erro 002 - only a single statement (or expression) can follow each "case":

Esse erro acontece dentro no controlador switch, o erro foi colocado um expressão fora do case. Esse erro pode gerar outros erros como o do simbolo indefinido caso tente declarar uma variável fora do case e dentro do switch.

Exemplo:

new a;
switch(a){
    new b;
    if(a == 7){
    }
    case 19:{
    }
}

No código acima a declaração da variável b e a condição se a é igual a 7 esta fora do case e dentro do switch, gerando vão somente este erro mas também que o simbolo b não foi definido.

Erro 003 - declaration of a local variable must appear in a compound block:

Exemplo:

new bool: a = true;
if(a)
   new bool: b = true;

No código acima irá gerar este erro, pois a declaração de b esta em um bloco simples e a declaração deve ser em um bloco composto. O bloco composto não utiliza apenas um linha igual ao composto que precisa do uso de chaves para indicar o início e o fim do bloco.

Bloco composto:

new bool: a = true;
if(a){//Indica o início do bloco
    //Bloco composto
}//Indica o fim do bloco


Erro 017 - undefined symbol:

Neste erro o compilador avisa que você esta tentando usar um simbolo que não foi definido, esse simbolo pode ser uma definições/macros, variável, função, constantes.


Exemplo:

main(){
    //Função
    Teste();
 
    //Variável
    var = 5;
 
    //Definição 
    new v3 = VALOR_PADRAO;
 
}

Se a função Teste, ou a variável var ou a definição VALOR_PADRAO não estiver definida irá gerar este erro.


Se o um simbolo estiver definido e mesmo assim o compilador apontar que ele não foi definido, pode ser que ele esteja dentro de uma condição de pré-compilação:

#if defined DEFINIR_VAR
new var = 5;
#endif
 
printf("var %d", var);


No código acima o compilador poderá apontar que a variável var não foi definida, pois ela não será compilada se DEFINIR_VAR for definido.