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?
Azt hiszem ez a kód volt.
cserénél a második sorban elhagytam a ; jelet.
Most nem tudom kipróbálni mert nem akar a fordító Win alatt működni.
#include <stdio.h>
#include <stdlib.h>
int main() {
int tomb [9]=
{9,8,7,6,5,4,3,2,1,0
};
int i,j,temp;
for(i=0; i<=8;i++){
for(j=i+1; j<=9;j++){
if (tomb[i]<tomb[j]) {
temp=tomb[i]
tomb[i]=tomb[j]
tomb[j]=temp;
}
}
}
return 0;
}
7:1: error: too many initializers for 'int [9]'
13:1: error: expected ';' before 'tomb'
Két hiba, mindkettőt elég precízen leírta. (illetve plusz egy ; hiány van később, de a szintaktikai hiba miatt azt már nem elemezte ki.
prog.cpp:12:13: error: expected ';' after expression
temp=tomb[i]
^
;
prog.cpp:13:16: error: expected ';' after expression
tomb[i]=tomb[j]
^
;
2 errors generated.
C++ Builder:
[C++ Error] Unit1.c(13): E2225 Too many initializers
[C++ Error] Unit1.c(20): E2379 Statement missing ;
[C++ Warning] Unit1.c(26): W8004 'temp' is assigned a value that is never used
gcc.exe (GCC) 4.8.1
"C:\MinGW\bin\gcc.exe" "C:\Users\Tamás\Desktop\demo.c" -o "C:\Users\Tamás\Desktop\demo.exe"
Process started >>>
C:\Users\Tamßs\Desktop\demo.c: In function 'main':
C:\Users\Tamßs\Desktop\demo.c:7:1: warning: excess elements in array initializer [enabled by default]
};
^
C:\Users\Tamßs\Desktop\demo.c:7:1: warning: (near initialization for 'tomb') [enabled by default]
C:\Users\Tamßs\Desktop\demo.c:13:1: error: expected ';' before 'tomb'
tomb[i]=tomb[j]
^
<<< Process finished. (Exit code 1)
================ READY ================
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!