gpt4 book ai didi

c - 错误 : expected ‘:’ , ‘,’ 、 ‘;’ 、 ‘}’ 或 ‘__attribute__’ 在 ‘=’ token 之前 & 错误:预期 ‘)’ 在 ‘va’ 之前

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:56 25 4
gpt4 key购买 nike

我在 GCC 终端 (centos linux) 中为 ATM 项目编译以下 c 和 .h 代码时收到以下错误。请帮忙,因为我是编程新手。

validate_acc.h
#ifndef _VALIDATE_ACC_
#define _VALIDATE_ACC_

struct validate_acc {
int user_acc_try, i = 0;
int user_has_not_entered_right_acc = 1;
int retries = 3;
};

typedef struct validate_acc Validate_acc;




#endif

=============================================

validate_acc.c

#include<stdio.h>
#include "validate_acc.h"

extern int account_number;

void (Validate_acc va)
{


va.user_acc_try, va.i = 0;
va.user_has_not_entered_right_acc = 1;
va.retries = 3;



while(va.retries > 0 && va.user_has_not_entered_right_acc == 1){
printf("\nPlease enter your account number: ");
scanf("%d", &va.user_acc_try);

if(va.user_acc_try != account_number){
printf("You entered the wrong account number\n");
va.retries--;
}
else{
va.user_has_not_entered_right_acc = 0;
}
}
}

====================错误

[linux@localhost Assignment1]$ gcc -c validate_acc.c
In file included from validate_acc.c:2:0:
validate_acc.h:5:23: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token
int user_acc_try, i = 0;
^
validate_acc.c:6:20: error: expected ‘)’ before ‘va’
void (Validate_acc va)

最佳答案

结构类型 声明不支持初始化器,例如您尝试提供的。此外,结构对象的初始化器的表达方式与您尝试做的完全不同。您的 struct 声明应具有以下形式:

struct validate_acc {
int user_acc_try;
int i;
int user_has_not_entered_right_acc;
int retries;
};

它声明了一个类型,而不是(本身)任何具有您可以初始化的关联存储的对象。这就是为什么你可以像你所做的那样为其声明一个类型别名:

typedef struct validate_acc Validate_acc;

如果您想对该类型的对象进行初始化,那么您必须在每个对象的基础上进行初始化,如下所示:

struct validate_acc validate_object = { 0, 0, 1, 3 };

或者,使用 typedefed 别名:

validate_acc validate_object = { 0, 0, 1, 3 };

也许您的想法是为您的结构成员提供默认值,但 C 没有这样的功能。但是,您可以创建快捷方式初始化宏,例如

#define VALIDATE_ACC_DEFAULTS { 0, 0, 1, 3 }

.然后你可以做

struct validate_acc validate_object = VALIDATE_ACC_DEFAULTS;

在这种情况下,这并没有缩短代码,但确实使它更清晰。假设您将宏定义放在与结构声明相同的 header 中,它还提供了一个可以更改默认初始化值的中心位置。

关于c - 错误 : expected ‘:’ , ‘,’ 、 ‘;’ 、 ‘}’ 或 ‘__attribute__’ 在 ‘=’ token 之前 & 错误:预期 ‘)’ 在 ‘va’ 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34914634/

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