typedef struct XXX XXX是宣言,还是实现

typedef struct XXX XXX是声明,还是实现?typedef struct MyPtr MyPtr这样,是声明,还是实现?我在GCC下编译

typedef struct XXX XXX是声明,还是实现?
typedef struct MyPtr MyPtr;
这样,是声明,还是实现?

我在GCC下编译通过了,不可思议那。

在我的印象中,struct MyPtr;只是用于声明的,可以避免编译期错误,但在link的时候不能通过的,所以还需要在其它地方定义实现一下:
struct MyPtr
{
};

请大侠帮忙解释一下,我现在有点想不通,呵呵。

[解决办法]
typedef在C中属于定义,在C++中属于声明。所以对于如下代码:

typedef struct MyPtr MyPtr;
typedef struct MyPtr MyPtr;


在C中会发生重复定义错误,但在C++中是合法的重复声明。