是否有可以处理C内联结构的MSVC版本?

时间:2014-10-09 18:33:11

标签: c visual-c++

我正在尝试在我的C应用程序中执行类似的操作:

struct MyColor
{
    int Color;
};

struct MyColor* RandomizeColor(struct MyColor* self)
{
    return self;
}

int main()
{
    struct MyColor* Color = RandomizeColor(&((struct MyColor){0}));

    return 0;
}

但是MSVC ++ 2010 Express给了我一个“这里不允许的类型名称”。还有其他版本会这样做吗?或者我最好使用其他编译器?谢谢。

1 个答案:

答案 0 :(得分:3)

您尝试使用的功能称为复合文字。复合文字是C99功能。 MSVC包中的C编译器是一个过时的C89 / 90编译器,它不支持C99。

您必须使用命名对象才能使用MSVC的C编译器编译代码

struct MyColor temp = { 0 };
struct MyColor* Color = RandomizeColor(&temp);

或者您可以切换到支持C99的其他编译器。