gpt4 book ai didi

c - 声明结构以避免混合声明和代码

转载 作者:行者123 更新时间:2023-11-30 17:44:58 26 4
gpt4 key购买 nike

我使用 -Wdeclaration-after-statement 进行编译,并收到以下警告:

ISO C90 禁止混合声明和代码

这是因为我需要在填充数组之前执行某些操作。

我想知道初始化和声明汽车的好方法或替代方案是什么,这样就可以避免此警告。

有问题的代码看起来像这样:

int my_func() {
typedef struct Car_ {
char *brand;
int amount;
int color;
} Car;

int fixed = 0;
int total1 = getAmountBase(brand1);
int total2 = getAmountSub(brand2);
int total3 = getAmountBase(brand3);
int total4 = getAmountSub(brand4);
int grand = getAmountBase(brand7);
// more operations...
if (grand7 != NULL) {
grand7 = calcBase(grand7, total6);
fixed = addGrand(grand7);
}

Car cars[] = { // warning here.
{"brand1", total1, RED},
{"brand2", total2, RED},
{"brand3", total3, RED},
{"brand4", total4, RED},
{"brand7", fixed, RED},
};

// ...
}

最佳答案

预先声明它并稍后分配计算部分:

Car cars[] = {
{"brand1", -1, RED},
{"brand2", -1, RED},
{"brand3", -1, RED},
{"brand4", -1, RED},
{"brand7", -1, RED},
};

...

cars[0].amount = total1;
cars[1].amount = total2;
/* etc */

或者,如果合适的话,使用 -std=c99 进行编译。

关于c - 声明结构以避免混合声明和代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com