未知类型名称C vs C++

CIs*_*ies 1 c struct compiler-errors

我试图创建一个包含指向其类型的指针的结构:

#include <stdio.h>
struct test{
    test* t;
};
 int main(){
    return 0;
 }
Run Code Online (Sandbox Code Playgroud)

使用gcc编译时,此代码产生了一个错误:

:5:2:错误:未知类型名称'test'

但是在使用g ++进行编译时,它就可以了.

所以我想要了解的是:

1)是什么导致这种差异?我认为如果gcc使用一次通过编译而g ++使用可以解释它的multipass,但据我所知,这不是真的.

2)如何避免此错误并使用指向它自己类型的指针定义结构?(除非没有其他选择,否则我不想使用void*或使用cast)

Via*_*rus 6

你必须在test*t之前编写struct来定义指向struct的指针:

struct test* t;
Run Code Online (Sandbox Code Playgroud)

这是C和C++之间的一个不同.