Thread View: de.comp.lang.c++
7 messages
7 total messages
Started by Kaspar Landsberg
Mon, 30 Oct 1995 15:09
inline
Author: Kaspar Landsberg
Date: Mon, 30 Oct 1995 15:09
Date: Mon, 30 Oct 1995 15:09
23 lines
1113 bytes
1113 bytes
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
--
Kaspar Landsberg | "Diplomatie ist die feinfuehlige Waffe des
kl@kl.in-berlin.de | zivilisierten Kriegers."
= Unbekannter Hunne =
Re: inline
Author: Stefan Naewe
Date: Tue, 31 Oct 1995 09:13
Date: Tue, 31 Oct 1995 09:13
46 lines
2335 bytes
2335 bytes
In article <5wpLesIphjB@kl.in-berlin.de> kl@kl.in-berlin.de (Kaspar Landsberg) writes: > From: kl@kl.in-berlin.de (Kaspar Landsberg) > Newsgroups: de.comp.lang.c++ > Date: 30 Oct 1995 16:09:00 +0100 > > 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? Antwort: Ein glasklares JEIN... ;-)) Spasz beiseite: Soviel ich weisz, ist beides erlaubt und nur eine Frage des persoenlichen Stils. Man moege mich jedocj korrigieren. Stefan > > Danke, > > Kaspar > > -- > Kaspar Landsberg | "Diplomatie ist die feinfuehlige Waffe des > kl@kl.in-berlin.de | zivilisierten Kriegers." > = Unbekannter Hunne = -- +--------------------------------------------------------------------+ | Stefan Naewe | | stena@informatik.uni-bremen.de | | http://www.informatik.uni-bremen.de/~stena | | Universitaet Bremen | +--------------------------------------------------------------------+
Re: inline
Author: Martin Gieseking
Date: Tue, 31 Oct 1995 22:23
Date: Tue, 31 Oct 1995 22:23
25 lines
1627 bytes
1627 bytes
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++. Noch viel Spass, Martin.
Re: inline
Author: Kaspar Landsberg
Date: Wed, 01 Nov 1995 06:11
Date: Wed, 01 Nov 1995 06:11
13 lines
582 bytes
582 bytes
Moin, Stefan Naewe <stena@informatik.uni-bremen.de> wrote: > Soviel ich weisz, ist beides erlaubt und nur eine Frage des > persoenlichen Stils. Man moege mich jedocj korrigieren. fein! :-) Vielen Dank fuer die Hilfe, Kaspar -- K.L.
Re: inline
Author: Karl-Heinz Krause
Date: Wed, 01 Nov 1995 09:22
Date: Wed, 01 Nov 1995 09:22
29 lines
1577 bytes
1577 bytes
Am 30. Okt. 1995 schrieb Kaspar Landsberg (kl@kl.in-berlin.de): > 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? Ein inline-Prototyp der form inline int f(int); ist nicht sinnvoll. Es ist ja wesentlich für die inline-Expansion, daß an der Aufrufstelle die vollständige Definition sichtbar ist. Aus diesem Grunde dürfen (bzw. sollen) inline-Definitionen auch im Headerfile stehen. Normalerweise stehen ja nur die Prototypen im Headerfile und die Definition in irgendeinem der Module. Karl-Heinz Krause
Re: inline
Author: Martin Cracauer
Date: Wed, 01 Nov 1995 10:48
Date: Wed, 01 Nov 1995 10:48
44 lines
2579 bytes
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
Re: inline
Author: Herbert Kremser
Date: Fri, 03 Nov 1995 14:25
Date: Fri, 03 Nov 1995 14:25
29 lines
1714 bytes
1714 bytes
Kaspar Landsberg (kl@kl.in-berlin.de) wrote: : 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? Das ist schon erlaubt, es muss die inline Funktion nur im selben Modul (File) verfuegbar sein. Wenn du aber eine Inline Funktion in ein Headerfile schreibst, muss da irgendwo auch der Source folgen, sonst kennt sich der Compiler nicht mehr aus. Anders als bei richtigen Funktionen, die dann erst vom Linker dazugefuegt werden. Herbert -- Herbert Kremser | "On the Internet, kremser@flinux.tu-graz.ac.at | nobody knows kremser@sbox.tu-graz.ac.at | you're a dog."
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