【分享】自己用VC做的一个面向对像代码架构自动生成器!

2020-02-20 20:19发布

本帖最后由 FSL_TICS_ZJJ 于 2014-9-11 16:06 编辑

鉴于很多同学目前用WIN7、WIN8,打不开源码,我说一下原理,其实非常简单,就是先做个模板,然后在模板里进行字符串查找然后替换

这个纯粹是给大家玩的,呵呵,有段时间玩RTT,用C语言做面向对像,模拟C++中的类,那时候人懒,呵呵,因为对像的架构都差不多,但是每次都要拷贝、修改对像的名称呀、变量啊、函数啊之类的,觉得挺麻烦,就自己弄这个东西玩,还真别说,效率提高了很多,用键盘都省很多, 现在发出来给大家玩玩,纯属娱乐!
ClassWiz.rar (12.24 KB, 下载次数: 68) 2014-8-31 23:15 上传 点击文件名下载附件
还有源码,VC6的,可惜我现在装的win7 32位系统,都打不开了,呵呵
ClassWizard.rar (5.1 MB, 下载次数: 66) 2014-8-31 23:23 上传 点击文件名下载附件

简单做个教程:
classwizardtest.jpg (65.94 KB, 下载次数: 0) 下载附件 2014-9-1 20:46 上传
确定后生成的.C文件:
  1. /****************************************************************
  2. FileName :    CRoom.c
  3. Direction:
  4. Founder  :    Admin
  5. Modify   :
  6. 201491  Admin        First version
  7. ****************************************************************/
  8. #include "CRoom.h"
  9. //Private variables declare
  10. typedef struct _Private Private;
  11. struct _Private
  12. {
  13.     int Desk;                    //
  14.     int Cup;                    //
  15. };
  16. //Function in here
  17. /**********************************************************
  18. Function : CloseDoor
  19. Direction:
  20. Parameter: CCRoom* me;
  21. Return   : void
  22. Founder  : Admin
  23. Modify   :
  24. 201491     Admin                First version
  25. **********************************************************/
  26. static void CloseDoor(CCRoom* me)
  27. {
  28.     Private* PrivateData = (Private*)me->PrivateData;
  29.     //Code in here
  30. }
  31. /**********************************************************
  32. Function : OpenDoor
  33. Direction:
  34. Parameter: CCRoom* me;
  35. Return   : void
  36. Founder  : Admin
  37. Modify   :
  38. 201491     Admin                First version
  39. **********************************************************/
  40. static void OpenDoor(CCRoom* me)
  41. {
  42.     Private* PrivateData = (Private*)me->PrivateData;
  43.     //Code in here
  44. }
  45. /**********************************************************
  46. Function : CloseWindows
  47. Direction:
  48. Parameter: CCRoom* me;
  49.            int Index;                    //
  50. Return   : void
  51. Founder  : Admin
  52. Modify   :
  53. 201491     Admin                First version
  54. **********************************************************/
  55. static void CloseWindows(CCRoom* me
  56.         int Index)
  57. {
  58.     Private* PrivateData = (Private*)me->PrivateData;
  59.     //Code in here
  60. }
  61. /**********************************************************
  62. Function : OpenWindows
  63. Direction:
  64. Parameter: CCRoom* me;
  65.            int Index;                    //
  66. Return   : void
  67. Founder  : Admin
  68. Modify   :
  69. 201491     Admin                First version
  70. **********************************************************/
  71. static void OpenWindows(CCRoom* me
  72.         int Index)
  73. {
  74.     Private* PrivateData = (Private*)me->PrivateData;
  75.     //Code in here
  76. }
  77. /**********************************************************
  78. Function : CRoom_Create
  79. Direction: Constructor function
  80. Parameter: rt_size_t Size        //malloc Size
  81. return   : CCRoom *
  82. Founder  : Admin
  83. Modify   :
  84. 201491     Admin        First version
  85. **********************************************************/
  86. CCRoom *CRoom_Create(rt_size_t Size)
  87. {
  88.     //Object create
  89.     CCRoom *me = CFloor_Create(Size);
  90.     //Private variable initialize
  91.     me->PrivateData = rt_malloc(sizeof(Private));
  92.     ((Private *)me->PrivateData)->Desk =  ;
  93.     ((Private *)me->PrivateData)->Cup =  ;
  94.     //Member variables initialize
  95.     me->Windows =  ;
  96.     me->Door =  ;
  97.     //Member functions initialize
  98.     me->OpenWindows = OpenWindows;
  99.     me->CloseWindows = CloseWindows;
  100.     me->OpenDoor = OpenDoor;
  101.     me->CloseDoor = CloseDoor;
  102.     //Virtual function initialize
  103.     return me;
  104. }
复制代码

生成的.h文件:
  1. /****************************************************************
  2. FileName :    CRoom.h
  3. Direction:
  4. Founder  :    Admin
  5. Modify   :
  6. 201491     Admin        First version
  7. ****************************************************************/
  8. #ifndef __CROOM_H__
  9. #define __CROOM_H__
  10. #include "rtthread.h"
  11. //CCRoom class
  12. typedef struct _CCRoom CCRoom;
  13. struct _CCRoom
  14. {
  15.     //BaseClass
  16.     CFloor m_CFloor;
  17.     //Private Variables
  18.     void* PrivateData;
  19.     //Member Variables
  20.     int Windows;                    //
  21.     int Door;                    //
  22.     //Member Functions
  23.     void (*CloseDoor)(CCRoom* me);
  24.     void (*OpenDoor)(CCRoom* me);
  25.     void (*CloseWindows)(CCRoom* me,
  26.             int Index);
  27.     void (*OpenWindows)(CCRoom* me,
  28.             int Index);
  29. };
  30. //Constructor function
  31. extern CCRoom *CRoom_Create(rt_size_t Size);
  32. #endif
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。