C:typedef结构。函数无法识别结构的类型

时间:2014-01-19 15:26:31

标签: c struct typedef

所以情况是...... 我有三个文件:main.c | functions.h | functions.c

在main.c中我创建了一个struct,并将其定义为一个名为“score”的新类型:

typedef struct
{
    int iWins = 0, iWins2 = 0, iTies = 0;
} score;

然后我创建了一个名为SpScore的“得分”实例:

score SpScore;

我将它传递给一个名为spgame_f的函数(在main.c中):

spgame_f(SpScore);

spgame_f位于functions.c中。现在编译它时会给我错误:

unknown type name: score

我也尝试在“functions.c”的顶部定义结构,这给了我错误:

expected ':', ',', ';', '}' or '__attribute__' before '=' token" (error for the line where the integer's are declared in the struct).

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您无法在struct中初始化typedef成员,这没有意义。你应该这样做:

typedef struct
{
    // No = 0 here
    int iWins, iWins2, iTies;
} score;

int main() {
    // Initializing to 0 here
    score SpScore = {0,0,0};
}

此外,您应该将typedef放在.h头文件中并将其包含在使用该定义的所有.c / .h文件中,否则您将得到一个“未知类型...”错误:

score.h

#ifndef __SCORE_H__
#define __SCORE_H__

typedef struct
{
    // No = 0 here
    int iWins, iWins2, iTies;
} score;

#endif

main.c等。

#include "score.h"

int main() {
    score pScore = {0,0,0};
    return 0;
}