Per*_*etz 21 c struct initialization
我有一个结构类型,如下所示:
typedef struct position{
float X;
float Y;
float Z;
float A;
} position;
typedef struct move{
position initial_position;
double feedrate;
long speed;
int g_code;
} move;
Run Code Online (Sandbox Code Playgroud)
我试图静态初始化它,但我还没有找到办法.这可能吗?
Ker*_* SB 31
它应该像这样工作:
move x = { { 1, 2, 3, 4}, 5.8, 1000, 21 };
Run Code Online (Sandbox Code Playgroud)
结构和数组的大括号初始值设定项可以嵌套.
Jas*_*son 18
C没有像C++那样的结构/类的静态成员对象的概念...在C中,static结构和函数声明的关键字仅用于定义该对象仅对当前代码模块可见在编译期间.因此,使用该static关键字的当前代码尝试将无效.另外,您无法像声明那样在声明点初始化结构数据元素.相反,您可以使用指定的初始值设定项执行以下操作:
static struct {
position initial_position;
double feedrate;
long speed;
int g_code;
} move = { .initial_position.X = 1.2,
.initial_position.Y = 1.3,
.initial_position.Z = 2.4,
.initial_position.A = 5.6,
.feedrate = 3.4,
.speed = 12,
.g_code = 100};
Run Code Online (Sandbox Code Playgroud)
当然,初始化这样的匿名结构不会允许您创建多个版本的结构类型而无需专门键入其他版本,但如果这是您想要的全部,那么它应该完成这项工作.
#include <stdio.h>
struct A {
int a;
int b;
};
struct B {
struct A a;
int b;
};
static struct B a = {{5,3}, 2};
int main(int argc, char **argv) {
printf("A.a: %d\n", a.a.a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果:
$ ./test
Aa:5
| 归档时间: |
|
| 查看次数: |
60063 次 |
| 最近记录: |