我有一个方法,旨在按照定义的其他方法打印出值。我将发布直接涉及的方法以减少代码。但是,Visual Studio 返回错误
expression must have struct or union type
我的代码如下:
int i;
double cat[12];
#define MAX 3
#define GRAMS 64
struct CatFoodInfo {
int SKU[MAX], CalPerServ[MAX];
double price[MAX], lbs[MAX], kg[MAX], grams[GRAMS], servings[MAX], costPerServ[MAX], costPerCal[MAX];
} CatFoodInfo;
void displayReportData() {
for (i = 0; i < MAX; i++) {
int sku = cat[i + (3 * i)];
double price = cat[i + (1 + (3 * i))];
double lbs = cat[i + (2 + (3 * i))];
int calPerServ = cat[i + (3 + (3 * i))];
int kg = cat[kg];
printf("%07d %10.2lf %10.1lf %10.4lf %9d %8d %8.1lf %7.2lf %7.5lf", sku, price, lbs, kg, cat.grams[i], calPerServ, cat.servings[i], cat.costPerServ[i], cat.costPerCal[i]);
}
}
上面的代码将返回该错误。我尝试更改printf
fromcat.grams[i]
到的值CatFoodInfo.grams[i]
。这消除了错误,但只返回零。
解决这个问题的正确方法是什么,或者我哪里出错了?