This shows you the differences between two versions of the page.
so:laboratoare:resurse:c_tips [2015/05/17 10:07] adrian.stanciu [Folosirea de tool-uri pentru verificarea coding style-ului] |
so:laboratoare:resurse:c_tips [2016/06/05 17:51] (current) adrian.stanciu [Folosirea specificatorului static pentru variabile globale și funcții] |
||
---|---|---|---|
Line 449: | Line 449: | ||
int m = *(a + i); | int m = *(a + i); | ||
</code> | </code> | ||
+ | |||
+ | ==== Folosirea specificatorului "static" pentru variabile globale și funcții ==== | ||
+ | |||
+ | O variabilă globală sau o funcție declarată cu specificatorul "static" are internal [[http://en.cppreference.com/w/c/language/storage_duration | linkage]], adică poate fi referită doar din translation unit-ul respectiv (un translation unit reprezintă un fișier sursă .c împreună cu toate fișierele header pe care acesta le include). | ||
+ | |||
+ | Avantajele acestei practici sunt: | ||
+ | * simbolurile sunt vizibile doar în translation unit-ul respectiv; astfel, se evită poluarea namespace-ului global și se reduc șansele conflictelor de nume | ||
+ | * încapsulare: exte expusă doar interfața publică a modulului (nu și obiectele și funcțiile interne ce contribuie la implementarea interfeței) | ||
===== Utilizare API ===== | ===== Utilizare API ===== |