扩展初始化程序列表仅适用于-std = c ++ 11或-std = gnu ++ 11

时间:2016-10-12 19:26:17

标签: c++ c++11

我收到此错误,将代码从C移植到C ++:

  

src / common / atom.cpp:19:8:警告:扩展初始化列表仅适用于-std = c ++ 11或-std = gnu ++ 11

void Atom::Run(ThreadFunction threadFunction)
{
    mutex = PTHREAD_MUTEX_INITIALIZER;
    if(threadFunction!=NULL)
    {
        pthread_create(&threadID, NULL, threadFunction, this);
        this->running=true;
    }
}

为什么我需要在C ++中使用此标志但在C中不需要此标志,以及什么是初始化器?

1 个答案:

答案 0 :(得分:3)

问题

src/common/atom.cpp:19:8: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11

解决方案

正如您在错误中看到的,它告诉您有标志:

  

std=c++11-std=gnu++11

这是你有版本C ++ 11。 Initalizer lists需要C ++ 11。

使用C ++ 11的版本,您还有许多其他功能,如Lambda表达式,自动类型扣除和decltype,统一初始化语法,删除和默认函数,nullptr,Rvalue引用,新智能指针类({{1} },shared_ptr),C ++ 11标准库,更多C ++算法等等!

参考

C++11 FAQ - Bjarne Stroustrup