C语言实现嵌入式领域的面向对象技术

需积分: 9 0 下载量 80 浏览量 更新于2024-07-07 收藏 393KB PDF 举报
"本文档探讨了在C语言中实现面向对象技术的重要性,尤其是在嵌入式系统和低级编程环境中,如内核开发。尽管当今面向对象编程(OOP)在主流开发中可能不再流行,但C语言作为一种底层工具,仍然在某些场景下具有其独特价值。作者强调,对于资源有限的嵌入式设备,如微控制器,由于工具链受限,C语言结合面向对象的设计原则可以提供一种实用且模块化的解决方案。 作者分享了自己在嵌入式领域的工作经验,特别是当面临有限资源时,如何运用面向对象思维来设计和开发软件。他们提到,虽然不认为面向对象是唯一正确的实施方式,但在许多情况下,它能帮助构建结构清晰、易于维护的代码。通过一个用PlantUML绘制的类图作为实例,文档展示了如何在C语言中定义和组织类,以及这些类之间的关系,以便实现一个子系统的功能。 文中将介绍以下几点关键内容: 1. 面向对象基础:介绍C语言中的封装、继承和多态等核心概念,解释如何在C语言中模拟这些面向对象特性。 2. 类和对象的实现:讨论如何在C语言中定义类,包括数据成员和成员函数的声明与实现,以及构造函数和析构函数的使用。 3. 设计模式的应用:探讨在嵌入式环境中如何应用设计模式,如工厂模式、单例模式等,以解决特定问题。 4. 内存管理:由于C语言的特性,如何在不依赖垃圾回收机制的情况下,管理对象的生命周期和内存。 5. 实战示例:详细展示一个具体的类设计和使用案例,以展示面向对象技术在实际项目中的应用效果。 这篇文章为那些希望在C语言环境中实践面向对象技术的开发者提供了有价值的指导,特别是在嵌入式和资源受限的环境下,如何巧妙地利用这种技术提高软件质量和可维护性。"

编译报错 CREATE OR REPLACE PROCEDURE get_dev_cs IS sql_tem VARCHAR2(4000); v_dt NUMBER; BEGIN ----om_subscriber_yyyymm sql_tem := 'truncate table ycyd.Subscriber_cs'; EXECUTE IMMEDIATE sql_tem; FOR v_dt IN (SELECT to_number(substr(table_name, '15')) db FROM sys.all_tables a WHERE a.owner = upper('jour1') AND a.table_name LIKE upper('om_subscriber_202___') AND substr(table_name, '15') > 202205) LOOP -- 循环往b里添加数据 sql_tem := ' INSERT INTO ycyd.Subscriber_cs SELECT a.order_id, a.done_date, a.cust_id, a.subscriber_ins_id, a.access_num FROM jour1.om_subscriber_' || v_dt.db || ' a WHERE a.action = 0 AND a.is_usim = 1'; -- 执行sql EXECUTE IMMEDIATE sql_tem; END LOOP; ----om_order_yyyymm sql_tem := 'truncate table ycyd.order_cs'; EXECUTE IMMEDIATE sql_tem; COMMIT; FOR v_dt IN (SELECT to_number(substr(table_name, '15')) db FROM sys.all_tables a WHERE a.owner = upper('jour1') AND a.table_name LIKE upper('om_subscriber_202___') AND substr(table_name, '15') > 202205) LOOP -- 循环往b里添加数据 sql_tem := ' INSERT INTO ycyd.order_cs SELECT order_id, dev_id FROM JOUR1.om_order_' || v_dt.db || ' b'; -- 执行sql EXECUTE IMMEDIATE sql_tem; END LOOP; COMMIT; ---dev sql_tem := 'truncate table ycyd.yd_order_dev_3056'; EXECUTE IMMEDIATE sql_tem; -- 添加数据 sql_tem := ' INSERT INTO ycyd.yd_order_dev_3056 SELECT a.order_id, a.done_date, a.cust_id, a.subscriber_ins_id, a.access_num, c.dev_id, c.dev_name, d.code, c.dev_busi_code, c.corp_org, c.company_name, c.department_code, c.department_name, c.remarks FROM ycyd.Subscriber_cs a LEFT JOIN ycyd.order_cs b ON a.order_id = b.order_id LEFT JOIN params1.sec_developer c ON b.dev_id = c.dev_id LEFT JOIN (SELECT DISTINCT oo.code,s.bill_id FROM params1.sec_operator oo, params1.sec_staff s WHERE s.staff_id = oo.staff_id AND oo.state = 1 AND oo.staff_id NOT in ('123402933','123395474','123404209')) d ON c.dev_phone = d.bill_id WHERE c.corp_org = 3056'; -- 执行sql EXECUTE IMMEDIATE sql_tem; COMMIT; END get_dev_cs;

2023-07-14 上传