🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: inline

#698
From: Martin Cracauer
Date: Wed, 01 Nov 1995 10:48
44 lines
2579 bytes
mgieseki@carina.rz.uni-osnabrueck.de (Martin Gieseking) writes:

>In article <5wpLesIphjB@kl.in-berlin.de>, kl@kl.in-berlin.de (Kaspar Landsberg) says:
>>Tach,
>>ich habe da eine kleine Frage zu "inline" (bei Funktionen):
>>In einem C++-Buch steht, dass man bei der Benutzung von "inline" auch  
>>gleich die ganze Funktion "hinschreiben" muss, selbst da es an der Stelle  
>>geschieht, wo die Prototypen deklariert werden (das Ganze ist mit "inline"  
>>immer noch ein Prototyp). Jedoch glaube ich in diesem GNU fuer DOS "Buch"  
>>gesehen zu haben, wie ein "inline" einfach nur vor den Funktionsprototyp  
>>gesetzt wurde. Und die Funktion selbst kam dann ganz normal erst am "Ende"  
>>(nach "main" in diesem Falle).
>>Ist beides erlaubt? Habe ich mich verguckt? Ist das eine mehr erlaubt als  
>>das andere?
>>Danke, Kaspar


>Ich weiss ja nicht wie das beim GNU C++ Compiler ist, aber bei Borland C++
>reicht es, das "inline" (sowie andere Modifizierer, wie virtual, static, pascal,...)
>beim Prototypen anzugeben. Bei der Funktionsdefinition reicht die "Kurzform".
>Im Zweifelsfall probier's einfach aus, und sieh dir den generierten Code mit einem
>Debugger oder aehnlichem an. Wenn kein CALL-Befehl erzeugt wurde, funktioniert's 
>auch mit GNU C++.

Es ist legal, dass die Definition einer inline-Funktion nicht
beim Aufruf sichtbar ist, aber dann wird sie normalerweise nicht
ingelinded (es gibt aber auch keinen Fehler).

Um richtiges Inlining in dieser Situation zu ermoeglichen, muss man in
den Objectfiles der Library die Definition als Source speichern und
die Objectfiles des Aufrufers muessen Strukturen enthalten, die zur
Linkzeit das ersetzen von Code ermoeglichen. Ich wuerde mal sagen,
dass, wenn es in Borland-C++ geht, das ganze einer Recompilation
nahekommt.

Von der Sprache her muss alles inzulinenende im Headerfile stehen und
das sollte man auch tun, wenn man portabel sein will.

Martin
-- 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Martin Cracauer <cracauer@wavehh.hanse.de>  -  Fax +49 40 522 85 36
 BSD User Group Hamburg, Germany  - See http://{net,free}bsd.www.de
 Copyright 1995. Redistribution via Microsoft Network is prohibited
Technical Details
Message-ID: <1995Nov1.104825.21983@wavehh.hanse.de>
Path: arc1-ca.pugleaf.net!wavehh.hanse.de!cracauer
References: <5wpLesIphjB@kl.in-berlin.de> <4767kd$kui@deimos.rz.uni-osnabrueck.de>

Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++
Path: arc1-ca.pugleaf.net!wavehh.hanse.de!cracauer
From: cracauer@wavehh.hanse.de (Martin Cracauer)
Subject: Re: inline
Message-ID: <1995Nov1.104825.21983@wavehh.hanse.de>
Organization: BSD User Group Hamburg
References: <5wpLesIphjB@kl.in-berlin.de> <4767kd$kui@deimos.rz.uni-osnabrueck.de>
Date: Wed, 1 Nov 95 10:48:25 GMT