我的代码编译并运行但我仍然收到一条lint错误消息:
---模块:LunchMenu_main.c(C)
午餐[午餐] =
LunchMenu_main.c:警告956 :(注意 - 非常量,非易失性静态或外部变量'午餐')
虽然证明了使用非恒定的静态和外部变量,但使用它们有许多缺陷,除非没有其他合理的解决方案,否则应该避免使用它们。有什么办法可以避免这些变量,还是我需要这些变量来修复这个错误?这是我的代码:
struct Food
{
char *name;
int weight, calories;
} lunch[LUNCHES] =
{{(char *)"apple", 4, 100}, {(char *)"salad", 2, 80}};
int main(void)
{
int counter;
struct Food *foodPtr = &lunch[0];
printf("%-10s %-10s %-10s\n", "name", "weight", "calories");
for (counter = 0; counter < 2; counter++)
{
foodPtr = &lunch[counter];
printf("%-10s %-10d %-10d\n",
foodPtr->name, foodPtr->weight, foodPtr->calories);
}
return 0;
}
答案 0 :(得分:0)
由于您的变量lunch
是使用同一C文件中定义的类型定义的,因此可能会发出警告,因此您无法使用相同类型在其他编译单元中定义其他变量,因此提供变量全局可见性没有意义。它应该是static
。
...使用它们有很多陷阱,除非没有其他合理的解决方案,否则应该避免使用它们。
我不同意见。是的,他们有一些陷阱,但我认为没有任何理由不惜一切代价避免它们。以负责任的方式使用,它们可以帮助您更好地构建代码。