我在完成以下任务时遇到了问题。特别是,我有一个结构:
typedef struct {
int x;
int y;
} foo;
我正在尝试将以下操作定义为宏:
#define DO_SOMETHING(a,b) ((foo){a.x + b.x, a.y + b.y})
我尝试运行下面的代码,但是我从编译器收到一条错误,指出left operand of "." must be pointer to struct/union
int main()
{
foo a = {1,2};
foo b = {3,4};
foo c = DO_SOMETHING(a,b);
return 0;
}
我已经看了一会儿试图弄清楚我做错了什么,但我还没有找到一个好的答案。我想知道我能否得到一些帮助?
谢谢。
答案 0 :(得分:3)
显然你正在使用C89 / C90的编译器。
1999年或之后定义的语言应按原样接受您的程序 "复合文字"在C99中引入。