我正在尝试在我的 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 给了我一个“此处不允许的类型名称”。是否有另一个版本可以做到这一点?还是我最好使用另一个编译器?谢谢。
最佳答案
您尝试使用的功能称为复合文字。复合文字是 C99 的一个特性。 MSVC包中的C编译器是一个过时的C89/90编译器,不支持C99。
您必须使用命名对象才能使您的代码使用 MSVC 的 C 编译器进行编译
struct MyColor temp = { 0 };
struct MyColor* Color = RandomizeColor(&temp);
或者您可以切换到另一个支持 C99 的编译器。
关于c - 是否有可以处理 C 内联结构的 MSVC 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26285620/