ich einen Funktionszeiger haben, die eine Enumeration ist
Meine Enum gibtWie die Basisadresse für einen Funktionszeiger zugewiesen wird, der enum zurückgibt?
typedef enum {
FIRST,
SECOND,
THIRD
} STATUS;
Im Code jemand eine Basisadresse zuweisen als
STATUS (*start_port)(void *,void *)= 0x80000001;
Aber es wirft die Warnungen versucht hat
"Initialisierung macht Zeiger aus Ganzzahl ohne Besetzung"
und auch
"ISO C90 verbietet gemischte Erklärungen und Code [-Wdeclaration-after-Anweisung]"
Ich trennt die Erklärung setzte
STATUS (*start_port)(void *,void *);
Dann versuchte zu Weisen Sie die Adresse dem Funktionszeiger folgendermaßen zu:
start_port = (unsigned int *)0x80000001;
korrigiert es die gemischte Erklärung Warnung aber ein neuer Fehler kam
„Zuordnung von inkompatiblen Zeigertyp“
Ich möchte wissen, wie man richtig einen Funktionszeiger auf eine feste Kasten eingeben (konstante) Basisadresse, wenn der Rückgabewert eine Aufzählung ist.
So ist der Code für die Funktion, die Sie anrufen möchten, ist tatsächlich an der Adresse '0x80000001'? –
Die Variable 'start_port' ist ein Zeiger auf eine Funktion. Sie müssen den Wert auf den richtigen Typ anwenden. –
Re. die Warnung c90: Verwenden Sie den Standard C, der C11 ist, oder zumindest den modernen C99. Verwenden Sie nicht mideval C90, es sei denn, Sie ** wirklich ** müssen alten Code beibehalten. – Olaf