関数ポインタの初期化
C言語で、関数ポインタを何も指していない状態で初期化したい場合、
C
1void (*p)(void) = NULL;
としてしまうと、空ポインタ定数 NULL は
JIS X 3010:2003
値0をもつ整数定数式又はその定数式を型void *にキャストした式
とされているため、値0であれば整数型からポインタ型への変換で「処理系定義」となり、void *であれば、void へのポインタから関数型へのポインタ型への変換で「未定義の動作」となりますよね。
どのように初期化する、あるいは何も指していないことを確認するのが正しいのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/12 06:02
2020/06/13 02:27 編集
2020/06/13 16:48 編集
2020/06/14 01:25