声明"struct"类型的原型 - C.

Jam*_*ing 7 c struct

我已经绞尽脑汁待了一段时间,我只是想创建一个返回结构的方法,因为我希望返回两个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)

Mar*_*off 8

您希望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)