什么是 C++11 扩展 [-Wc++11-extensions]

Posted

技术标签:

【中文标题】什么是 C++11 扩展 [-Wc++11-extensions]【英文标题】:What is a C++11 extension [-Wc++11-extensions] 【发布时间】:2017-07-24 22:35:43 【问题描述】:

我需要一些帮助来了解此错误发生的位置:

警告:非静态数据成员的类内初始化是 C++11 扩展 [-Wc++11-extensions]

这是它来自的代码部分:

typedef struct Hand 
    bool straight = false;
    bool flush = false;
    bool four = false;
    bool three = false;
    int pairs = 0;
     Hand;

【问题讨论】:

删除初始化器,所有= false;= 0;这只是struct Hand的定义,当你有struct Hand的实例时你需要初始化字段。看看this 【参考方案1】:

这不是错误,而是警告。它告诉您,您只能初始化从 C++11 标准开始的结构/类的非静态成员(之所以这么称呼,是因为它于 2011 年发布)。在此之前,C++98 并没有正式允许你这样做(你猜对了,它是在 1998 年发布的)。长话短说,你所做的只是在 2011 年才成为合法的官方 C++。你的编译器的默认值似乎是 1998 年的标准。

尝试使用-std=c++11 作为命令行标志进行编译(假设您使用的是 GCC 或 clang),警告应该会消失。如果您使用的是不同的编译器,也应该有一个标志(如果它足够新以实现 C++11)。

【讨论】:

以上是关于什么是 C++11 扩展 [-Wc++11-extensions]的主要内容,如果未能解决你的问题,请参考以下文章

软测作业--WC

WordCount扩展

linux php添加openssl扩展

用sed实现wc -c的功能

wc项目

个人项目--WC(Java)