0

我的代码编译并运行,但我仍然收到一条 lint 错误消息:

--- 模块:LunchMenu_main.c (C)
} lunch[LUNCHES] =
LunchMenu_main.c: 警告 956:(注意 -- 非 const、非易失性静态或外部变量“午餐”)

虽然演示了非常量静态和外部变量的使用,但使用它们有很多陷阱,除非没有其他合理的解决方案,否则应避免使用它们。有什么办法可以避免这些类型的变量,或者我需要这些变量来修复这个错误吗?这是我的代码:

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;
}
4

1 回答 1

0

可能会给出警告,因为您的变量lunch是使用在同一个 C 文件中定义的类型定义的,因此您不能使用相同类型在其他编译单元中定义其他变量,因此赋予变量全局可见性没有意义。应该是static

...使用它们有很多陷阱,除非没有其他合理的解决方案,否则应避免使用它们。

我不敢苟同。是的,它们有一些陷阱,但我认为没有任何理由不惜一切代价避免它们。以负责任的方式使用它们可以帮助您更好地构建代码。

于 2012-11-26T09:19:34.933 回答