Dorinel Filip <[email protected]> writes: > În data de 31 martie 2016, 22:17, Razvan Deaconescu via so < > [email protected]> a scris: >> Dorinel Filip via so <[email protected]> writes: >> > Salutare, >> > >> > De multe ori, în C, pentru a evita declarațiile implicite, trebuie să >> > punem, semnăturile funcțiilor statice la începutul sursei modulului >> > (exact cum am face într-un fișier header, pentru funcțiile >> > non-statice). >> >> Nu înțeleg "evitarea declarațiilor implicite". Despre ce este vorba? >> >> Dacă pui într-un modul funcțiile în ordine, nu ar trebui să ai problema >> asta. > > Într-adevăr, în 99% din cazuri problema poate fi rezolvată prin reodonarea > funcțiilor, însă mie mi se pare ciudat ca primele câteva zeci/sute de linii > să fie ocupate de definiții ale funcțiilor helper (care sunt gândite pentru > a fi folosite de celelalte funcții, deci trebuiesc declarate înaintea > acestora).
Nu văd nici o problemă să definești funcțiile helper înainte. Mi se pare perfect natural și așa arată sursele pe care eu le-am urmărit de-a lungul vremii. Personal găsesc ciudat o listă mare de declarații și apoi undeva după main definite funcțiile; nu prea am întâlnit situația asta in real world în programe C. Iar faptul că la funcții non-statice declarațiile sunt puse într-un header nu este legat. Declarațiile sunt puse într-un fișier header pentru ca acel header să fie inclus de modulele care _folosesc_ funcțiile în cauză, nu de cele care _definesc_ funcțiile în cauză. Dacă ai modul_define_functions.c, header.h și module_use_functions.c, module_use_functions.c ar trebui să includă header.h. modul_define_functions.c include header.h doar dacă sunt tipuri de date și macro-uri de care și acesta are nevoie; altfel nu sunt necesare. Și în situația asta te-ai lovi de aceeași, chiar dacă funcțiile pe care acest modul le definește nu sunt statice (ci exportate). Pe scurt, nu vă bazați pe prejudecăți și "așa zic eu că se face" atunci când scrieți cod. Există ceea ce s-ar chema "bun simț" care este modul cel mai simplist de a face lucrurile; keep it simple. Răzvan _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
