🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
7 messages
7 total messages Started by Michael Milde Wed, 21 Feb 1996 07:19
BC++ 4.5 und das Woertchen inline
#1665
Author: Michael Milde
Date: Wed, 21 Feb 1996 07:19
13 lines
723 bytes
Hallo Leute!

Ich habe das Problem, dass der Linker unter Borland C++ 4.5 bei mir nicht mag.
Folgendes Beispiel:

X.HPP:
------
class X
{
      int i;
   
   public:
   void func
BC++ 4.5 und das Woertchen inline
#1666
Author: Michael Milde
Date: Wed, 21 Feb 1996 07:28
45 lines
2009 bytes
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            |
|____________________________________________________|
Re: BC++ 4.5 und das Woertchen inline
#1583
Author: Uwe-Krischna Tantz
Date: Wed, 21 Feb 1996 11:33
21 lines
1009 bytes
On 21 Feb 1996, Michael Milde wrote:

> X.HPP:
> ------
> class X
> {
>    private:
>       int i;
>    
>    public:
>       int func( void );
> }
> 
> X.CPP:
> ------
> inline  int X::func( void ) { return i; }

Inlines muessen bereits dem Compiler bekannt sein, nicht erst dem Linker. 
Deshalb muss die Definition ins Headerfile.

Uwe
Re: BC++ 4.5 und das Woertchen inline
#1585
Author: 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  )
Re: BC++ 4.5 und das Woertchen inline
#1588
Author: Christian Sauer
Date: Wed, 21 Feb 1996 13:52
29 lines
1140 bytes
Michael Milde wrote:

> 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".
> 

Moeglicherweise muessen inline-Funkt. in den Header, d.h. zur Klassendefinition,
so dass diese dann in jedem Modul per include verfuegbar sind ...

Zumindest sind inlines in den BC-Headern immer enthalten ...

mfg

Christian :)
Re: BC++ 4.5 und das Woertchen inline
#1587
Author: groeschel
Date: Wed, 21 Feb 1996 15:44
6 lines
733 bytes
Klassendeklaration enden ueblicherweise mit einem Strichpunkt (;)!
Das duerfte des Raetsels Loesung sein.
Gleiches hat mich auch schon mal ewig Zeit gekostet ;-)

Ciao,
Michael
Re: BC++ 4.5 und das Woertchen inline
#1611
Author: Claus A. Faerber
Date: Thu, 22 Feb 1996 00:00
42 lines
1707 bytes
Michael Milde <milde@mauq50.mathematik.uni-jena.de> (21.02.96):

> 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.

Von der Definition in X.HPP kann der Compiler nicht wissen,  
dass das ganze eine inline-Funktion werden soll. Wenn Du  
jetzt in ein Modul wie Y.CPP diese Header-Datei einbindest,  
meint der Compiler, dass es sich um eine normale Funktion,  
die der Linker dann nicht findet.
Du musst also die Inline-Definition auch in die Header-Datei  
mit der Klassendefinition setzen.

Claus

------------------------------------------------------------------------
Claus Andre Faerber - claus@faerber.muc.de - http://www.muc.de/~cfaerber
------------------------------------------------------------------------
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads