これであれば通るワケだ。
extern (C) alias void (*Hoge)(int*);
extern (C) void Foo(int *a)
{
a = cast(int *)1;
}
void Piyo(Hoge a, int *b)
{
a(b);
printf("address: 0x%p\n", a);
}
void main()
{
int a;
printf("before %d\n", a);
Piyo(&Foo, &a);
printf("after %d\n", a);
}
でも、なんでafterが変わってないんだ・・・