Paraula clau volàtils

S

sacrpio

Guest
Què compilador d'acció té, si es declara una variable com volàtil. Si us plau, digui en termes d'accions de compilació. Gràcies per endavant
 
Mitjans volàtils que una variable pot ser modificada a partir d'una font externa (com la interrupció) i l'Optimitzador del compilador no pot assumir que la variable es manté sense canvis entre els accessos. Amb els microcontroladors, per exemple, els ports es declaren com volàtils en el fitxer de capçalera d'un processador. Aquest és el manual d'Hi-Tech C: El qualificador de tipus volàtil s'utilitza per indicar al compilador que un objecte no pot ser garantit per mantenir el seu valor entre els accessos successius. Això evita que l'Optimitzador de l'eliminació de referències aparentment redundants a objectes declarats volàtils, ja que pot alterar el comportament del programa per fer-ho. Tots els d'entrada / sortida i les variables que poden ser modificades per les rutines d'interrupció ha de ser declarada volàtils, per exemple: signar volàtils p_a caràcters @ 0x05; considera Espero que això ajudi i millor
 
Verry exacta explicació de C-Man! Només desitjo afegir aquest missatge a C-Man: Dont abús de la paraula clau volàtil! A primera vista es veuen temptats a declarar totes les variables en el seu programa de volàtils (ja que es poden utilitzar safelly en interupts, per exemple) cada vegada que es declara una variable volàtil, la reserva de compilador d'una ubicació de memòria només per a aquesta variable, aquesta ubicació no es pot s'utilitzaran més pel processador de la plantilla (que pot alliberar recursos de memòria quan no nedeed). En un processador amb la memòria RAM embed baixa, el codi generat s'optimitza mal (és a dir: el temps d'execució sota)
 
Bé els meus dos centaus: # 1 compiladors tracten d'optimitzar el codi tant com els sigui possible. En douing pel que pot optar per ignorar les declaracions d'assegurança que vostè va escriure, simplement perquè en la seva opinió, que pot ser redundant. Per exemple:
Code:
 {int i; i = 10; i = 20; printf ("\ n% d", i);}
clarament, la primera tasca és redundant i el compilador tria no fer cas quan s'optimitza el codi. # 2 És possible que hi hagi situacions en les quals aquest tipus d'optimitzacions no són desitjables. Per exemple, la situació de llista de C-Man. En general, si vostè té una variable que pot ser modificat d'algun altre fil, a continuació, en aquests casos, les optimitzacions no s'ha de permetre. Ara la pregunta és com indicar al compilador que l'optimització no es realitzarà per a aquesta variable en particular? Sí que ho has endevinat! us ho volàtil.
 

Welcome to EDABoard.com

Sponsor

Back
Top