GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Tanuljunk PAWN nyelvet => A témát indította: Sramm - 2012. Június 29. - 18:08:48

Cím: [Leírás] Kicsit a hibákról,figyelmeztetésekrõl (Errorokról,Warningokról)
Írta: Sramm - 2012. Június 29. - 18:08:48
A másik fórumon nem nagyon értékelték, de sok munkám van benne, hátha itt megbecsülik :)
Általános Pawno Hibalista


A leírás tartalmazza a leggyakoribb Pawno hibákat (errorokat) és figyelmeztetéseket (warningokat) egy SA-MP szkript fordításánál.
Ha a fordító hibát talál egy fájlban, akkor üzenetet küld, ebben a sorrendben:
 

Példa:
 
hello.pwn(3) : error 001: expected token: \";\", but found \"{\"

 
Megjegyzés: A sor száma nem mindig azonos a hibás sor számával.
 
Hibák (errorok) kategóriái


A hibák 3 osztályra sorolhatók:
 

Hibák

 

 

Végzetes Hibák

 


 

Figyelmeztetések

 

Gyakori hibák


001:expected token
Egy szükséges zárás hiányzik, ami lehet \";\" jel, vagy vesszõ: \",\"
Például:
 
error 001: expected token: \";\", but found \"return\"

 

main()
{
    print(\"test\") // Errõl a sorról hiányzik az adott jel
    return 1;
}

 
002:only a single statement (or expression) can follow each \"case\"
Minden esetben egy switch-nek különféle \"case\" értékei vannak. A hiba akkor szokott megjelenni, ha egy sorban egy \"case\"-hez több hozzárendelés van.
Ahhoz, hogy több hozzárendelést adjunk hozzá, kapcsos zárójelet kell hozzáadnunk, nem lehetnek egymás mellett.
 
Például:
 
error 002: only a single statement (or expression) can follow each \"case\"

 

main()
{
    switch(x)
    {
        case 0: print(\"hello\"); print(\"hello\");
    }
    return 1;
}

 
A fenti kódhoz egyéb hibák /figyelmeztetések is megjelennek:
 

error 002: only a single statement (or expression) can follow each \"case\"
warning 215: expression has no effect
error 010: invalid function or declaration

 
Javítva:
 

main()
{
    switch(x)
    {
        case 0:
        {
            print(\"hello\");
            print(\"hello\");
        }
    }
    return 1;
}

 
Gyakori figyelmeztetések


211: possibly unintended assignment
Általában az \"if\" parancsnál jelenik meg, az \"=\" jelekkel szokott lenni a probléma. Nem mind egy, hogy egyet, vagy kettõt írunk.
Példa:
 

if(a = 2) // figyelmeztetés (Ugyanis ezt akkor használjuk, ha az adott változónak a 2-es értéket akarjuk megadni.)
if(a == 2) // nincs figyelmeztetés
if((a = 2)) // nincs figyelmeztetés; 2-es értéket kap a változó és a kifejezés mindig igaz értéket ad vissza.

 
217: loose indentation
A fordító ezt a figyelmeztetést adja ki, ha a kódban soreltolódás van.
Példa:
Jó példa:
 

if(condition)
{
    action();
    result();
}

 
Rossz példa:
 

if(condition)
{
    action();
  result();
}

 
Forrás: SA-MP Wiki
Cím: [Leírás] Kicsit a hibákról,figyelmeztetésekrõl (Errorokról,Warningokról)
Írta: lackos888 - 2012. Június 29. - 20:23:40
Nem rossz, hozzátenném a sortolódásnál belehet állítani a tabulátort.
Ha nem szeretnéd, hogy, ne írja ki a sortolódást, akkor ezt kell beraknod az includek után:
 
#pragma tabsize 0
Cím: [Leírás] Kicsit a hibákról,figyelmeztetésekrõl (Errorokról,Warningokról)
Írta: ChuckNorris - 2012. Június 30. - 00:46:25
Nekem tetszik, nem szeretném ha elveszne ezért engedelmeddel átrakom a tanulós részbe, tervezed még bõvíteni?
Cím: [Leírás] Kicsit a hibákról,figyelmeztetésekrõl (Errorokról,Warningokról)
Írta: Sramm - 2012. Június 30. - 14:20:09
Idézetet írta: ChuckNorris date=1341009985\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"23511\" data-ipsquote-contentclass=\"forums_Topic
Nekem tetszik, nem szeretném ha elveszne ezért engedelmeddel átrakom a tanulós részbe, tervezed még bõvíteni?
 
Igen, még szeretnék egy hiba listát írni :)