QT Creatorban ez milyen hiba?
A ciklusaim nem tetszenek neki, ezt a hibát kapom:
main.c:58: error: 'for' loop initial declarations are only allowed in C99 mode
for (int i=0; i<180; i++)
^
meg ilyet is kapok:
main.c:76: error: redefinition of 'i'
for (int i=0; i<1000; i++)
^
van ilyen is:
main.c:86: error: conflicting types for 'i'
for (intt i=1; i<=db; i++)
^
Ezek milyen hibák, hogy javítom ki őket? A másik meg, hogy rengetek sárga jelzést kapok, ezek elvileg olyan hibák, amik ellenére lefut, ezek miért lehetnek? Másolgassam be azokat is ide?
Ezek a hibaüzenetek pedig nagyon világosak..
"'for' loop initial declarations are only allowed in C99 mode "
A fordítód a jelenlegi beállítások szerint nem C99, hanem egy korábbi (90% C90) szabványt szeretné betartatni, ahol a for fejében nem deklarálhatsz/definiálhatsz változót, szóval az i-t előbb kéne létrehozni.
"redefinition of 'i'"
Ez annyira tiszta, hogy nem is írok ide semmit.
"conflicting types for 'i'"
Két különbötő típussal deklaráltad/definiáltad az i-t (ez is egyértelmű..)
Köszönöm a válaszodat! Nekem nagyon nem egyértelmű, nagyon rossz az angol tudásom, programozni is csak nem rég kezdtem el és hibákkal nem foglalkoztam még, már hogy mi mit jelenthet, ha volt valami gond, akkor addig szerencsétlenkedtem még meg nem oldódott. Kijavítottam 33 hibát, 1 maradt "conflicting types for 'i'" címszóval. Nem értem miért írja ki, mert elvileg csak egy típussal deklaráltam. A másik hiba, amitől még lefordítja és futtatja:
main.c:203: warning: format '%e' expects argument of type 'double', but argument 2 has type 'ld' [-Wformat=] printf(...);
Ha jól értem az a gondja, hogy %lf-el íratok ki, de nem double-t, hanem ld-t. Ezzel mit tudok kezdeni?
Azt a részt (printf-es problémád) is másold be ide szerintem.
"main.c:86: error: conflicting types for 'i'
for (intt i=1; i<=db; i++)"
Itt meg szerintem az a probléma, hogy "int i"-ként deklaráltad korábban, most pedig "intt i" ként próbálod. Két t-vel!
...main.c:203: warning: format '%e' expects argument of type 'double', but argument 2 has type 'ld' [-Wformat=]
printf("\n Value of K: %e\n", K_ae);
^
Így nézz ki egészében.
intt-et én csináltam típusmódosítókkal:
typedef unsigned long long int intt;
Ctrl+f-el rákerestem, de tényleg nem deklarálok sehol máshol i-t, csak az elején egyszer, intt-el.
K_ae típusa long double
a db, pedig ugyanolyan intt típusú, mint az i
A K_ae-s problémára azt találtam, hogy long double-höz %le -t kellene használni. Valószínűleg arra figyelmeztet, hogy ha túl nagy szám lenne abban a változóban, akkor nem azt írná ki, amit vársz.
A másik problémára visszatérve:
A for cikluson belül használod az i változót?
Vagy esetleg a ++-szal lehet baja, de már tényleg csak találgatok...
Nem tudom, hogy hogy, de megoldódott az i-s probléma, l-re volt igaz a dupla deklarálás, azt kijavítottam. Továbbfordította és megint kaptam egy rakat hibát, ezúttal a "grafikus" parancsokra:
main.c:451: error: undefined reference to `_clrscr'
ugyanígy a _gotoxy-ra is, ez miért lehet?
Egyébként köszönöm a sok segítséget! Eddig más környezetet használtam és most térek rá a QT-re, ezért van ez a rengeteg hiba, a másikban ezek jók voltak.
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!