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 21:42]
adrian.stanciu
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 =====
Line 487: Line 495:
   *[[http://​www.gnu.org/​software/​libc/​manual/​ | Documentația GNU C Library]]   *[[http://​www.gnu.org/​software/​libc/​manual/​ | Documentația GNU C Library]]
   *[[http://​linux.die.net/​man/​1/​indent | Tool pentru indentare]]   *[[http://​linux.die.net/​man/​1/​indent | Tool pentru indentare]]
- 
-~~DISCUSSION:​off~~ 
so/laboratoare/resurse/c_tips.1425498150.txt.gz · Last modified: 2015/03/04 21:42 by adrian.stanciu
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