PDA

View Full Version : [C] funzione con attributo "hidden"


Teo@Unix
30-08-2010, 14:27
Ciao,

scrivendo una libreria in C su linux, vorrei rendere alcune funzioni "private" cioè l'applicazione che utilizza la libreria non potrà chiamarle....

ho pensato di utilizzare gli attributi GNU, e di utilizzare "hidden"

void __attribute__ ((visibility ("protected"))) f () { /* Do something. */; }


premesso che non ho provato se la mia soluzione è corretta, conoscete altre soluzioni migliori?
Grazie.

cionci
30-08-2010, 14:47
Se hai una libreria strutturata così:

- mylib.h: header che deve includere l'utilizzatore
- myprivatelib.h: header che contiene le funzioni che servono solo ad uso interno
- myprivatelib.c: sorgente che implementa le funzioni ad uso interno
- mylib.c: sorgente che implementa le funzioni della libreria

Ti basterà includere myprivatelib.h in mylib.c. L'utilizzatore, includendo mylib.h non avrà accesso alle funzioni ad uso privato.

Quando distribuirai la libreria in forma già compilata, includerai il file .a e .so (per linking statico e dinamico) ed il solo mylib.h.

Teo@Unix
30-08-2010, 15:43
Chiarissimo.
Grazie.