-
[c] dubbio su funzioni inline
//test.h #ifndef test_h_guard #define test_h_guard inline int add(int a, int b) { return a + b; } int addPlusOne(int,int); #endif//test.c #include "test.h" int addPlusOne(int a, int b) { return add(a, b) + 1; }//toast.c #include <stdio.h> #include "test.h" int main(int argc, char **argv) { printf("%d\n", addPlusOne(2,3)); return 0; }$ gcc -c -o test.o test.c $ gcc test.o -o toast toast.c /tmp/cc0JQ54v.o: In function `add': toast.c:(.text+0x0): multiple definition of `add' test.o:test.c:(.text+0x0): first defined here collect2: ld returned 1 exit status $





qual'è il modo giusto di condividere le funzioni inline tra più files? Ho sostituito con una macro, ma vorrei capire come si fa.Young professional woman and busy mom.-
-
Re: [c] dubbio su funzioni inline
- Scritto da: alttg
> http://www.greenend.org.uk/rjk/2003/03/inline.html
ok, quindi visto che parliamo di c99 extern sull'header e il corpo della funzione con inline nel sorgente abbinato.
Mi viene il dubbio se viene compilata nell'eseguibile come inline veramente per davvero o solo linkata e quindi ignorando la keyword.Young professional woman and busy mom.-
Re: [c] dubbio su funzioni inline
- Scritto da: ::1
>
> - Scritto da: alttg
> >
> http://www.greenend.org.uk/rjk/2003/03/inline.html
>
> ok, quindi visto che parliamo di c99 extern
> sull'header e il corpo della funzione con inline
> nel sorgente
> abbinato.
per quello che vuoi fare te credo 'static' nell'header e basta (niente funzione nel file .c). Ma le funzioni inline in C non le ho mai usate.
> Mi viene il dubbio se viene compilata
> nell'eseguibile come inline veramente per davvero
> o solo linkata e quindi ignorando la
> keyword.
disassembla il risultato.-
Re: [c] dubbio su funzioni inline
- Scritto da: alttg
>
> - Scritto da: ::1
> >
> > - Scritto da: alttg
> > >
> >
> http://www.greenend.org.uk/rjk/2003/03/inline.html
> >
> > ok, quindi visto che parliamo di c99 extern
> > sull'header e il corpo della funzione con inline
> > nel sorgente
> > abbinato.
>
> per quello che vuoi fare te credo 'static'
> nell'header e basta (niente funzione nel file
> .c). Ma le funzioni inline in C non le ho mai
> usate.
E' quello che dice pure frenchi
> > Mi viene il dubbio se viene compilata
> > nell'eseguibile come inline veramente per
> davvero
> > o solo linkata e quindi ignorando la
> > keyword.
>
> disassembla il risultato.
Non sarei in grado di valutarlo, non sono ancora al livello alex,tgYoung professional woman and busy mom.-
Re: [c] dubbio su funzioni inline
- Scritto da: ::1
>
> - Scritto da: alttg
> >
> > - Scritto da: ::1
> > >
> > > - Scritto da: alttg
> > > >
> > >
> >
> http://www.greenend.org.uk/rjk/2003/03/inline.html
> > >
> > > ok, quindi visto che parliamo di c99 extern
> > > sull'header e il corpo della funzione con
> inline
> > > nel sorgente
> > > abbinato.
> >
> > per quello che vuoi fare te credo 'static'
> > nell'header e basta (niente funzione nel file
> > .c). Ma le funzioni inline in C non le ho mai
> > usate.
>
> E' quello che dice pure frenchi
>
> > > Mi viene il dubbio se viene compilata
> > > nell'eseguibile come inline veramente per
> > davvero
> > > o solo linkata e quindi ignorando la
> > > keyword.
> >
> > disassembla il risultato.
>
> Non sarei in grado di valutarlo, non sono ancora
> al livello
> alex,tg
fallo su un semplice programma di prova, poi vai sulla funzione main e vedi se e` stata emessa una istruzione call o il codice e` inline.
-
-
-
-
-