Article View: de.comp.lang.c++
Article #1585Re: BC++ 4.5 und das Woertchen inline
From: Karsten Baensch
Date: Wed, 21 Feb 1996 12:35
Date: Wed, 21 Feb 1996 12:35
79 lines
3163 bytes
3163 bytes
Michael Milde <milde@mauq50.mathematik.uni-jena.de> writes:
>Hallo Leute!
>Ich habe das Problem, dass der Linker unter Borland C++ 4.5 mich nicht mag.
>Folgendes Beispiel:
>X.HPP:
>------
>class X
>{
> private:
> int i;
>
> public:
> int func( void );
>}
>X.CPP:
>------
>inline int X::func( void ) { return i; }
>Wenn ich nun in einem Modul Y die Funktion func benutzen will, beschwert sich
>der Linker mit "Undefined Symbol X::func() in module Y".
>Auch laengere Suche in den Handbuechern und der Online-Hilfe brachten keine
>Loesung. Kann mir jemand verraten, was ich falsch mache, bzw. welchen Schalter
>ich fuer den Compiler / Linker wie setzen muss.
>Besten Dank im voraus,
> Michael
>P.S. Tschuldigung fuer den vorab losgeschickten Muell
> ____________________________________________________
>| Michael Milde |
>| Friedrich-Schiller-Universitaet Jena |
>| Institut fuer Angewandte Mathematik |
>| Leutragraben 1 |
>| 07740 Jena |
>| Germany |
>| |
>| PHONE +49 3641 630821 |
>| FAX +49 3641 630810 |
>| E-MAIL milde@mathematik.uni-jena.de |
>|____________________________________________________|
Hallo,
der Linker hat Recht an dieser Stelle!
'inline' bedeutet eben auch inline, d.h. das Stueckchen Code der
Funktion soll an jeder Stelle des Funktionsaufrufes eingesetzt werden.
D.h. Inline-Funktionen sind nach der Compilierung eigentlich keine
richtigen Funktionen mit Sprung- und Stackoperationen etc. mehr.
Deswegen soll man sie ja auch so sparsam verwenden, da der Code der
inline-Funktionen entsprechend der Anzahl der Aufrufe mehrfach
eingesetzt wird.
Damit der Compiler die Inline-Expandierung vornehmen kann, muss er vor
dem Compilieren eines Modules, welches die Funktion verwendet, ueber die
Inline-Funktion informiert sein. Also z.B. kannst Du die Inline-Funktion
schon im Header DEFINIEREN. Mit der Inline-Definition im Aermel ersetzt der
Compiler dann die Aufrufe der Funktion im nachfolgend zu uebersetzenden
.cpp-Modul.
Probiers mal!
Karsten
--
( Email: Karsten.Baensch@hrz.tu-chemnitz.de (
) WWW: http://www.tu-chemnitz.de/~kba/baensch.html )
( Phone: (+49-) 0371/531-1252 (
) Mail: Technical University, Computing Services, 09107 Chemnitz, Germany )
Technical Details
Message-ID:
<4gf4dn$dle@pyrrhus-f.hrz.tu-chemnitz.de>Path:
arc1-ca.pugleaf.net!news.tu-chemnitz.de!newsReferences:
<4geh2q$3pa@fsuj01.rz.uni-jena.de> <4gehjl$3pa@fsuj01.rz.uni-jena.de>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.tu-chemnitz.de!news From: kba@hrz.tu-chemnitz.de (Karsten Baensch) Newsgroups: de.comp.lang.c++ Subject: Re: BC++ 4.5 und das Woertchen inline Date: 21 Feb 96 12:35:43 GMT Organization: University of Technology Chemnitz, FRG Message-ID: <4gf4dn$dle@pyrrhus-f.hrz.tu-chemnitz.de> References: <4geh2q$3pa@fsuj01.rz.uni-jena.de> <4gehjl$3pa@fsuj01.rz.uni-jena.de> NNTP-Posting-Host: shark.hrz.tu-chemnitz.de