Iが列挙を返す関数ポインタを持っているいくつかの一つはenumを返す関数ポインタにベースアドレスを割り当てる方法は?私の列挙型コードに</p> <pre><code>typedef enum { FIRST, SECOND, THIRD } STATUS; </code></pre> <p>ある<br>
STATUS (*start_port)(void *,void *)= 0x80000001;
としてベース・アドレスを割り当てることを試みた。しかし、それは警告を投げている
"初期化すると、キャストのない整数からポインタが作成される"
とも
が、私はその後、別の宣言
STATUS (*start_port)(void *,void *);
を入れてみました "ISO C90は、混合宣言とコード[-Wdeclaration-後のステートメント]を禁じ"次のようにアドレスを関数ポインタに代入する
start_port = (unsigned int *)0x80000001;
それは混合宣言の警告を修正しますが、新しいエラーは、私がきちんと固定に関数ポインタをカースト入力する方法を知っていただきたいと思い
「互換性のないポインタ型から割り当て」
を思いつきました戻り値が列挙型の場合は、(定数)ベースアドレスを返します。
ですから、呼び出したい関数のコードは、アドレス '0x80000001'で実際にありますか? –
変数 'start_port'は関数へのポインタです。値を正しい型にキャストする必要があります。 –
Re。 c90警告:標準C、つまりC11または少なくとも現代C99を使用します。 **本当に**古いコードを維持しなければmideval C90を使用しないでください。 – Olaf