工具/软件:TI C/C++编译器
您好!
使用 Visual Studio 交叉编译代码段我注意到有关使用未初始化变量的警告、C6000编译器未报告该警告。 我已经注意到、它在更大的块中掩盖了错误、但它可以简化为类似的东西
float sample (short *x) { 浮点和、a = 0.5、y、b; int i、cnt = 100; 对于(i = 0;i < cnt;i++) { 如果(b < 5) a += x[i]+3.0/4; 其他 a = x[i]+3.0/4; 总和+= a; } y =总和/(浮点)(cnt); 返回 y; }
编译器不会注意到在使用之前未初始化'sum'。
完整的命令行为
调用:C6000编译器 的"D:/TI/ccsv7/tools/compiler/c6000_7.4.23/bin/cl6x /TI/pdk_C6670_1_1_2_6/packages/ti/drv/pcie /TI/pdk_C6670_1_1_2_6/packages/ti/platform - mv6600 --abi=eabi -O3 -g - include_path="D:/TI/ccsv7/tools/compiler/c6000_7.4.23/include /TI/pdk_C6670_1_1_2_6/packages/ti/drv/cppi /TI/pdk_C6670_1_1_2_6/packages/ti/drv/fftc - include_path="D:/TI/pdk_C6670_1_1_2_6/packages/ti/csl - include_path="D:/TI/pdk_C6670_1_1_2_6/packages/ti/drv/qmss /TI/dsplib_c66x_3_4_0_0 - include_prefrom_path="D:opt_define_remote_display_romage=-refrom_be_display_bromage=-refrom_tr_b_-refrom_b_-refrom_-ref_b_b_b_-refromage_-ref_b_b_b_-refug_be_be_brom_b_-tr_b_-ref_-ref_brom_b_b_-rom_b_-ref_b_-ref_b_-ref_b_b_b_b_-refug_b_-_brom_b_-_-_-ref_b_-ref_brom_b_-_-_-ref_b_-ref_brom_b_-ref_b_-_b_b_-ref_b_-_brom_b_-
有趣的是、如果在循环中注释掉'if'语句、编译器会识别空循环并将其删除、但仍然看不到未初始化的'sum'。 仅当对于已删除的循环编译器报告 sum 问题时。
float sample (short *x) { 浮点和、a = 0.5、y; int i、cnt = 100; 对于(i = 0;i < cnt;i++) { 总和+= a; } y =总和/(浮点)(cnt); 返回 y; }
我想从编译器专家那里了解一下、这不是一个错误吗?
谢谢。