Forum: Compiler & IDEs Funktionspointer in Arrays


von Michael S. (schmichael)


Lesenswert?

Hallo zusammen,

bisher hab ich meine Arrays aus Funktionspointern immer so angelegt:
1
 
2
typedef void (*pFunc)(void);
3
4
void Func1(void);
5
void Func2(void);
6
7
const pFunc Functions[2] = 
8
{
9
   Func1,
10
   Func2
11
};

Jetzt habe ich mal einen Misra-Checker(QAC) drüberlaufen lassen. Dieser 
checkt nach Misra 2.0. Dieser meckert jetzt das Array an. Er möchte es 
folgendermaßen:
1
 
2
const pFunc Functions[2] = 
3
{
4
   &Func1,
5
   &Func2
6
};

Habe mich auch schon mit einigen Kollegen unterhalten, diese hätten es 
alle angelegt wie im ersten Beispiel. Um nun mehr Informationen darüber 
zu bekommen, bin ich auf der Suche nach der Stelle im Standard, an der 
dies beschrieben steht. Ich hoffe es kann mir jemand weiterhelfen.

Danke im Vorraus!
Michael

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Bei der Angabe von Funktionen ist der Adressoperator implizit und kann 
weggelassen werden.

Um aber klar zum Ausdruck zu bringen, daß man die Adresse der Funktion 
meint, sollte der Adressoperator verwendet werden, und genau das will 
MISRA.

Das ist also kein C- oder C++-Fehler, sondern eine Konvention.

von Michael S. (schmichael)


Lesenswert?

Hallo Rufus,

danke für die Auskunft.

Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.