我将使用C++11统一初始化在Eclipse CDT Luna 4.4中,以便更容易地发现狭窄的位置。我有两个问题。第一个问题是代码样式格式化程序有时会将括号初始化视为代码块(示例#2)。第二个问题是,不带赋值运算符的统一初始化会给我带来编译器错误和警告(示例#4)。
我的项目设置为使用“ISO C ++ 11(-std = c ++ 0x)”语言标准方言。使用gcc版本4.8.1(GCC)。
下面是一些格式化示例,每个示例都包含代码的前后内容: 示例#1 - 初始化 - 格式良好,没有编译器消息:
似乎没有中间地带。在示例1和3中使用统一初始化来初始化工作正常,但对于示例2和4的赋值操作,前者存在格式错误,而后者会产生编译器错误消息。
我是一名C++初学者,有人有任何建议或者看到我的逻辑中隐藏的问题吗?我有一种印象,统一初始化不应该用于赋值操作,因为我没有看到任何这方面的示例,但让我困惑的是,即使在示例2中进行赋值操作会导致格式错误,编译器在输入浮点数时仍会给出正确的“窄化转换... [-Wnarrowing]”编译器警告。
感谢任何帮助,谢谢!
我的项目设置为使用“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'时,它也会影响下面的赋值行为。我希望继续使用'Next line'括号样式(Allman)来编写我的'if'语句,而不是将其设置为'Same line'(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中进行赋值操作会导致格式错误,编译器在输入浮点数时仍会给出正确的“窄化转换... [-Wnarrowing]”编译器警告。
感谢任何帮助,谢谢!