【发布时间】:2016-07-18 06:19:04
【问题描述】:
我尝试创建一个包含指向其类型的指针的结构:
#include <stdio.h>
struct test{
test* t;
};
int main(){
return 0;
}
使用 gcc 编译时,此代码产生了错误:
:5:2: 错误:未知类型名称“测试”
但是在 g++ 上编译时它运行良好。
所以我想了解的是:
1) 造成这种差异的原因是什么?我认为如果 gcc 使用 one-pass 编译而 g++ 使用 multipass 可以解释它,但据我了解,这是不正确的。
2) 如何避免此错误并使用指向其自身类型的指针定义结构? (除非没有其他选择,否则我不想使用 void* 或使用强制转换)
【问题讨论】:
-
试试:struct test * t;作为结构变量。
-
C 和 C++ 是不同但相关的语言,您不应该期望 C++ 程序也是有效的 C 程序,尽管通常情况正好相反。
-
C 和 C++ 是不同的语言。请选择一个适合您问题的标签。
-
@CiaPan OP 实际上询问这些语言之间的区别。
标签: c struct compiler-errors