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