最近在项目编译过程中遇到了一个莫名的编译error:internal compiler error: in gimplify_init_constructor, at gimplify.c:4271。此问题居然是报了编译器的Bug。
【1】问题发生的上下文
该Error是在数组初始化时引起的,代码写法如下:
POPUPITEM ViewModelMenuWarning::mPopupTable[POPUP_MAX]{};
【2】查看下gcc版本:
test@test:~/Project/ecoo$ gcc -v
gcc 版本:gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
gimplify.c (4.8.4版本)源码:https://github.com/gcc-mirror/gcc/blob/gcc-4_8_4-release/gcc/gimplify.c
【3】解决办法:
(1)修改代码写法:
POPUPITEM ViewModelMenuWarning::mPopupTable[POPUP_MAX]{{}};
(2)切换升级gcc
可以将gcc从4.8 升级到 gcc 5.2
针对该问题,stack overflow 有该问题的详细描述,可参考:
https://stackoverflow.com/questions/28251530/brace-initialization-of-an-array-of-structs-in-c11