码迷,mamicode.com
首页 > 其他好文 > 详细

结构体的声明与定义分离

时间:2017-06-29 17:27:31      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:contex   char   log   code   函数返回   span   定义   ext   c++   

    最近看到一种比较新颖的写法 —— 结构体在头文件中声明, 源文件中定义

    A.h

typedef struct Context Context;

    A.cpp

#include "stdafx.h"
#include "A.h"

struct Context
{
    int param;
    char *str;
};

    原以为这样应该会报错, 因为头文件中的 "struct Context" 应该是找不到的, 但amazing, 竟然能顺利编译过, 由此让我加深了对声明和定义的理解.

    就像函数在头文件中声明, 而在源文件中定义一样, 因为函数的声明和定义一般都分开写, 所以习以为常, 但结构体一般都是声明和定义一起的, 或者说只有定义吧, 所以对这写法一下子没反应过来.

    这样写的好处是: 对用户透明. 试想一下, 你要写一个库, 里面有个结构体, 但这个结构体只是内部使用和作为参数传递, 那么用户自然就不关心这结构题的内部结构了, 用户只要知道哪个函数返回该结构体和哪个函数要使用该结构体作为参数, 只要引用和传递, 所以, 只在头文件声明该结构体, 让用户可以声明和传递这一结构体的变量即可.

    类也可以声明和定义分开, 但好处暂时未想到. 这是C++的思想了!

    学术浅薄, 不足之处, 望请指出

结构体的声明与定义分离

标签:contex   char   log   code   函数返回   span   定义   ext   c++   

原文地址:http://www.cnblogs.com/HuangWj/p/7093725.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!