我正在开发基于C ++的项目,我在下面的语句中收到一个错误:
代码:
typedef char pb_static_assertion_UINT32_T_WRONG_SIZE3507__COUNTER__ [(sizeof(uint32_t)== 4)? 1: - 1]; //我收到错误的行
错误: " C:\ Users \ tkumar \ Documents \ LDRA \ LDRAunit_C_CPP_9.7.1 \ trial \ inszt_algctivationgateway.cpp",第4330行:错误#95:数组的大小必须大于零&#34 ;
参考: uint32_t使用:
定义typedef unsigned long uint32_t;
我怀疑无条件的长尺寸,这里有人解释告诉我这个错误背后的原因吗?
答案 0 :(得分:0)
1)Code-Composer编译器以COFF或EABI格式输出对象。当选择COFF时,至少对于某些微处理器,无符号长度为40位。选择EABI时,它是32位。 2)对于某些TI微处理器,例如C2000系列,最小的可寻址字是16位,而对于32位类型,sizeof将输出2而不是4。 3)其中一个或另一个可能导致你的sizeof语句返回4以外的东西,导致?:选择-1。所以数组大小小于0。 4)在typedef之后不要认为你真的想要一个数组。