【发布时间】:2016-03-30 20:54:00
【问题描述】:
我在 VS2012 上使用代码分析(又名 FxCop),我有一些表单功能
void ReadTable(FILE *fd)
{
char label[32];
/* ... */
fscanf(fd, "%s", label);
/* ... */
if (strcmp(label, "TEST") == 0)
{
/* ... */
}
}
这些总是抛出 warning C6054: String 'label' might not be zero-terminated. 我理解为什么会发生这种情况,因为它们不能使用 SAL 注释来指示来自 fscanf 的输出将以空值终止,但事实仍然存在。
有没有办法摆脱这个警告(不禁用相关的代码分析检查批发)?还是我在使用scanf 时必须忍受的?
【问题讨论】:
-
@user3121023 我现在正在使用该测试进行编译(这需要一段时间),但即使可行,它也不是一个真正可扩展的解决方案,尤其是在
label是动态分配。