C++: létezik olyan fordító, amely normálisan képes jelezni a forráskódban lévő hibát és a tényleges előfordulási helyen, nem másik hatszáz helyen?
Többek közt az akadályoz meg hogy megtanuljam a C nyelvet, hogy a fordító nem képes normálisan detektálni a hibát, például lemarad egy ; jel, akkor képes az adott sor előtt hibát jelezni és utána is, végigmegy az egész kódon a hibával és olyan sorokat is problematikusnak talál, amelyekkel semmi probléma nincs.
Ha a ; jel visszakerül a helyére, akkor egyetlen hibaüzenet vagy bármiféle figyelmeztetés nélkül fut a kód.
Pascal fordító normálisan képes megmondani a hibát, sorszámát és nem gördíti végig az egész kódon a hibaüzenetet: azért mert egyetlen ; vagy bármi el lett hagyva, az egész kód még nem rossz...
A nagyon fejlett C miért nem képes erre, esetleg van olyan fordító, amely rendelkezik ezzel a különleges képességgel hogy normálisan sorszám szerint megmondja a hibát és nem kezd el nyavalyogni tökéletes sorok miatt hogy hibásak?
Windows alá milyen fordítót érdemes feltenni, amely képes normálisan jelezni a hibát?
Régen azt hiszem GCC-nél és a DEVCPP-nél is tapasztaltam a hibát.
Fordító elég lenne IDE nélkül, amely eme bonyolult feladattal képes megbirkózni, a Pascal-nak sikerült, reménykedem benne hogy C fordító is van ilyen amely képes erre.
A C vagy C++ sem mindegy, te meg máris kevered..
C++-nál ha lehagysz egy ;-t class után(tipikus hiba ha nem segít az IDE..), szerintem a GCC-ben erre és ehhez hasonlókra konkrétan külön vagy "értelmes hibaüzenet" kapcsoló.
A másik meg az, hogy C-ben mutathatnál ilyen kódot, ami egy ; lehagyásától nem annak a sornak a közvetlen környezetében jelzi a hibát..
"Ha a program pontosan meg tudná állapítani hogy pontosan hol van a hiba a kódban, és mi az, akkor nem kellene hibajelzés, kijavítaná magától."
Sok esetben meg tudja pontosan határozni a fordító, hogy hol és mi a hiba, de nem javítja ki. A programozó dolga megfelelő programot írni, a fordítónak csak hibajelző szerepe van. Eleve a fordító nem tudhatja biztosan, hogy a programozónak mi a szándéka, és lehet, hogy az automatikusan kijavított kód működő programhoz vezet, de nem olyanhoz, ami az elvárásokat kielégíti. Ez esetben a programozónak kéne az amúgy hibás forrásfájlt javítgatnia. Egyszerűbb, ha a fordító csak hibajelző szerepet tölt be, nem hibajavítót.
Ott fogja jelezni a hibát, ahol először gondot okoz.
Az, hogy nem teszel az egyik sorod végére ;-t, nem jelent az adott sorban hibát, sőt lehet még pár sorig szintén nem, ugyanis az értelmező egy szintaxis fát épít fel és ezt addig teszi amíg tudja.
A fordító PONTOSAN ott jelzi a hibát, ahol az okozza. Attól, hogy mást akartál kifejezni és lehagytad a ;-t ezt ő nem tudhatja, ha amúgy a közvetlen környezetében szintaktikailag helyes a kód.
Az hogy "végiggyűrűzik" a hiba az egész programon" az ami nagyon bosszantó és első esetben se volt hajlandó pontosan megmondani hogy mi is a hiba pontosan.
Régen teszteltem egy kóddal, majd előkerítem és bemásolom.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!