警告在结构内缺少初始化器
Warning on missing initializer inside a structure
我在C 中具有以下代码:
#include <iostream>
#include <stdint.h>
class X {
private:
struct {
uint32_t a;
uint32_t b;
} myStruct{};
};
int main() {
X x;
}
当我想用GCC 4.8.2编译时,我有以下错误:
$ g++ -std=c++11 -Wall -Wextra -Wshadow -Wunused -Wunused-value -Wunused-variable -Wunused-parameter -Wunused-label -Wunused-function sample.cpp -o out
warning: missing initializer for member 'X::<anonymous struct>::a'
[-Wmissing-field-initializers]
} myStruct{};
^
warning: missing initializer for member 'X::<anonymous struct>::b'
[-Wmissing-field-initializers]
} myStruct{};
^
我认为我的编译器会自动将变量设置为a
和b
为0 ...
我以为我的编译器会自动将变量设置为
a
和b
为0 ...
是真的。此初始化称为汇总初始化,在您的情况下,它将它们初始化为零。
就我个人而言,我讨厌此警告,因为我觉得它很烦人并始终将其关闭。我想如果您希望编译器在班级中添加成员而忘记初始化时,这将很有用。当然,编译器无法阅读您的想法,并且看到您故意没有初始化它们,因为您希望它们为零。
所以,忽略并继续前进:(。
相关文章:
- 在C和C++中初始化结构中的数组
- 我们可以用参数化构造函数初始化结构的数组吗?
- 尝试初始化结构内的联合时出错
- 使用其他成员初始化结构的成员?
- 使用构造函数初始化结构还是在之后设置其值更好?
- 如果不初始化结构中的向量,它会自动为空还是具有随机内存位置的值?
- 如何在另一个结构中初始化结构数组?
- 如何在构造函数中初始化结构体的动态数组?
- 初始化结构中的联合 - c++
- 尝试初始化结构向量时出现编译错误
- 用于初始化结构的 void 指针强制转换
- 初始化结构的两种方式
- 使用用户定义的构造函数初始化C++结构
- 使用初始值设定项列表初始化结构,对于 std::array 失败
- 在 c++ 中初始化结构的指针
- 无序列图会创建一个零初始化结构吗?
- 如何在C++中初始化结构
- C 用结构指针初始化结构
- 在C 中初始化结构数组
- 使用数组聚合初始化结构数组