我正在尝试在我的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给了我一个“这里不允许的类型名称”。还有其他版本会这样做吗?或者我最好使用其他编译器?谢谢。
答案 0 :(得分:3)
您尝试使用的功能称为复合文字。复合文字是C99功能。 MSVC包中的C编译器是一个过时的C89 / 90编译器,它不支持C99。
您必须使用命名对象才能使用MSVC的C编译器编译代码
struct MyColor temp = { 0 };
struct MyColor* Color = RandomizeColor(&temp);
或者您可以切换到支持C99的其他编译器。