在C中传递"直接"结构作为函数

use*_*752 3 c structure function

我对C中的结构有一个简单的问题.

我有这个结构和这个功能:

struct Vec2
{
  int x;
  int y;
}

void draw(Sprite* sprite, struct Vec2 pos);
Run Code Online (Sandbox Code Playgroud)

无论如何在c ++中做相同的操作?

draw(foo, new Vec2(10, 20));
Run Code Online (Sandbox Code Playgroud)

我试过这个,但编译器不同意我的意见:

draw(foo, {10, 20} );
Run Code Online (Sandbox Code Playgroud)

有人帮忙吗?

编辑:我在C++模式下使用Visual C++ 2008 Express,但对于我的学校,我必须使用C语言编写,而不是C++

Kei*_*son 5

如果您的编译器支持C99或更高版本,则可以使用复合文字:

draw(foo, (struct Vec2){10, 20});
Run Code Online (Sandbox Code Playgroud)

或者,如果您想更明确地了解成员名称:

draw(foo, (struct Vec2){.x = 10, .y = 20});
Run Code Online (Sandbox Code Playgroud)

(请注意,Microsoft的C编译器不支持C99,这可能会限制代码的可移植性.)