>>76
私が知る限りにおいて文法上は正しい。
しかし X の有効範囲 (スコープ) は関数内だけなので
関数の外で struct X に対応する値を生成できず、
まともな方法では適切な実引数を与えることができない。

内容が同じ構造体は「適合」するし引数が適合する関数も適合するはずなので
強引にキャストして呼出しても言語仕様に反しないと思うのだけど
適合の概念をちゃんと理解できてる自信はない……

void func(struct X{int a;} b){}

int main(void) {
struct X{int a;} b = {1};
// このキャストはたぶんアリだと思うけど自信はない
void (*f)(struct X) = (void(*)(struct X))func;
f(b);
}