🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1585

Re: BC++ 4.5 und das Woertchen inline

#1585
From: Karsten Baensch
Date: Wed, 21 Feb 1996 12:35
79 lines
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!news
References: <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