C言語なら俺に聞け 161at TECHC言語なら俺に聞け 161 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト50:デフォルトの名無しさん (スップ Sd0a-cnX/) 23/04/25 22:37:41.81 T6e/oFBcd.net ああ、それで「関数」ではなく「関数へのポインタ」が定義できるのか 関数の型をtypedefしてからやったほうがわかりやすくない? WindowsAPIでは大体そんな形になってるから真似してるけど 宣言 typedef int COMP_FUNC(const void *, const void *); COMP_FUNC comp_A; COMP_FUNC comp_B; COMP_FUNC *comp_func = comp_A; 切り替える時 comp_func = comp_B; 呼び出す時 comp_func(...); 51:デフォルトの名無しさん (ワッチョイ 66cf-/HYv) 23/04/25 22:50:45.68 OJFKrU7J0.net typedefがめっちゃ気持ち悪い宣言だな 普通はアスタリスクつけてポインタとしてtypedefするもんだと思うよ sizeof(COMP_FUNC)がいくつになるのか見当がつかない不気味なオブジェクトだ 52:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-ASru) 23/04/25 23:29:28.69 ug7UW9j70.net sizeof は関数型の式に対して適用してはならないと制約されているから 関数だったときの結果は未定義で、常識的に考えればコンパイラはエラー扱いにするべきだと思うんだけど gcc や clang だと何故かエラーにならず 1 を返すんだよな。 (警告は出るけど。) 検出が難しいはずもない (実際に警告は出せてるわけだし) のになんでこうなってんだろ。 1 でなんか便利なことある? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch