主题中讨论的其他器件:C2000WARE、
大家好
我浪费了大量时间进行调试、因为我在 printf 语句中使用了错误的格式说明符、导致打印出错误的数字、这让我不得不大老远地追逐。
这使我们想知道为什么我没有从编译器那里收到任何有关这一点的警告。 在检查是否启用了所有警告和备注内容后、我仍然看不到警告。
构建了一个简单的新项目来进行测试、并就此向 TI 报告。 突然我收到了预期的警告
进一步深入探究这个,我发现它是一个包括一个包括,包括一个包括 stdlib.h ,这是罪魁祸首。
我没有为你做一个拉链,但这里是一个简单的食谱:
从 C2000Ware 导入 empty_driverlib 项目。
将 empty_driverlib_main.c 的内容替换为这个
//#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
void f(void)
{
uint32_t u32var=0;
int32_t s32var=0;
printf("%i", u32var);
printf("%i", s32var);
}
使用"构建所选文件"选项编译此文件。 并验证您是否看到有关格式的两条警告。
"c:\\ti\\ccs1220\\ccs\\tools\\compiler\\ti-CGT-C2000_22.6.0.LTS \\bin\\cl2000"-v28 -ml -mt /ti/C2000Ware_4_03_00_00/driverlib/f2837xd/driverlib - cla_support=cla1 /ti/ccs1220/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/include --float_support=fpu32 --tmu_support=tmu0 -
"..\empty_driverlib_main.c"、第10行:警告#183-D:参数与相应的格式字符串转换不兼容
"..\empty_driverlib_main.c"、第11行:警告#183-D:参数与相应的格式字符串转换不兼容
现在使用`//#include 取消注释第一行 `μ A
再次编译、看到警告现已消失。
我使用的 CCS 版本:12.2.0.00009
和 C2000编译器 ti-CGT-C2000_22.6.0.LTS
我正在为 TMS320f28379D 进行编译 µC、但我不希望将其孤立于此。
编辑:
请注意 include 问题的顺序、如果在 stdio 之后包含 stdlib、则会按预期提供警告。