如何隐藏'结构体对象'成员?
1
引出话题
参考代码:
1/************filename: App.h*************/
2#ifndef __APP_H__
3#define __APP_H__
4
5
6typedef struct _tag_StObj stObj;
7struct _tag_StObj
8{
9 int member1;
10 int member2;
11};
12
13//interface
14
15int sAdd(stObj *pObj);
16
17#endif
18
19/************filename: App.c*************/
20#include 'App.h'
21
22/**********************************
23 * Function : sAdd
24 * Note :加法函数,也是接口函数
25 * Author: bug菌
26 **********************************/
27int sAdd(stObj *pObj)
28{
29 return (pObj->member1 + pObj->member2);
30}
31
32/************filename: main.c*************/
33#include <stdio.h>
34#include './App/App.h'
35
36int main(void)
37{
38 stObj Obj;
39 Obj.member1 = 1;
40 Obj.member2 = 2;
41
42 printf('result = %d\n',sAdd(&Obj));
43
44 return 0;
45}
2
不完全类型
1/************filename: App.h*************/ 2#ifndef __APP_H__ 3#define __APP_H__ 4 5 6typedef struct _tag_StObj stObj; 7/*struct _tag_StObj 8{ 9 int member1;10 int member2;11};*/1213//interface1415int sAdd(stObj *pObj); 1617#endif1819/************filename: App.c*************/ 20#include 'App.h'2122struct _tag_StObj23{24 int member1;25 int member2;26};27/********************************** 28 * Function : sAdd29 * Note :加法函数,也是接口函数 30 * Author: bug菌 31 **********************************/ 32int sAdd(stObj *pObj)33{34 return (pObj->member1 + pObj->member2);35}3637/************filename: main.c*************/ 38#include <stdio.h>39#include './App/App.h'4041int main(void)42{43 stObj Obj;44 Obj.member1 = 1;45 Obj.member2 = 2;4647 printf('result = %d\n',sAdd(&Obj));4849 return 0;50}
3
求助指针
1/************filename: main.c*************/
2
3#include <stdio.h>
4#include './App/App.h'
5
6int main(void)
7{
8 stObj *Obj;
9 //Obj.member1 = 1;
10 //Obj.member2 = 2;
11
12 printf('result = %d\n',sAdd(Obj));
13
14 return 0;
15}
4
隐藏结构体成员
参考代码:
1/************filename: App.h*************/ 2#ifndef __APP_H__ 3#define __APP_H__ 4 5 6typedef struct _tag_StObj stObj; 7 8//interface 9stObj * sCreate(int member1,int member2);10int sAdd(stObj *pObj); 111213#endif1415/************filename: App.c*************/ 16#include 'App.h'1718struct _tag_StObj19{20 int member1;21 int member2;22};2324/********************************** 25 * Function : sCreate26 * Note :创建函数,也是接口函数 27 * Author: bug菌 28 **********************************/ 29stObj * sCreate(int member1,int member2)30{31 static stObj staticObj;3233 staticObj.member1 = member1;34 staticObj.member2 = member2;3536 return &staticObj;37}383940/********************************** 41 * Function : sAdd42 * Note :加法函数,也是接口函数 43 * Author: bug菌 44 **********************************/ 45int sAdd(stObj *pObj)46{47 return (pObj->member1 + pObj->member2);48}4950/************filename: main.c*************/ 5152#include <stdio.h>53#include './App/App.h'5455int main(void)56{57 stObj *Obj;5859 Obj = sCreate(3,5); //内部构造结构体 6061 printf('result = %d\n',sAdd(Obj)); //调用相应的接口 6263 return 0;64}
5
but