Git Product home page Git Product logo

lw_oopc's Introduction

LW_OOPC 升级版本发布说明

本人在金永华对于高焕堂的 lw_oopc 的源码的基础上进行了一些简单的修改和调试。使得 lw_oopc 能够用在实际的嵌入式项目中,作为一个很好的框架传播开来。

主要改进有:

  1. 修正了一些小错误,使得编译通过。
  2. 调整了一些宏的位置,使得配置接口只在 lw_oopc.h 中。
  3. 经过测试可以直接在*nix 下编译运行,删掉多余的 VS 工程文件。

我的联系方式:

以下为金永华 [email protected] 在他的 repo 上的一些说明

  • 在高焕堂先生的著作《UML+OOPC 嵌入式 C 语言开发精讲》中介绍了高先生及其 MISOO 团队创作的 lw_oopc 宏。
  • 在研读这套宏的过程中,我发现高先生提供的这套宏还过于简陋,不能够优雅地支持面向接口编程。
  • 经过认真钻研,我对原有的这套宏进行了扩充和改良,得到了 lw_oopc 宏的升级改进版本。
  • 改良后的这套宏,能够很好地支持面向对象编程,能够支持面向接口编程 (甚至支持复杂的多重继承).

经邮件与高焕堂先生联系,征得高先生同意,以 LGPL 协议开源,感谢高先生以及 MISOO 团队的贡献!

原有高焕堂先生及其 MISOO 团队创作的宏 (总共 6 个宏),清单如下

高焕堂及 MISOO 创作的宏 是否存在问题? 是否修改?
INTERFACE 没有问题
CLASS 无法支持继承
CTOR 对申请不到内存的情况未保护
END_CTOR 没有问题
FUNCTION_SETTING 没有问题
IMPLEMENTS 没有问题

为了更好的支持面向对象以及面向接口编程,金永华增加了 14 个宏

创作的宏 创作目的 () 为了解决什么问题?
DTOR / END_DTOR 为了支持析构函数的概念
ABS_CLASS 为了支持抽象类的概念
ABS_CTOR / END_ABS_CTOR 为了支持可继承的抽象类的构造函数
EXTENDS 为了让熟悉 Java 的人容易理解 (与 IMPLEMENTS 宏等同)
SUPER_CTOR 为了支持子类调用父类的构造函数
SUPER_PTR / SUPER_PTR_2 / SUPER_PTR_3 为了支持向上转型
SUB_PTR / SUB_PTR_2 / SUB_PTR_3 为了支持向下转型
INHERIT_FROM 为了支持访问直接父类的数据成员
  • 希望这套宏,能够真正帮助到想用 C 语言写出面向对象代码的 C 程序员们!

lw_oopc's People

Contributors

akagi201 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lw_oopc's Issues

泛型的支持

泛型作为OOP的重要特性希望什么时候可以支持一下,我现在都一直用void*的方式,已经memcpy的赋值操作,感觉十分的累,能不能将这类特性封装成接口提供出来,Thanks

How to fix the build warning

When I use the lw_oopc.h, there's a mistake, the build tools show me the word:
2023-03-20T03:29:00.158Z] ./lw_oo/lw_oopc.h:110:9: note: in definition of macro 'CTOR'
[2023-03-20T03:29:00.158Z] 110 | type *type##_new() {
[2023-03-20T03:29:00.158Z] | ^~~~
[2023-03-20T03:29:00.158Z] cc1: all warnings being treated as errors

How do I resolve these compile warnings?
Thx!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.