首页 > 代码库 > 结构体的声明与定义分离
结构体的声明与定义分离
最近看到一种比较新颖的写法 —— 结构体在头文件中声明, 源文件中定义
A.h
typedef struct Context Context;
A.cpp
#include "stdafx.h" #include "A.h" struct Context { int param; char *str; };
原以为这样应该会报错, 因为头文件中的 "struct Context" 应该是找不到的, 但amazing, 竟然能顺利编译过, 由此让我加深了对声明和定义的理解.
就像函数在头文件中声明, 而在源文件中定义一样, 因为函数的声明和定义一般都分开写, 所以习以为常, 但结构体一般都是声明和定义一起的, 或者说只有定义吧, 所以对这写法一下子没反应过来.
这样写的好处是: 对用户透明. 试想一下, 你要写一个库, 里面有个结构体, 但这个结构体只是内部使用和作为参数传递, 那么用户自然就不关心这结构题的内部结构了, 用户只要知道哪个函数返回该结构体和哪个函数要使用该结构体作为参数, 只要引用和传递, 所以, 只在头文件声明该结构体, 让用户可以声明和传递这一结构体的变量即可.
类也可以声明和定义分开, 但好处暂时未想到. 这是C++的思想了!
学术浅薄, 不足之处, 望请指出
结构体的声明与定义分离
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。