声明typedef类型

时间:2012-07-19 10:42:43

标签: c++ typedef declaration

struct mystruct
{
    int   i;
    double f;
} ;

typedef mystruct myotherstruct;

//the other .cpp file
struct mystruct;  //OK,this is a correct forward declaration.
struct myotherstruct; // error C2371(in vc2k8): 'myotherstruct' : redefinition; different basic types

大家好。 为什么我不能转发声明myotherstruct?

2 个答案:

答案 0 :(得分:1)

如果没有明确声明typedefs的类型定义,则无法转发声明struct。您应首先转发声明struct然后typedef

struct mystruct;
typedef mystruct myotherstruct;

答案 1 :(得分:1)

myotherstruct标识符不是struct标记,它本身就是类型名称。您在没有struct关键字的情况下使用它。定义后,该名称不能重用于struct标记。在您的示例中,您没有正向声明myotherstruct类型,而是使用标记struct向前声明myotherstruct,因为名称为myotherstruct而导致错误已被用于typedef