问题: 对于某些C源文件,编译出错,显示Fatal error: Internal fault: 0x55af in XXX,其中行号都是最后一行,怀疑是最后没有加对于空行而导致的,但是加了空行也没解决问题.
办法:是arm的编译器的bug,去下载对应的那个848补丁升级即可.升级后的版本应该是
ARM C Compiler, ADS1.2 [Build 848]
具体解释,参考:
Build 848 fixes problems with access to nonstatic member functions in C++, functions with pointer-to-function parameters in C++, register stacking in Thumb code, ordering of arguments of shifted compares, float/double stores incorrectly being optimized away, a rare peephole optimization at -O2, boolean conversion in C++ code, incorrect division due to register allocation, evaluation of shift operations, corruption of SB in RWPI code, and stores to malloc’d pointers following memcpy. The C++ compiler now also allows multiple declaration specifications in conditions.
Build 844 added a new switch -Wc to suppress the #pragma warning C2813W.
Build 842 fixes some problems with code generation differences between platforms, Thumb branch/literal pool issues, code optimization, ‘#pragma arm section’, "Internal faults" 0xd288 and 0x2696, and initializing nested structures in C++.
Build 837 fixed faults in the areas of generation of browse information, __packed bitfield initialization, code optimization, DWARF2 line tables, __packed typedefs, #pragma preprocessing, "Internal faults" 0x49de and 0x55af, and memory leaks when compiling with CodeWarrior.