我有一段C代码,需要转换成C++,并尽量最小化修改。
在C语言中,以下代码是有效的:
typedef struct _type_t
{
int a;
int b;
int c[];
}type_t;
type_t var = {1,2,{1,2,3}};
但在C++11中,它会产生错误:
错误:对于
int [0]
过多的初始值
但我不能给type_t.c
一个固定的大小,因为它需要适用于任何大小的数组。
所以我需要改变这个结构体:
typedef struct _type_t
{
int a;
int b;
int *c;
}type_t;
但是我需要改变
的内容
。type_t var = {1,2,{1,2,3}};
由于当前代码存在错误,需要将其更改为其他内容
错误:对于类型int*,标量初始化程序周围的大括号
将第三个元素强制转换为(int[])
会导致错误
错误:取临时数组的地址
这段代码来自micropython, parse.c:
#define DEF_RULE_NC(rule, kind, ...) static const rule_t rule_##rule = { RULE_##rule, kind, #rule, { __VA_ARGS__ } };
我该如何初始化数组并将其赋值给
type_t.c
?
c
的大小来完成这个任务。例如,如果int c[];
变成了int c[3];
那么它就能够正常工作了。 - DimChtz