所以我基本上試圖做一個交換兩個t類型參數的SWAP(t,x,y)宏。我試圖考慮當這兩個參數的形式爲宏SWAP(t,x,y)交換t類型的兩個參數
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;
}
任何想法可能會錯呢?
謝謝。現在一切都好!這個「副作用」問題是我想要解決的真正問題。 – Rayhunter 2013-05-04 18:56:44
請downvoter,解釋你downvote。 – ouah 2013-05-05 01:59:24
如果其中任何一個參數都是'p' - 這將失敗(但我的投票不過)。下面包括自己的答案。 – ideasman42 2015-03-27 15:10:56