私はこれをあまりにも長く見てきましたが、何が問題なのかわかりません:
#include <stdio.h>
typedef struct {
int a;
int b;
} S;
#define F(a,b) ( v.a = a, v.b = b, v )
int main(void) {
S s, v;
s = ( v.a = 1, v.b = 2, v ); // this works as expected
printf("s = { %d %d } \n", s.a, s.b);
s = F(1, 2); // but gcc complains about the macro equivalent
printf("s = { %d %d } \n", s.a, s.b);
return 0;
}
gcc は不平を言います:
関数 'main' 内:
17 行目: エラー: 数値定数の前に識別子が必要です
2 つの割り当ては、前処理後に同じになるはずですが、明らかに何か不足しています...
ここでコードを実行できます: http://codepad.org/0c1aUBLm