我正在尝试编译一个开源项目,但我从g ++
中得到了这个问题
error: function definition does not declare parameters
代码是这样的
#include <iostream>
namespace hi {
class hello {
public:
bool first { true };
};
}
int main(int argc, char *argv[])
{
hi::hello h
std::cout << "output: " << h.first << std::endl;
return 0;
}
使用
编译时产生与开源项目代码相同的编译问题g++ -O2 bools.cpp -o bools -std=c++0x
但是,如果我尝试使用相同的选项编译此代码,它将编译并按原样运行
#include <iostream>
int main(int argc, char *argv[])
{
bool value { true };
std::cout << "output: " << value << std::endl;
return 0;
}
我在Ubuntu 64bit上使用g ++ 4.6.3。
谢谢你的时间。答案 0 :(得分:2)
gcc 4.7
中添加了对non-static data member initializers的支持。您可以看到 C ++ 0x / C ++ 11 功能gcc
支持哪些版本here的列表。此功能的行说明:
Non-static data member initializers | N2756 | GCC 4.7
这在gcc 4.7
及更高版本中效果非常好,请查看它here。