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

标签 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 给了我一个“此处不允许的类型名称”。是否有另一个版本可以做到这一点?还是我最好使用另一个编译器?谢谢。

最佳答案

您尝试使用的功能称为复合文字。复合文字是 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/

相关文章:

C 释放动态分配的结构数组

objective-c - 不同文件中的字符串文字是否具有相同的内存地址?

c - 如何创建不区分大小写的 Glib 哈希表?

c++ - C++ 中的错误 C3867

c++ - 在 Visual C++ 中的不同文件和不同命名空间中使用函数

c - Cuda C 上任意大小的矩阵转置(具有共享内存)

c - 链接时优化的 undefined reference

c++ - memcpy 定义的位置

visual-c++ - 关于 MSVC 编译器,open()、open() 和 fopen() 之间的区别?

c++ - 有符号/无符号比较给出意想不到的结果