Mimo napotke za prazen prostor, ki ne delujejo

T

tebron

Guest
Pozdravljeni, bi rad, da predloži moje vprašanje za vas strokovnjake c, ker sem začetnik in ne vem, kako rešiti problem. Imam funkcijo, ki bo kot parameter kazalec na void, moram opraviti vrednosti ene ali nič za vklop in izklop LED. Poskušal sem spodnjo kodo, vendar, tudi če je prevajalnik brez napak, v resnici je vrednost v spremenljivko bled še vedno nič. Ali mi lahko poveste katero koli navodilo, da deluje rutinsko? Hvala lepa. main (void) {while (1) {TaskLedUno ((bool *) 1);}} void TaskLedUno (void * pFlagLed) {bool Bledu; / / while (1) {bled =* (bool *) pFlagLed; pLED_1 ( bled);}}
 
Vaš problem izvira iz mimo kazalec dobesedno, bo večina prevajalnikov zbere kodo brez napake, pa je odvisno od OS, če ta obstaja, bo vrgel o nedovoljenem dostopu na tekmovanje v teku. Poskusite to kodo namesto:
Code:
 main (void) {bool zastava = (bool) 1; / / ali / / bool zastavo = TRUE; / / če je določena, medtem ko (1) {TaskLedUno (in zastavo);}} void TaskLedUno ( void * pFlagLed) {bool Bledu; / / while (1) {bled =* (bool *) pFlagLed; pLED_1 (Bled);}}
kodo zgoraj pripravlja in deluje brez napak in proizvaja želenega rezultata. Ciao
 
Hi, Ali obstaja način, da prenese vrednost 1 ali 0, ne da bi mimo spremenljivke?
 
Ja, to je mimo vrednost, ne reference.
Code:
 main (void) {while (1) {TaskLedUno ((bool) 1), / / ali / / TaskLedUno (TRUE);}} void TaskLedUno (bool FlagLed) {bool Bledu; / / while (1) { bled = FlagLed; pLED_1 (Bled);}}
Če poskusite prenesti in naslov stalnega ali dobesedno, "& (bool) 1," najbolj prevajalniki bodo, držijo. Poleg tega, kaj je točka, ki imajo rutinsko, "void TaskLedUno (void * pFlagLed)," če boste na silo statičnih pogojih v vašo dejansko kodo? Lahko pa tudi opredeliti dve rutino, "void LEDON (void)" in "void LedOff (ničen)." Upam, da pomaga info. Ciao
 
Zakaj ne samo omogočiti lažje? void TaskLEDUno (Bool On); Če želite vklopiti LED, pokličite TaskLEDUno (1) in za izklop LED, pokličite TaskLEDUno (0).
 
Zakaj ne samo omogočiti lažje? void TaskLEDUno (Bool On); Če želite vklopiti LED, pokličite TaskLEDUno (1) in za izklop LED, pokličite TaskLEDUno (0)
Da.. Mimo primer vrednost sem objavil že prej, sklic post # 4, je točno to funkcijo. Ampak, vaš pravi SkyHigh, program Tebron je ne kaže uporabljati zelo previdno "void *." Vendar, ne vedoč prihodnje načrte Tebron za "void TaskLedUno (void * pFlagLed)" rutinsko, sem bil tekoč, da zadrži moji sodbi v zvezi z uporabo "void *." V večjih shemi stvari, če Tebron bi kasneje pass "void TaskLedUno (void * pFlagLed)" kot funkcija kazalec v drugi rutinsko, potem bi bilo smiselno.
 

Welcome to EDABoard.com

Sponsor

Back
Top