inline function definieren

OP #2581913
Hallo Zusammen!

Kann es sein, dass es Compiler gibt, die keine inline Funktionen 
unterstützen oder verwende ich das falsche Schlüsselwort?
1
inline void Test(unsigned char a)
2
{ 
3
 b+=10*a;
4
}
5

6
Test (10);

... das hier funktioniert nicht, er zeigt Syntax Error an.
Der Compiler ist MCC18 v3.38 (Microchip C18 Compiler)

Ich möchte mir den Funktions-Overhead sparen und zudem, dass er alle zur 
Compile-Zeit bekannten Operationen vorher erledigt (z.B. das 10*10).

Mit Makros geht das ja auch, aber man kann keine Prototypen in den 
Header setzen, muss also die Makros immer oberhalb des aufrufenden Teils 
schreiben, mit inline wäre es schon schöner...

Danke für Tipps!
Viele Grüße,
Christoph
Gast
Hm. Dein Posting hat zwei Nachteile.
1. Dein Code ist nicht kompilierbar, so das der Fehler auch auftritt.
2. Du schreibst nicht welche Fehlermeldung auftritt und auf welche Zeile 
sie sich bezieht.

Abgesehn von dem Underscore-Inline, was eine Spezialität des Microchip 
C18 Compilers sein mag, bleiben verschiedene Möglichkeiten.
Hast Du z.B. beachtet das inline-Fúnktionen in dem selben Modul 
definiert werden müssen, in dem sie angewendet werden sollen?
Es gibt also kein "extern inline" oder so etwas.
Noname schrieb:
> das inline-Fúnktionen in dem selben Modul
> definiert werden müssen, in dem sie angewendet werden sollen?
> Es gibt also kein "extern inline" oder so etwas.

Da kann man ja auch ein .h zur .c erstellen, den man dann auch gern 
woanders einbinden kann. Aber immer schön mit dem Rahmen...
1
// PROJECT: foo
2
// MODULE:  bar header
3
// FILE:    bar.h
4
// AUTHOR:  Me on 6 Mar 2012
5

6
#ifndef BAR_H_DEFINED
7
#define BAR_H_DEFINED
8

9
// All Stuff goes here...
10

11
#endif // BAR_H_DEFINED
12
// End of File bar.h
...damit es keine Fehler gibt, wenn der Header zweimal eingebunden wird.
mfg mf
in IAR EWB kann man inline z.b. mit nem #pragma erzwingen
(viele Compiler entscheiden selbst wann inline sinnvoll ist und wann 
nicht, das soll aber nicht heißen das du es nicht erzwingen darfst wenn 
du es willst ;) )
einfach mal im manual nachschauen
Gast
Mini Float schrieb:
> Noname schrieb:
>> das inline-Fúnktionen in dem selben Modul
>> definiert werden müssen, in dem sie angewendet werden sollen?
>> Es gibt also kein "extern inline" oder so etwas.
>
> Da kann man ja auch ein .h zur .c erstellen, den man dann auch gern
> woanders einbinden kann. Aber immer schön mit dem Rahmen...

Sicher. Dann ist es im selben Modul. Das die Definition der 
inline-Funktion zwingend im selben File sein muss, hab ich ja nicht 
geschrieben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.