我收到此错误,将代码从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中不需要此标志,以及什么是初始化器?
答案 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 ++算法等等!