我正在尝试在 Eclipse CDT Luna 4.4 中使用 C++11 统一初始化,以便我可以更轻松地发现发生缩小的位置。我有两个问题。首先是代码样式格式化程序有时将大括号初始化视为一段代码(示例#2)。第二个是,没有赋值运算符的统一初始化给我一个编译器错误和一个警告(示例#4)。
我的项目设置为使用“ISO C++11 (-std=c++0x)”语言标准方言。使用 gcc 版本 4.8.1 (GCC)。
以下是一些格式示例,每个示例都包含之前和之后的代码:
示例 #1 -初始化- 格式正常,没有编译器消息:
int x = {9};
int x = {9};
示例 #2 -赋值- 'Braces' 选项卡上的 'Blocks' 格式化程序选项控制 'if' 语句样式,当 'Blocks' 设置为 'Next line' 时,它也会影响下面的赋值行为。我希望继续为我的“if”语句使用“下一行”大括号样式(Allman),而不是将其设置为“同一行”(K&R),这也会停止此处观察到的新行行为:
int x2;
x2 = {9};
int x2;
x2 =
{ 9};
示例 #3 -没有赋值运算符的初始化- 格式很好,没有编译器消息:
int y{9};
int y{9};
示例 #4 -没有赋值运算符的赋值- 格式很好,但是会给出expected ';' before '{' token
错误和statement has no effect [-Wunused-value]
编译器警告:
int y2;
y2{9};
int y2;
y2{9};
似乎没有中间立场。在示例 #1 和 #3 中使用统一初始化进行初始化都可以正常工作,但是在 #2 和 #4 中进行赋值时,前者会出现格式错误,而后者会产生编译器消息。
我是 C++ 新手,任何人有任何建议或在我的逻辑中看到房间里的大象吗?我以某种方式得到的印象是,不应将统一初始化用于分配,因为我没有看到任何示例,但令我困惑的是,即使在 #2 中分配会产生格式错误,编译narrowing conversion ... [-Wnarrowing]
器在输入时确实会给出正确的编译器警告一个浮点数。
任何帮助表示赞赏,谢谢!