[Tech] OT: programmazione C

Marco Ermini markoer@markoer.org
Mar 18 Maggio 2004 19:06:59 CEST


Valerio Montagnani disse:
[...]
> Ciao Carlo, l'idea è quella di eliminare 7 funzioni simili (che allocano 7
> buffer di tipo e dimensioni diverse) da un modulo, inserendole in una
> struct con 7 funzioni membro.
[...]

Come ti dicevo in mail privata, in C non esiste nemmeno il concetto di
"funzione membro" perché è un concetto da C++.

Quello che puoi fare è un puntatore a funzione, e variare questo puntatore
per puntare ad una funzione diversa, ma devono essere funzioni
consistenti, cioé devono avere gli stessi tipi nei parametri.

Se i buffer che devono essere allocati hanno un tipo di base diverso, puoi
molto semplicemente definire il buffer come un (void *) e "castarlo" al
tipo che ti serve di volta in volta. Se ho capito bene cosa vuoi fare.


> Mi sembrava una soluzione elegante di lavoro, ma si sta dimostrando
> estremamente complicata per le mie capacità.

Effettivamente non stai facendo una cosa semplicissima, il vero problema è
però che stai mescolando C e C++, che sono linguaggi con filosofie ed
approcci ai problemi differenti.

Nel kernel di Linux, se ti interessa, nella gestione degli inode dei
filesystem, ci sono degli esempi di tecniche di programmazione simili alla
cosa che vuoi fare tu (se ci pensi i filesystem nel kernel sono
"pluggable" ma il concetto di inode è sempre lo stesso, anche se la sua
"forma" e dimensione varia da fs a fs). Però guarda, si tratta di
altissimi esempi di programmazione in C, non si "colgono" al volo, ci
potresti fare una tesi sopra ;-)


ciao
-- 
Marco Ermini
http://www.markoer.org
Dubium sapientiae initium. (Descartes)
<< This message is for the designated recipient only and may contain
privileged or confidential information. If you have received it in
error, please notify the sender immediately and delete the original.
Any other use of the email by you is prohibited. >>



Maggiori informazioni sulla lista flug-tech