警告由vala生成的c代码生成.
警告:初始化程序周围缺少大括号
代码有效但警告很烦人.警告引用的vala代码是
struct Position {uint x; uint y;}
private static Position positions[8];
Run Code Online (Sandbox Code Playgroud)
生成的C代码是
static Position det_positions[8] = {0};
Run Code Online (Sandbox Code Playgroud)
我已经尝试了六种不同方式初始化位置,但似乎无法获得满足警告的语法.这是GCC的错误53119还是有办法解决它?
apm*_*ell 58
是的,这似乎与GCC错误53119有关.如果你将C声明更改为,它就会消失{{0}}.你的选择是:
{{0}}而不是{0}在该行上使用sed等.extern在Vala中声明数组,并在其他地方编写C定义.(#2的永久版本.)struct foo { int bar; Position positions[8]; } static foo position_holder和{0}将被初始化position_holder.bar这是罚款和警告消失.Adi*_* Ya 14
当多维数组被设置为-Wall编译器标志时,多维数组被视为线性数组(虽然它仍然正确并且代码运行完美),也会出现此警告.
例如
char array[5][10][2] = {\
"0","0","0","0","0","0","0","0","0","0",\
"1","1","1","1","1","1","1","1","1","1",\
"2","2","2","2","2","2","2","2","2","2",\
"3","3","3","3","3","3","3","3","3","3",\
"4","4","4","4","4","4","4","4","4","4" };
Run Code Online (Sandbox Code Playgroud)
这将生成警告.
执行以下更改以删除警告,如下所示
char array[5][10][2] = {\
{"0","0","0","0","0","0","0","0","0","0" },\
{"1","1","1","1","1","1","1","1","1","1"},\
{"2","2","2","2","2","2","2","2","2","2"},\
{"3","3","3","3","3","3","3","3","3","3"},\
{"4","4","4","4","4","4","4","4","4","4"} };
Run Code Online (Sandbox Code Playgroud)
如果我错了,请纠正我.