c - Visual Studio 将不完整数组视为零长度数组

标签 c visual-studio-2015 c99

我有一个看起来像这样的结构:

typedef struct foo {
    int this;
    int that;
    int length;
    int info[];     // legal for last element of a struct 
} Foo;

当我编译它时,我收到这样的警告:
C4200 nonstandard extension used: zero-sized array in struct/union

我只是忍受警告,还是可以设置一些属性来告诉 Visual Studio 使用 C-99?

最佳答案

Visual Studio 2015 [几乎] 完全实现了 C99,但仍将所有 C99 功能视为语言扩展(例如,禁用语言扩展也会禁用 C99 支持)。其中一些功能会触发虚假警告,例如您观察到的警告。

只要 C99 支持保持在这种半官方的“扩展”状态,只需忽略/禁用此类警告。

请注意,VS2015 Update 3 不再针对此类 C 代码发出此警告。

关于c - Visual Studio 将不完整数组视为零长度数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39131841/

相关文章:

c - 为什么在构建这个 C 项目时出现所有这些错误?

c++ - 为什么有时不将可变长度数组声明为指针?

c - 使用 GCC 在 C 中重载函数 - 编译器警告

c++ - 在 Visual Studio 2015 中的 C++ STL 中出现错误

.net - Visual Studio 2015 RC中没有框架

c++ - C++库的C部分是否自动为C99?

c - 关于循环缓冲区中简洁索引处理的建议

c - 在 C 中将原始 24 位像素图缩放到大于 50% 的算法

c - | (或者C语言中的正则表达式中运算符不起作用)

git - 在源代码管理文件更改后运行 TypeScript 编译