设为首页 加入收藏

TOP

Crest的语法:宏的魔术汇演
2014-11-18 15:26:17 】 浏览:2719
Tags:Crest 语法 魔术 汇演

  最理想的面向对象语法当然是仿造C#、java这样的结构了,但是因为C语言要用头文件,所以估计最终的样式还是类似于C++。首先我们还是制定一个目标的样式,然后再去用Crest仿造实现。目标是这样的[代码1]:


  class CString: CObject, IUnknown, IDispatch


  {


  int length;


  char * buffer;


  public virtual void Format(char * format)


  {


  DoFormat(format);


  }


  public void DoFormat(char * format)


  {


  if( OnFormat != null ) OnFormat(format);


  }


  public abstract void OnFormat(char * format);


  }


  要想用Crest实现上面的结构,有几个问题要注意:


  this指针。所有的对象成员定义和调用都隐含有一个this指针


  命名规范,CString的Format和CDateTime的Format肯定不是同一个东西,但是C语言不支持override,所以要保证成员函数不重名。


  经过两天的断断续续工作,最终呈现结果如下[代码2]:


  DECLARE_CLASS(CString)


  EXTENDS(CObject, IMPLEMENT2(IUnknown,IDispatch))


  DECLARE_FIELD(CString, int, length)


  DECLARE_FIELD(CString, char *, buffer)


  DECLARE_VIRTUAL1(CString, void, Format, const char * format)


  DECLARE_ABSTRACT1(CString, void, OnFormat,const char * format)


  DECLARE_METHOD1(CString, void, DoFormat,const char * format)


  DECLARE_CONSTRUCTOR(CString)


  DECLARE_DESTRUCTOR(CString)


  END_DECLARE(CString);


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于GetDC与GetWindowDC的区别 下一篇关于类的static数据成员和成员函数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目