将C代码和结构初始化和分配移动到C 编译器
Move C code with struct initialization and assignment to c++ compiler
为什么在c 中声明结构时没有直接的评估?我有以下C代码,无法与C 编译器一起使用:
static const struct {
struct structtype1 header;
struct {
struct structtype2 intf;
struct structtype3 src;
} foo1, foo2;
} bar = {
.header = {
.byte1 = 0x23,
.length = 12,
.count1 = 4,
.count2 = 4,
},
.foo1= {
.intf = {
.data = 0x23,
.len = 2,
.ep = 3,
},
.src= {
.data = 0x21,
.len = 4,
.ep = 2,
},
},
.foo2= {
.intf = {
.data = 0x17,
.len = 11,
.ep = 2,
},
.src= {
.data = 0x20,
.len = 2,
.ep = 1,
},
},
};
您有两个选择:
1.使用该构建器
-
这将定义成员的值,但所有结构都是相同的
struct _pnt { int x,y,z; _pnt() { x=0; y=0; z=0; } }; _pnt p0,p1,p2; // all points are initialized to (0,0,0)
2.使用定义照常,它仍然可以在我使用的任何C 编译器中都起作用
- 我认为这就是您想要的
-
不要忘记成员的顺序与声明中的相同!!!
struct _pnt { int x,y,z; }; _pnt p0={0.0,0.0,0.0}, p1={1.0,0.0,0.0}, p2={0.0,1.0,0.0};
-
问题是您必须启动所有成员,而不仅仅是一些成员!
相关文章:
- 编译器调用复制运算符而不是移动运算符
- 编译器错误:只需要复制省略,但似乎需要移动构造函数(通过编译器)
- 为什么编译器使用移动构造函数而不是复制构造函数
- 是否可以将移动的变量标记为不再可用,并在使用它时收到编译器警告?
- 为什么将双端移动到向量时出现 C26486 编译器错误?
- 编译器尝试使用复制构造函数,即使我正在移动
- 容器中需要显式移动构造函数,没有编译器定义的移动构造函数
- 编译器定义的移动构造函数与析构函数
- 编译器是否优化了默认移动构造函数?
- 从类移动向量(与 2013 编译器相比)
- 编译器生成的移动成员在静态数据成员上功能
- 复制ctor被称为而不是移动ctor-可以编译器发出警告
- 编译器不生成移动构造函数并移动分配
- 为什么编译器在有模板构造函数时生成复制/移动构造函数
- 将C代码和结构初始化和分配移动到C 编译器
- 将C++主方法移动到其自己的文件时发生编译器错误
- 编译器不使用移动 c'tor / 赋值操作器?
- 为什么包含std::字符串流的类的移动语义会导致编译器错误
- 编译器忽略显式定义的移动构造函数
- 最新的英特尔c++编译器是否支持隐式移动构造函数和移动赋值