声明类型为“的原型”;结构";-C
我为此绞尽脑汁已经有一段时间了,我只是想创建一个返回struct的方法,因为我希望返回两个int 我的方法原型如下:声明类型为“的原型”;结构";-C,c,struct,C,Struct,我为此绞尽脑汁已经有一段时间了,我只是想创建一个返回struct的方法,因为我希望返回两个int 我的方法原型如下: typedef struct RollDice(); 此外,该方法本身: typedef struct RollDice() { diceData diceRoll; diceRoll.dice1 = 0; diceRoll.dice2 = 0; return diceRoll; } 编译器显示原型和实际方法的错误:“语法错误:”)“ 结构本身: typedef
typedef struct RollDice();
此外,该方法本身:
typedef struct RollDice()
{
diceData diceRoll;
diceRoll.dice1 = 0;
diceRoll.dice2 = 0;
return diceRoll;
}
编译器显示原型和实际方法的错误:“语法错误:”)“
结构本身:
typedef struct
{
int dice1;
int dice2;
}diceData;
很明显我错在哪里了吗?我已经尝试了我能想到的一切
谢谢
编辑/解决方案:
为了让程序使用建议的解决方案,我必须对结构进行以下更改
typedef struct diceData
{
int dice1;
int dice2;
};
您将需要
typedef结构。。。diceData
出现在函数之前,然后函数的签名将是diceData RollDice()
typedef
表示每当发生
时,将其视为
的意思。因此,在您编写的情况下,您告诉编译器,struct RollDice
是原始类型(当然,没有定义这样的结构);然后它看到了它期待一个新别名的地方。这只是马克·拉沙科夫答案的一个具体版本:
typedef struct
{
int dice1;
int dice2;
} diceData;
diceData RollDice()
{
diceData diceRoll;
diceRoll.dice1 = 0;
diceRoll.dice2 = 0;
return diceRoll;
}
问题是你没有给这个方法一个返回类型。看起来您应该返回一个
dicedata
类型,这样原型签名看起来像
struct dicedata RollDice();
方法呢
struct dicedata RollDice()
{
diceData diceRoll;
diceRoll.dice1 = 0;
diceRoll.dice2 = 0;
return diceRoll;
}
不能使用typedef定义函数 首先键入定义您的结构
typedef struct
{
int dice1;
int dice2;
} diceData;
然后将函数声明为
diceData RollDice()
{
diceData diceRoll;
diceRoll.dice1 = 0;
diceRoll.dice2 = 0;
return diceRoll;
}
将RollDice声明为返回diceData结构的函数
另一种处理返回两个值的方法是使用out参数
在这种情况下,函数将返回一个布尔值(表示成功或失败),并将两个指向整数的指针作为参数。在函数中,您将填充指针的内容,如下所示:
bool_t rollDice(int *pDice1, int *pDice2)
{
if (pDice1 && pDice2)
{
*pDice1 = 0;
*pDice2 = 0;
return TRUE;
}
else
{
return FALSE;
}
}
int main(int argc, char **argv)
{
int a, b;
rollDice(&a, &b);
return 0;
}
谢谢你的详细回答