我正在尝试将在VS2010中编译良好的C++代码移植到c(gcc c99),但是我遇到了编译错误。这与其他自引用结构体问题有些不同,因为我有两个用户定义类型,每个类型都包含对彼此的指针。似乎我的前向声明不够。
struct potato; //forward declare both types
struct tomato;
struct potato
{
potato* pPotato; //error: unknown type name ‘potato’
tomato* pTomato;
};
struct tomato
{
potato* pPotato;
tomato* pTomato;
};
为什么这段代码在gcc 99中不能正常运行?作为C++代码它为什么可以?我该如何修改才能获得与c99相同的行为?