C中的typedef行为 为什么我在这个代码中会出错?即使我不链接但只编译它仍然会出错。为什么编译器不考虑它存在于另一个文件中的可能性? 有人能解释一下编译器是如何处理typedef语句的吗

C中的typedef行为 为什么我在这个代码中会出错?即使我不链接但只编译它仍然会出错。为什么编译器不考虑它存在于另一个文件中的可能性? 有人能解释一下编译器是如何处理typedef语句的吗,c,C,提前谢谢 typedef struct p* q; int main() { struct p{ int x; char y; q ptr; }; struct p p={1,2,&p}; printf("%d\n",p.ptr->ptr->x); return 0; } ps:取消对不完整类型的引用是我在gcc中遇到的错误。main外部的“stru

提前谢谢

 typedef struct p* q; 

    int main()
    {
     struct p{
      int x;
      char y;
      q ptr;
      }; 
      struct p p={1,2,&p};
      printf("%d\n",p.ptr->ptr->x);
      return 0;
    }

ps:取消对不完整类型的引用是我在gcc中遇到的错误。

main外部的“struct p”和main内部的“struct p”是不同的类型,因为它们在不同的范围中定义。如果您将两个声明都放在main之外或都放在main之内,编译器将接受它


当您在函数内部定义某个内容时,您会说“这是我在函数内部使用的定义;它不适用于函数外部的任何内容。”

您介意分享您遇到的错误吗?您应该指定错误是什么,以便人们能够最好地了解发生了什么。
struct p
内部
main
和外部是不同的!