头文件中只有结构的预先声明,未有定义
来源:互联网 发布:cad软件怎么下载 编辑:程序博客网 时间:2024/04/30 14:06
我在头文件中,预先声明了一个结构,结构的定义在cpp文件中。头文件定义如下:
我在类中,定义了一个该结构的成员变量,编译有错误:该结构未定义。换成指针类型就可以了,如注释的语句。
为什么会出现该问题呢?
在网上查了一些相关内容,是说结构myTest没有定义,就不知道该结构的所占用的空间有多大,也就无法给类testClass分配空间;如果是指针变量,由于指针所占空间的大小是固定的,也就不存在不知道空间多大的问题了,所以就不会出错。
我平时在看C++书籍的时候,不是说编译只编译cpp文件,头文件仅仅扩展,为什么头文件又存在空间分配的问题?
看了网上的有关解释,我思考了一下,感觉应该是这样:虽然编译事情头文件不需要分配空间,但编译器要求类必须完整定义。不然另外一个cpp(不是你定义结构的cpp)需要使用这个类型,它怎么知道myTest是什么?而且,在以后需要分配空间的时候,你希望编译器再跑到你cpp里找定义,还是现在就记录定义信息,以后不再查找?虽然此时不需要分配空间,但是如果按照你设想的方法,每次需要分配空间时,编译器还是需要分析每个cpp文件,找到myTest的信息,这是非常非常没效率的。类型定义必须完整,这样才能使得编译器高效工作。
不知道该想法是否完全正确,如果错误,或有更好的解释,请大家指正。
- 头文件中只有结构的预先声明,未有定义
- 为什么有些库的头文件只提供类的预先声明,而无类的定义?
- 为什么有些库的头文件只提供类的预先声明,而无类的定义?
- 为什么有些库的头文件只提供类的预先声明,而无类的定义?
- 为什么有些库的头文件只提供类的预先声明,而无类的定义?
- 为什么有些库的头文件只提供类的预先声明,而无类的定义
- 头文件中定义和声明的问题
- 头文件中定义变量和声明变量的方法
- 将头文件中定义的结构体导出
- 头文件中定义结构数组
- 头文件中只能声明变量不能定义变量 而声明变量必须带extern,为什么头文件中变量的声明都没有加
- keil 中——C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法
- 在头文件中定义或声明变量
- 头文件中类的成员函数的声明和定义
- C++ 将类的声明和定义部分保存在头文件中
- C++模板类的成员函数定义与声明必须在一个头文件中
- 包含同一头文件的多个源文件,声明并定义相同类,结构体的有趣问题
- C++声明、定义、类的定义、头文件作用、头文件重复引用
- 小时候,我立志改变世界,长大了,却发现,世界改变了我
- 抱1%的希望,尽100%的努力
- c++编写字符串查找函数
- 使用C#开发ActiveX控件
- 我这几年
- 头文件中只有结构的预先声明,未有定义
- Java对象及元素的存储区域
- 给ANT 设置足够的内存 的代码
- 关于线性表的结构讨论结果
- SQL Server函数大全
- 读txt,xml实例
- 建tcode維護自己創建的數據表(SE54/SM30)
- androd之绘制文本(FontMetrics)
- 日本人为什么不吃小龙虾