c++ - 为什么没有编译错误呢?

标签 c++ c compiler-errors

当我编译下面的代码时,它运行时没有任何错误。

#include<stdio.h>
struct adjacency
{
    struct node* dest;
    struct adjacency* link;
};
struct node
{
    char nodename;
    struct node* next;
    struct adjacency* adj;
};
int main( void )
{
    //code
}

但是为什么?我认为它应该显示编译错误,因为在结构邻接内部使用它之前没有定义结构节点。但是它运行得很好。可能的原因是什么?

最佳答案

代码没有任何问题。 adjacency 内的 struct node 表示有一个名为 node 的结构,而 struct node* 表示 adjacency 保存指向结构节点的指针。您不需要完整的类型(这是尚未看到其定义的类型的正式术语)来声明指针。如果adjacency有一个成员struct node link;你会得到一个错误。

关于c++ - 为什么没有编译错误呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19893454/

相关文章:

c++ - -gcc 不支持 Wextra-semi?

c++ - 如何确保在文件 IO (WriteFile()) 上将数据刷新到 HDD(未缓冲)

java - 找不到符号:方法prepareStatement(String)位置:类型连接

c - restrict 关键字有多严格?

sqlite - 在 Visual Studio 2013 中编译 sqlite.c 时收到错误 C4996

python - 不断收到TypeError : 'list' object is not callable

c++ - Caffe中的批处理模式

c++ - 为什么此 SSE2 代码执行不一致?

进程间通信——pipe和fifo

c - 不理解 GCC 编译器行为条件表达式(测试)?值 1 : value 2