Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[C++] Funzione da non compilare separatamente
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano
View previous topic :: View next topic  
Author Message
Spiros
Apprentice
Apprentice


Joined: 11 Mar 2008
Posts: 189
Location: Zurich

PostPosted: Wed Aug 11, 2010 9:13 am    Post subject: [C++] Funzione da non compilare separatamente Reply with quote

Nel mio progetto C++ ho quasi solo classi template, per cui sto scrivendo una libreria header-only. L'unico "problema" è con una classe che non ha bisogno di alcun parametro di template, poiché non ha nessuna decisione da prendere a compile-time. Non vorrei dover compilare separatamente solo questa classe per quest'unica classe, anzi, in realtà per una sola funzione contenuta in questa classe: infatti, mentre le altre hanno argomenti template oppure sono davvero piccole, per cui sono inline, questa non ha argomenti template e al contempo è davvero un po' troppo grande per essere dichiarata inline. Esiste un modo attraverso il quale io possa evitare di dover compilare questa piccola parte della libreria invece di implementare il tutto nell'header e senza ricorrere a template, in questo caso inutili, o dichiarazione inline?
_________________
Spiros
Back to top
View user's profile Send private message
Apetrini
Veteran
Veteran


Joined: 09 Feb 2005
Posts: 1158

PostPosted: Thu Aug 12, 2010 1:08 pm    Post subject: Reply with quote

Il tuo post non è chiaro. Non è chiara la distinzione di cosa cerchi di ottenere e cosa non ti va bene come soluzione.
_________________
Linux ape 2.6.31-vanilla. Paludis since 0.28.0.
Back to top
View user's profile Send private message
Spiros
Apprentice
Apprentice


Joined: 11 Mar 2008
Posts: 189
Location: Zurich

PostPosted: Tue Aug 17, 2010 9:24 pm    Post subject: Reply with quote

Apetrini wrote:
Il tuo post non è chiaro. Non è chiara la distinzione di cosa cerchi di ottenere e cosa non ti va bene come soluzione.

Sì, in effetti... concordo. Contestualizzo un po' meglio.

Sto scrivendo una libreria C++ che permette lo scambio di dati tra programmi C++ (che usano la mia libreria) e Matlab (o altri programmi simili, come Octave) attraverso l'uso di particolari file (i file .mat). Definisco quindi nella mia libreria diverse classi, funzioni, tipi... La maggior parte di questi dipendono da argomenti template, in particolare il tipo di dato immagazzinato in matrici o vettori (double, int, complex<float>,...). Mi sono orientato quindi verso un tipo di libreria header-only, come la maggior parte delle librerie numeriche scritte in C++ che fanno uso dei template (vedi la stessa STL, Eigen, uBLAS, Blitz++,...)

Il fatto che sia una libreria header-only semplifica la vita a me che la sviluppo, a chi la usa che non deve far altro che scaricare i sorgenti e #includerli, a chi usa i programmi sviluppati con la libreria, che non deve risolvere dipendenze... Quindi questo fatto mi torna molto utile. C'è però una classe nel mio progetto che mi sta dando qualche grattacapo: si tratta di una classe non-template, che contiene in particolare un metodo che non dipende da alcun argomento template ed è eccessivamente "pesante" in termini di operazioni eseguite per poter essere dichiarata "inline" a cuor leggero. Stando così le cose, dovrei in teoria separare l'implementazione di questo metodo dall'header, compilarlo separatamente e distribuire, insieme agli header, anche la libreria binaria, statica o dinamica, contenente questo metodo compilato. Oppure, distribuire il codice sorgente, spiegando di compilare la libreria prima di usarla. Tutto ciò comporterebbe l'annullamento di tutti (o almeno alcuni) dei vantaggi citati prima.

Per evitare di dover compilare questa piccola parte della mia libreria e poter distribuire tutto il codice all'interno degli header potrei, come detto, dichiarare "inline" questo metodo oppure farlo dipendere da un argomento template. Entrambe queste soluzioni, però, sono attaubili ma non ottimali (non il template, perché non c'è alcun motivo per far dipendere il metodo da un argomento template, non l'inline, perché questo non comporterebbe di sicuro un miglioramento di prestazioni, anzi, avrebbe con ogni probabilità un effetto negativo sull'efficienza della libreria). Esistono dunque altre soluzioni?

Spero che sia più chiaro. Se non lo fosse, perdonatemi, a volte ho davvero difficoltà nello spiegare i miei problemi informatici. :D
_________________
Spiros
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum