Kde je chyba - program v C
František Burian
BuFran na seznam.cz
Středa Říjen 2 13:44:37 CEST 2013
Předpokládám že K_EE_SPOJENI je míněna adresa konstanty v eeprom, a kód měl
vypadat takto:
if (EE_Cti(K_EE_SPOJENI) == 1) {
Spust_neco()
}
Kód měl přečíst honotu na adrese K_EE_SPOJENI a pokud byla hodnota v eeprom
== 1, pak mělo být "něco" spuštěno.
Po šotku který přemístil závorku se kód bude chovat tak, že bue fungovat
správně jen za předpokladu, že K_EE_SPOJENI bude odpovídat adrese 1. Po
přemístění na jinou adresu bude číst vždy z adresy eeprom 0.
C# je striktně typový jazyk, takže by to vyhodilo chybu (u08 není bool,
který očekává if)
Pascal je též striktní a vyžaduje komparaci takže též selže.
C uvažuje TRUE = 1, FALSE = 0, takže to projde bez mrknutí oka výšeuvedeným
způsobem :-)
Mimochodem na psaní kódu existují konvence (style check), a dát volání
funkce dovnitř IFu je prakticky ve všech konvencích co znám přísně zakázáno.
(Právě z důvodu odhalování takovýchto zákeřných chyb).
S pozdravem,
Franta Burian
---------- Původní zpráva ----------
Od: Michal Gregor <a2x1nptda8 na email.cz>
Datum: 2. 10. 2013
Předmět: Kde je chyba - program v C
"Kde je chyba v nasledujicim radku?
if (EE_Cti(K_EE_SPOJENI == 1)) {
Spust_neco()
}
Funkce vypada zhruba takto:
u08 EE_Cti(u08 Adresa) {
return EEPROM(Adresa);
}
Zajimalo by mne jak se tato chyba projevi v jinych jazycich treba C#, Java,
Paskal. Bude kompilator hlasit chybu?
Michal
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list"
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20131002/8e10bcfd/attachment.htm>
Další informace o konferenci Hw-list