用STD=C++ 11扩展的C++ VLA 如何在VC++中工作,尽管给出了STD=C++ 11编译选项。根据通用条款: P>>在ISO C99中允许可变长度自动数组,作为扩展GCC接受C90模式和C++中的.
如a中所述,有一个迂腐的选项也不允许扩展: -Wpedantic -迂腐的 发布严格ISO和ISO C++要求的所有警告;拒绝所有使用禁止扩展的程序,以及其他一些程序 不遵循ISO和ISO C++的程序。对于ISO C,遵循 使用任何-std选项指定的ISO C标准版本 <>有效的ISO和ISO C++程序应该有或没有这个选项,尽管很少需要ANSI或-STD选项编译。 指定所需的ISO C版本。但是,如果没有 选项,某些GNU扩展和传统的C和C++特征是 也支持。使用此选项,它们将被拒绝 -Wpedantic不会对使用名称以“\uu”开头和结尾的备用关键字发出警告消息。这个候补的 格式还可用于禁用非ISO“\uuu intN”的警告 类型,即“输入”。在中也禁用了学究式警告 扩展名后面的表达式。但是,只有系统头 文件应使用这些转义路径;应用程序应 避开它们。请参阅备用关键字 一些用户尝试使用-Wpedantic检查程序是否严格符合ISO C标准。他们很快发现,它并没有达到他们想要的效果 want:它发现了一些非ISO实践,但不仅仅是针对 哪个ISO C需要诊断,而其他一些ISO C需要诊断 已添加诊断 报告任何不符合ISO C的情况的功能在某些情况下可能有用,但需要相当多的额外功能 工作,将是非常不同的-Wpedantic。我们没有计划 在不久的将来支持此功能 如果用-std指定的标准表示C的GNU扩展方言,如“gnu90”或“gnu99”,则有相应的 基本标准,GNU扩展方言所依据的ISO C版本 基于。在需要的地方会给出-Wpedantic发出的警告 按基本标准。这样的警告没有意义 仅适用于非指定GNU C方言的功能,因为 定义C语言的GNU方言包括编译器的所有特性 支持给定的选项,并且不会有任何警告 大约 -学究式错误 当基本标准see-Wpedantic需要诊断时,给出一个错误,在某些情况下,在以下位置存在未定义的行为: 编译时以及在某些其他情况下不阻止编译 根据标准有效的程序。这不是 相当于-Werror=pedantic,因为这会导致错误 选项,后者不启用,反之亦然 鼓起勇气的部分是我的重点——显然有些事情可能还是会过去。不过,我觉得这个选项已经足够满足我的需要了。正如a中提到的,有一个迂腐的选项,它也不允许扩展: -Wpedantic -迂腐的 发布严格ISO和ISO C++要求的所有警告;拒绝所有使用禁止扩展的程序,以及其他一些程序 不遵循ISO和ISO C++的程序。对于ISO C,遵循 使用任何-std选项指定的ISO C标准版本 <>有效的ISO和ISO C++程序应该有或没有这个选项,尽管很少需要ANSI或-STD选项编译。 指定所需的ISO C版本。但是,如果没有 选项,某些GNU扩展和传统的C和C++特征是 也支持。使用此选项,它们将被拒绝 -Wpedantic不会对使用名称以“\uu”开头和结尾的备用关键字发出警告消息。这个候补的 格式还可用于禁用非ISO“\uuu intN”的警告 类型,即“输入”。在中也禁用了学究式警告 扩展名后面的表达式。但是,只有系统头 文件应使用这些转义路径;应用程序应 避开它们。请参阅备用关键字 一些用户尝试使用-Wpedantic检查程序是否严格符合ISO C标准。他们很快发现,它并没有达到他们想要的效果 want:它发现了一些非ISO实践,但不仅仅是针对 哪个ISO C需要诊断,而其他一些ISO C需要诊断 已添加诊断 报告任何不符合ISO C的情况的功能在某些情况下可能有用,但需要相当多的额外功能 工作,将是非常不同的-Wpedantic。我们没有计划 在不久的将来支持此功能 如果用-std指定的标准表示C的GNU扩展方言,如“gnu90”或“gnu99”,则有相应的 基础标准,ISO C的版本 GNU扩展方言 基于。在需要的地方会给出-Wpedantic发出的警告 按基本标准。这样的警告没有意义 仅适用于非指定GNU C方言的功能,因为 定义C语言的GNU方言包括编译器的所有特性 支持给定的选项,并且不会有任何警告 大约 -学究式错误 当基本标准see-Wpedantic需要诊断时,给出一个错误,在某些情况下,在以下位置存在未定义的行为: 编译时以及在某些其他情况下不阻止编译 根据标准有效的程序。这不是 相当于-Werror=pedantic,因为这会导致错误 选项,后者不启用,反之亦然用STD=C++ 11扩展的C++ VLA 如何在VC++中工作,尽管给出了STD=C++ 11编译选项。根据通用条款: P>>在ISO C99中允许可变长度自动数组,作为扩展GCC接受C90模式和C++中的.,c++,gcc,C++,Gcc,如a中所述,有一个迂腐的选项也不允许扩展: -Wpedantic -迂腐的 发布严格ISO和ISO C++要求的所有警告;拒绝所有使用禁止扩展的程序,以及其他一些程序 不遵循ISO和ISO C++的程序。对于ISO C,遵循 使用任何-std选项指定的ISO C标准版本 有效的ISO和ISO C++程序应该有或没有这个选项,尽管很少需要ANSI或-STD选项编译。 指定所需的ISO C版本。但是,如果没有 选项,某些GNU扩展和传统的C和C++特征是 也支持。使用此选项,它们将被拒绝 -Wped
鼓起勇气的部分是我的重点——显然有些事情可能还是会过去。不过,我觉得这个选项已经足够满足我的需要了。你可能需要-pedantic和-std=c++11甚至-pedantic错误。@JonathanLeffler谢谢,它现在已经用-pedantic选项给出了警告!!您可能需要-pedantic以及-std=c++11甚至-pedantic错误。@JonathanLeffler谢谢,它现在已经用-pedantic选项发出警告!!
#include<iostream>
using namespace std;
int fun()
{
int j;
cin>>j;
return j;
}
int main()
{
const int i=fun();
int j[i];
return 0;
}