だから私は基本的にタイプ t の 2 つの引数を交換する SWAP(t,x,y) マクロを作成しようとしています。これら2つの引数が次の形式の場合、問題を回避することを考えようとしています
v[i++] と w[f(x)] 、つまり SWAP(int, v[i++], w[f(x)])。
以下のコードは基本的にクラッシュしています...
#define SWAP(T,x,y) {T *p = x; T *q = y; T z = *p; *p = *q; *q = z;}
int f (int x){
return (0-x);
}
int main(void) {
int v[] = {1,2,3};
int i = 0;
int w[] = {4,5,6};
int x = -1;
int *p = v;
int *q = w;
SWAP(int*, v[i++],w[f(x)]);
return 0;
}
何がうまくいかないのでしょうか?