我已经绞尽脑汁待了一段时间,我只是想创建一个返回结构的方法,因为我希望返回两个int.
我的方法原型如下:
typedef struct RollDice();
Run Code Online (Sandbox Code Playgroud)
方法本身也是:
typedef struct RollDice()
{
diceData diceRoll;
diceRoll.dice1 = 0;
diceRoll.dice2 = 0;
return diceRoll;
}
Run Code Online (Sandbox Code Playgroud)
编译器显示错误:"Syntax error: ')'"原型和实际方法.
结构本身:
typedef struct
{
int dice1;
int dice2;
}diceData;
Run Code Online (Sandbox Code Playgroud)
我出错的地方很明显吗?我已经尝试了所有我能想到的东西.
谢谢
编辑/解决方案:
为了使程序能够使用建议的解决方案,我必须对结构进行以下更改,
typedef struct diceData
{
int dice1;
int dice2;
};
Run Code Online (Sandbox Code Playgroud)
您希望typedef struct ... diceData在函数之前发生,然后函数的签名将是diceData RollDice().
typedef <ORIGTYPE> <NEWALIAS>意味着无论什么时候<NEWALIAS>发生,都要像对待它一样对待它<ORIGTYPE>.所以在你编写的内容中,你告诉编译器它struct RollDice是原始类型(当然,没有定义这样的结构); 然后它会看到()它期待一个新别名的位置.
小智 5
这只是Mark Rushakoff答案的具体版本:
typedef struct
{
int dice1;
int dice2;
} diceData;
diceData RollDice()
{
diceData diceRoll;
diceRoll.dice1 = 0;
diceRoll.dice2 = 0;
return diceRoll;
}
Run Code Online (Sandbox Code Playgroud)