Nem tudom, van-e jelentősége, de inkább megírom, hogy Ubuntu alatt ismerkedek az ncurses-szal. Két memóriaterület egyezése vagy eltérése esetén más-más színnel íratnél ki egy byte-ot, de megdöbbenésemre három byte-os random értékeket kapok, mint pl. CCBE80
Addig butítottam a dolgot, míg már csak azt gyanítom, hogy nem használhatok lokális változókat?
Ez az első ujjgyakorlatom, úgyhogy ne nagyon csesszetek le, de a Google nem segített megmagyarázni, mi van itt. Segítség...
update_regs(ramdump, ramtmp)
{
char c, lpos;
lpos=1;
c=1;
mvprintw(lpos,4,"%02X "),c;
// innentől minden kigyilkolva
/*
for (lpos=1;lpos<=32;lpos++)
{
c=(char *) ramdump;
if ((char *) ramtmp == c)
{ COL } // macro to set default color
else
{ COL_R } // macro to set red color
mvprintw(lpos,4,"%02X "),c;
}
*/
}
Hozzászólások
mvprintw(lpos,4,"%02X ",c);
igy elsore.
ez mindenfele sikitas nelkul lefordul?
2011-ben azert igy illik tipusokat megadni. (fuggveny visszatero ertek, argumentumok..)
---------------------------------------------------------------------------------------
Unix is simple. It just takes a genius to understand its simplicity. — Dennis Ritchie
, operátor miatt elvben simán fordul. mvprintw int-et ad vissza, az egész sor egy kifejezés, amelynek visszatérési értéke c.
Szép nyelv a C!
"...az egész sor egy kifejezés, amelynek visszatérési értéke c."
Amit utana eldob.. es a fordito nem warningol meg ninozik orrba-szajba, hogy biztos ezt akartad? Kotve hiszem..
Neha a GCC-nek kulon kervenyt kell benyujtani, hogy a ciklus feltetelnel az a konkret = az valoban az akart lenni, es nem ==, szoval hagyja a warningot (bar egy plusz zarojel segit).
--
Always remember you’re unique, just like everyone else.
Attól még hiba nélkül lefordul. A warningokat sajna rossz szokás skippelni.
Szokás szerint az iránt érdeklődnék, hogy mostanában a hírekben itt-ott előforduló alternatívákkal mit kapsz? Azaz szeretnék látni egy GCC, egy CLang/LLVM és egy PCC kimenetet az ominózus pár sorról. Ebből a PCC-től nem sokat várok, mert tudtommal mesze nem a használható hibaüzenetek a célja a fejlesztésének, de a CLang/LLVM-ről azt tartják, hogy sokkal fejlesztőbarátabb a dolog.
Más kérdés, hogy valóban rossz szokás a warningokra nem figyelni. Hej, mikor még a múlt évezredben a főnököm azt mondta, hoy addig nincs átvéve a szoftverem, míg a lint (*) bármit is kiköp magából. Ezt csak addig tartotta, míg egy kb helloworld.c -re megmutattam, hogy mit mond a lint.
(*) Aki nem ismerné, a lint egy C-programkód ellenőrző volt
a következő program -Wall -pedantic kapcsolókkal gcc-vel bármiféle figyelmeztetés nélkül lefordul:
amire vártam, hogy sír, az az, hogy:
-argc-nek, argv-nek nincs megadva tipus
-azt a 99-et a semminek adja vissza
-a tömbnél megcseréltem az offsettet a névvel.
még egy érdekes anomália a stringek fűzése. ezek ilyen kevésbé ismert marhaságai a c-nek.
obfuscated c contestben mindegyiket sokat látni.
gcc (GCC) 4.6.1 20110819 (prerelease)
---------------------------------------------------------------------------------------
Unix is simple. It just takes a genius to understand its simplicity. — Dennis Ritchie
clang/llvm:
clang version 2.9 (tags/RELEASE_29/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
---------------------------------------------------------------------------------------
Unix is simple. It just takes a genius to understand its simplicity. — Dennis Ritchie
Hát az i[a] tipusú viccek se újak (és szintén szabványos C-s agymenés), ellenben itt az eredmény:
Az azért rendes, hogy a clang legalább valamit nyafog :-)
Hát, meg kéne nézni, nálam sajna csak gcc van. Amúgy elvben elhasalnia egyiknek sem szabad rajta, lévén teljesen korrekt C kód volt. Warning - na ott tényleg lehetnek bajok.
De remélem ebből nem lesz újabb malloc téma... :-)
Hát igen... most mit mondjak,,, ez nagyon kezdő baki volt. Köszönöm szépen mindkettőtöknek !
Nekem ne köszönd, nem én vettem észre :-).
Csak elmondtam, miért fordul le. Ami meg csak ínyencségként jó.
nincs mit. c-vel nagyon gyorsan labon tudja magat loni az ember es sokszor eszrevetlenul. egy jo debugger ismerete es hasznalata latvanyosan meg tudja konnyiteni az eletet. meg raszokni minden ellenorzesere, meg debug forditasban a stderr-re kiiratasara. pl:
es -DDEBUG kapcsoloval forditani teszteleskor
---------------------------------------------------------------------------------------
Unix is simple. It just takes a genius to understand its simplicity. — Dennis Ritchie
Köszi a tippet. Én is találtam valamit, ami érdekes lehet:
http://dirac.org/linux/gdb/07-Debugging_Ncurses_Programs.php
Ez hasznosnak tunik.
---------------------------------------------------------------------------------------
Unix is simple. It just takes a genius to understand its simplicity. — Dennis Ritchie