Ich glaube ich habe den sinn von inline Funktionen nicht so ganz
verstanden, ich habe gedacht sie kann man so verwenden wie ein
mehrzeiliges Makro. kleines Beispiel:
Ich will mit einer inline funktion in IAR EWB bestimmte lokale variablen
erzeugen erzeugen und später außerhalb der IF auswerten (Die IF wird
innerhalb einer Statemachine aufgerufen und dient nur der besseren
lesbarkeit)
1 | #pragma inline
|
2 | void IF_getInfo(void)
|
3 | {
|
4 | uint8 u8_A = *( gpu8_Daten + IRGEND_EIN_DEFINE );
|
5 | uint8 u8_B = *( gpu8_Daten + IRGEND_EIN_DEFINE ) + IRGENDWAS;
|
6 | uint8 u8_C;
|
7 | if( IRGENDWAS )
|
8 | {
|
9 | u8_C = *( IRGENDWAS / IRGENDWAS);
|
10 | }
|
11 | else
|
12 | {
|
13 | u8_C = *( IRGENDWAS - IRGENDWAS);
|
14 | }
|
15 | }
|
wenn ich jetzt irgendwo in meiner Statemachine folgendes schreibe
1 | IF_getInfo();
|
2 | if ( u8_B == 0x12u )
|
3 | {
|
4 | ...
|
meckert mein compiler einmal das u8_B deklariert aber nicht verwendet
wird un einmal das u8_B undefiniert ist.
mit einem mehrzeiligen makro hat es funktioniert aber elegant ist das
nicht gerade und lässt sich auch nicht so gut erstellen.