inline function definieren

OP #2581913
Lesenswert?

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 #2582038
Lesenswert?

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.
#2582060
Lesenswert?

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
Gast #2582115
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren