Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so:laboratoare:resurse:c_tips [2015/03/04 23:39]
razvan.crainea [Link-uri utile]
so:laboratoare:resurse:c_tips [2016/06/05 17:51] (current)
adrian.stanciu [Folosirea specificatorului static pentru variabile globale și funcții]
Line 64: Line 64:
  
 Un coding style bun, folosit consecvent, face mai ușoară și mai rapidă înțelegerea unui cod. Marile proiecte software îsi stabilesc un coding style și realizează utilitare pentru verificarea automată a acestuia. ​ Un coding style bun, folosit consecvent, face mai ușoară și mai rapidă înțelegerea unui cod. Marile proiecte software îsi stabilesc un coding style și realizează utilitare pentru verificarea automată a acestuia. ​
-[[https://​github.com/​torvalds/​linux/​blob/​master/​scripts/​checkpatch.pl | Checkpatch.pl]] este un script ​Pearl folosit în kernelul Linux pentru a verifica coding style-ului patch-urilor ce urmează a fi submise.+[[https://​github.com/​torvalds/​linux/​blob/​master/​scripts/​checkpatch.pl | Checkpatch.pl]] este un script ​Perl folosit în kernelul Linux pentru a verifica coding style-ului patch-urilor ce urmează a fi submise.
  
 ===== Limbaj ===== ===== Limbaj =====
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 =====
so/laboratoare/resurse/c_tips.1425505174.txt.gz · Last modified: 2015/03/04 23:39 by razvan.crainea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0