[Ajuda] Warnings
#1

Como corrigir isto: "literal array/string passed to a non-const parameter"?

Estes warnings ( Cerca de 700 ), apareceram depois que eu atualizei o compilador para a versгo 3.10.9. Jб procurei sobre e nгo entendi muito bem como corrigi-los.

https://github.com/pawn-lang/compile...st-Correctness
Reply
#2

Vocк deve atualizar sua versгo do YSI para 5.x, que deve corrigir esses avisos.

https://github.com/pawn-lang/YSI-Includes/tree/5.x
Reply
#3

Atualizei, apуs isso, tive que baixar alguns arquivos manualmente que estavam com as suas pastas vazias e estavam dando erros. indirection, code-parse, md-sort.

Mesmo assim, os warnings continuam.

Nгo sei se isso interfere, mas, agora ele pede pra definir por <YSI_Coding\y_hooks> e <YSI_Data\y_iterate>
antes era apenas YSI\y_iterate e YSI\y_hooks. E mesmo definido o y_hooks como ele pede, o warning continua.

pawno\include\YSI\y_hooks.inc(80) : warning 237: user warning: Please use `#include <YSI_Coding\y_hooks>`
Reply
#4

Vocк usa mуdulos? mudou em todos eles?
Reply
#5

Nгo utilizo modulos
Reply
#6

Isso estб relacionado a semвntica da assinatura da funзгo.

Algo como,

pawn Code:
// Vai exibir o warning - literal array/string passed to a non-const parameter
Exemplo(string[])

// Nгo vai exibir o warning
Exemplo(const string[])
Reply
#7

Eu nгo entendi uma coisa, jб que essas strings sгo constantes, elas podem ter o seu valor alterado? Se sim, como?
Reply
#8

Quote:
Originally Posted by NWDMadara
View Post
Eu nгo entendi uma coisa, jб que essas strings sгo constantes, elas podem ter o seu valor alterado? Se sim, como?
Nгo! constantes nгo podem ter seus valores alterados.

pawn Code:
main() {
    Exemplo("Isso й um exemplo");
}

Exemplo(string[]) {
    print(string);
}
No exemplo acima foi declarado o parвmetro string, mas em nenhum momento o mesmo teve seu valor modificado.

Й exatamente por isso que й mostrado o warning.
Reply
#9

Nгo podem ser alteradas.

Exemplo:

PHP Code:
#include "a_samp"

f(arr[]) {
    
printf("%s"arr);
}

test() {
    
/*
        Vai exibir o warning - literal array/string passed to a non-const parameter
    */
    
f("abc");

    
/*
        Nгo vai exibir o warning - literal array/string passed to a non-const parameter
    */
    
new
        
string[] = "abc";

    
f(string);
}

main () {
    
test();

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)