Dve vprašanji za vas "C" guruji

G

GrandAlf

Guest
Kot relativno novinca na C, imam nekaj vprašanj, ki morda bi lahko nekdo enlignten me.Prvi je, ko je spremenljivka prijavljeni zunaj katere koli funkcije, sem prebral, da bi moralo biti prijavljeni v katero koli nalogo, ki jo uporablja.Ugotovil sem, da deluje v redu, ne počne tega, kdo ve, zakaj je treba to zahtevo?.Tudi pri uporabi RTOS, in ob predpostavki, imam funkcijo v opravilo, ki se ne uporablja zunanje spremenljivke, lahko pokličem, da to kot normalno funkcijo, ali obstajajo kakršne koli težave s časovno razporeditvijo, ki poteka v podatke nazaj in naprej.

Vsa mnenja zahvalo prejeti.

 
8 kwietnia przestały pojawiać się nowe łatki i aktualizacje dla Microsoft Windows XP, co może stanowić wyzwanie dla bezpieczeństwa osób i firm korzystających z tego popularnego systemu operacyjnego. Potencjalnie zagrożonych jest aż 30 proc. wszystkich użytkowników pecetów.

Read more...
 
kadar je spremenljivka razglašena iz funkcije je globalno spremenljivko in se lahko imenuje ali prenesejo na vse, ko je spremenljivka razglašena znotraj funkcija je lokalna tej funkciji sam.
u ne bo treba ponovno prijaviti gloval funkcijo znotraj katere koli druge fn kot pri u pass spremenljivka, ki jih uporablja to.

popravi me, če je zdaj narobe

 
Strinjam se z vami EcraZ, delajo fine, kot je ta, da je svoj šele v knjigi Ansi C, se pravi zunanje spremenljivke mora biti prijavljeni v funcions, ki jih uporabljajo?.Nimam pojma!

 
zunanje spremenljivke so prijavljene v eni datoteki, ampak se uporablja v drugi datoteki prevajalnik mora vedeti, da je spremenljivka deklarirana v drugo datoteko in tako extern se uporablja

npr
file1.c

extern int, / / ki se uporabljajo v tej datoteki, vendar izjavil someother datoteke
int b;

Funkcija telesa;

file2.c

extern int b; / / b ki se uporabljajo v tej datoteki prijavljeni druge datoteke
int;

Funkcija telesa;

 
Bodite previdni, ko izjavlja, lokalnih in globalnih spremenljivk z istim imenom, ker pri spreminjanju spremenljivka znotraj funkcijo z lokalno spremenljivko spremeni le vrednost lokalne spremenljivke in ne enega od svetovnih.
Za dodatne informacije, prosimo, preverite v neki knjigi C poglavja, ki pokriva področje spremenljivk.
Upam, da je pomagal,
Maddin

 
Pravzaprav obstajajo 3 vrste deklaracije (Če nisem worng tiste, colled shranjevanje specifiers v C):
globalni - ki so opredeljena v spis, ne statična ključno besedo.Možno je, da reference iz drugih datotek.Memory dodelitev v sestavi času.
static - definirana s statično ključno besedo.Samo funkcija v datoteki, kjer je opredeljena lahko sklicuje na to.Memory dodelitev se opravi v času pripravijo
začasno_Opredeljeno v funkcijo.Samo, če je ta funkcija opredeljena var se lahko nanašajo na te spremenljivke.
Dodelitev se opravi v času delovanja cacll in ususally dimnika v spomin mestu.

Če imate radi wqould opredeliti var zunaj funkcije, ki jo mora zagotoviti naslednje:
a.če lahko obstajajo 2 klici funkcij hkrati
(prekinitev ali RTOS primerih) ni mogoč, da ne bo prišlo do motenj in en klic funkcijo lahko spremenite svoje vrednosti, medtem ko drugi klic funkcije ni pričakoval, da imam.V tem primeru fucntion se imenuje nonreentrant.Da bi lahko, da delovanje reentrant (več kot en klic za isto fucntion ob istem času), morate:
1.define vars kot začasni (stack dodeljena)
2.Če uporabljate statične ali globalnih spremenljivk, zaščito dostopa do teh vars prekinjajo preko onemogočanje pri dostopu do teh in omogoča, po vseh delovnih mest s tistimi, ki je bilo storjeno.

 
Hvala fantje, sem se zdi, da je napačno razumela razliko med Statična in Global.Prav tako poudarja, hvala za morebitne RTOS probs.Much appreciated.

 

Welcome to EDABoard.com

Sponsor

Back
Top