{"id":19563484,"url":"https://github.com/akagi201/lw_oopc","last_synced_at":"2025-04-04T22:09:03.876Z","repository":{"id":12428291,"uuid":"15083999","full_name":"Akagi201/lw_oopc","owner":"Akagi201","description":"Light Weight Object Oriented C macros","archived":false,"fork":false,"pushed_at":"2024-04-02T12:20:35.000Z","size":263,"stargazers_count":435,"open_issues_count":0,"forks_count":201,"subscribers_count":31,"default_branch":"master","last_synced_at":"2025-03-28T21:08:54.030Z","etag":null,"topics":["c","lightweight","lw-oopc","object-oriented","oop"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Akagi201.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-12-10T17:21:39.000Z","updated_at":"2025-03-18T02:32:48.000Z","dependencies_parsed_at":"2024-11-11T05:18:14.539Z","dependency_job_id":"0df2c5a6-2014-416b-94c1-a91c8d5defbf","html_url":"https://github.com/Akagi201/lw_oopc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akagi201%2Flw_oopc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akagi201%2Flw_oopc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akagi201%2Flw_oopc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akagi201%2Flw_oopc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Akagi201","download_url":"https://codeload.github.com/Akagi201/lw_oopc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247256115,"owners_count":20909240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","lightweight","lw-oopc","object-oriented","oop"],"created_at":"2024-11-11T05:18:00.494Z","updated_at":"2025-04-04T22:09:03.846Z","avatar_url":"https://github.com/Akagi201.png","language":"C","readme":"# `LW_OOPC` 升级版本发布说明\n\n本人在金永华对于高焕堂的 `lw_oopc` 的源码的基础上进行了一些简单的修改和调试。使得 `lw_oopc` 能够用在实际的嵌入式项目中，作为一个很好的框架传播开来。\n\n主要改进有：\n\n1. 修正了一些小错误，使得编译通过。\n2. 调整了一些宏的位置，使得配置接口只在 lw_oopc.h 中。\n3. 经过测试可以直接在*nix 下编译运行，删掉多余的 VS 工程文件。\n\n我的联系方式：\n\n* 博客：\u003chttps://akjong.com\u003e\n* E-mail: \u003cakagi201@gmail.com\u003e\n\n## 以下为金永华 \u003cloveyfore@sohu.com\u003e 在他的 repo 上的一些说明\n\n* 在高焕堂先生的著作《UML+OOPC 嵌入式 C 语言开发精讲》中介绍了高先生及其 MISOO 团队创作的 lw_oopc 宏。\n* 在研读这套宏的过程中，我发现高先生提供的这套宏还过于简陋，不能够优雅地支持面向接口编程。\n* 经过认真钻研，我对原有的这套宏进行了扩充和改良，得到了 lw_oopc 宏的升级改进版本。\n* 改良后的这套宏，能够很好地支持面向对象编程，能够支持面向接口编程 (甚至支持复杂的多重继承).\n\n\u003e 经邮件与高焕堂先生联系，征得高先生同意，以 LGPL 协议开源，感谢高先生以及 MISOO 团队的贡献！\n\n## 原有高焕堂先生及其 MISOO 团队创作的宏 (总共 6 个宏)，清单如下\n\n高焕堂及 MISOO 创作的宏 | 是否存在问题？| 是否修改？\n---- | ---- | -----\nINTERFACE | 没有问题 | 否\nCLASS | 无法支持继承 | 是\nCTOR | 对申请不到内存的情况未保护 | 是\nEND_CTOR | 没有问题 | 否\nFUNCTION_SETTING | 没有问题 | 否\nIMPLEMENTS | 没有问题 | 否\n\n## 为了更好的支持面向对象以及面向接口编程，金永华增加了 14 个宏\n\n创作的宏 | 创作目的 () 为了解决什么问题？\n---- | ----\nDTOR / END_DTOR | 为了支持析构函数的概念\nABS_CLASS | 为了支持抽象类的概念\nABS_CTOR / END_ABS_CTOR | 为了支持可继承的抽象类的构造函数\nEXTENDS | 为了让熟悉 Java 的人容易理解 (与 IMPLEMENTS 宏等同)\nSUPER_CTOR | 为了支持子类调用父类的构造函数\nSUPER_PTR / SUPER_PTR_2 / SUPER_PTR_3 | 为了支持向上转型\nSUB_PTR / SUB_PTR_2 / SUB_PTR_3 | 为了支持向下转型\nINHERIT_FROM | 为了支持访问直接父类的数据成员\n\n* 希望这套宏，能够真正帮助到想用 C 语言写出面向对象代码的 C 程序员们！\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakagi201%2Flw_oopc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakagi201%2Flw_oopc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakagi201%2Flw_oopc/lists"}