EDIT:わかりました、私は今それを手に入れたと思います:
ケース 1:
#include <stdio.h>
#define function(_a) ((_a)*2)
int main () {
int (*func)(int) = function(0); // function(0) = 0
func(7);
...
}
構文は問題ありませんが、実行時に main がアドレス NULL にアクセスしようとするため、Windows でソフトウェア クラッシュが発生し、UNIX 環境でセグメンテーション エラーが発生します。
ケース 2:
#include <stdio.h>
#define function(_a) ((_a)*2)
int main () {
int (*func)(int) = function;
func(7);
...
}
コンパイルエラー、「関数」は実際にはマクロであり、実際の関数ではないため、関数へのポインターはそれを指すことはできません。
ケース 3 (正しいコード):
#include <stdio.h>
int function(int _a){return ((_a)*2);};
int main () {
int (*func)(int) = function;
func(7);
...
}
今回はうまくいきましたか?