找回密码
 立即注册
楼主: ercircle

51大人,时代变了,【STC: C11, C++11】 + 【Keil-C251, 优化】了解一下

[复制链接]
已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25432
发表于 2026-8-15 13:55:22 | 显示全部楼层
zh*** 发表于 2026-8-15 12:19
感觉没啥用非必要不增加

支持 C11 / C++11, 这个很有必要
回复

使用道具 举报 送花

已绑定手机

74

主题

1019

回帖

3777

积分

论坛元老

初出茅庐&无甚本事

积分
3777
发表于 2026-8-15 14:39:51 | 显示全部楼层
erci*** 发表于 2026-8-15 10:49
萝卜白菜各有所爱

读写速度怎么样

点评

DFM+DDR,双倍空间,四倍读取速度(4b变8b*2),可以期待一波  详情 回复 发表于 2026-8-15 15:17
偶尔看看玩玩
回复

使用道具 举报 送花

已绑定手机

74

主题

1019

回帖

3777

积分

论坛元老

初出茅庐&无甚本事

积分
3777
发表于 2026-8-15 14:41:55 | 显示全部楼层
神*** 发表于 2026-8-15 13:55
支持 C11 / C++11, 这个很有必要

汇编到到C带来些方便
C89到C11也是
偶尔看看玩玩
回复

使用道具 举报 送花

已绑定手机

123

主题

5133

回帖

1万

积分

超级版主

无情的代码机器

积分
11465
 楼主| 发表于 2026-8-15 15:17:12 来自手机 | 显示全部楼层
狂热主宰 发表于 2026-8-15 14:39
读写速度怎么样

DFM+DDR,双倍空间,四倍读取速度(4b变8b*2),可以期待一波
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

已绑定手机

10

主题

202

回帖

1320

积分

金牌会员

积分
1320
发表于 2026-8-15 17:13:18 | 显示全部楼层
我倒是觉得既然用AI了,那么应该让AI自己去写原生C甚至汇编,这样花的token可能还少一些
回复

使用道具 举报 送花

已绑定手机

74

主题

1019

回帖

3777

积分

论坛元老

初出茅庐&无甚本事

积分
3777
发表于 2026-8-15 18:20:22 来自手机 | 显示全部楼层
cnos 发表于 2026-8-15 17:13
我倒是觉得既然用AI了,那么应该让AI自己去写原生C甚至汇编,这样花的token可能还少一些 ...

还是要更多参与感
毕竟bug还是有的
偶尔看看玩玩
回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25432
发表于 2026-8-16 17:07:38 | 显示全部楼层

我已经仔细阅读了这个论坛帖子的全部内容。这是一个关于在 STC 单片机上使用 C11/C++11 以及 Keil-C251 优化的话题讨论帖。让我为用户做一个客观、辩证的梳理和分析。


帖子内容梳理

帖子标题:51大人,时代变了,【STC: C11, C++11】 + 【Keil-C251, 优化】了解一下

发帖人:erci***(楼主)


楼主展示的内容

楼主分享了在 STC 平台上使用 C11/C++11 标准进行编程,并配合 Keil-C251 优化的一系列截图,展示了 C++ 多态(虚函数表 vptr) 的实现示例。核心代码大致是:

一个 Person 基类,通过**虚函数表(vptr[0])**实现运行时多态分派——小赵、小钱、小孙、小李各自继承 Person 并 override say(),通过 Person* 数组在运行时分别调用各自的实现。

楼主提到实现方式是 "语法降级"——即 .c 文件由 .cpp 代码语法降级自动生成,并提到后续会上传项目,解决"工具链一键部署"问题。


论坛网友观点(辩证看待)

网友 观点
向* 好奇"怎么做到的"
huasha* 询问 main.c 与 main.cpp 的关系,请求上传项目参观学习
QQ6243* 持保守态度:认为单片机用 C 足够,C++ 编出的程序臃肿
zh* 认为"没啥用,非必要不增加"
神* 反驳:支持 C11/C++11 很有必要
狂热主宰 认同从 C89 到 C11、汇编到 C 的演进带来便利;关心外部 FLASH 读写速度
cnos 认为既然用 AI,还不如让 AI 直接写原生 C 甚至汇编,token 花费更少
凌* 认为"感觉多此一举"

楼主在回应"程序臃肿"的质疑时,指出新型号 STC32G96K246-LQFP100/64 支持外部 FLASH 运行程序(采用 DFM+DDR 技术,双倍空间、四倍读取速度),所以体积问题不再是瓶颈,并附上了该型号的预告帖链接。


我的技术观点(STC FAE 角度)

站在 STC 的角度补充几点客观信息:

  1. 关于 C++ 用于单片机:传统 STC 8 位 8051 系列(如 STC8 系列)使用 Keil C51 编译器,其对 C++ 支持有限。而 32 位平台(如 STC32G、Ai8051U 等)使用 Keil C251,对 C 标准支持更好、优化能力更强,这也正是楼主能够在 32 位平台探索 C++11 语法的基础。C++ 的虚函数、多态等特性确实会引入额外的间接跳转和内存开销,在资源受限的 8 位机上往往得不偿失,但在拥有更大 FLASH/RAM 的 32 位高性能型号(尤其是支持外部 FLASH 的新型号)上,就有了一定的可行性空间。
  2. 关于"语法降级":这是一种编译期代码转换思路——用 C++ 写高级抽象代码,再降级转换为等效的 C 代码交给编译器编译。这种做法在功能验证、快速原型阶段可能带来书写上的便利,但要注意它并不能消除底层开销,只是换了一种描述方式。据论坛用户反馈,这类工具链仍需完善一键部署方案,属于比较前沿的实验性探索。
  3. 关于外部 FLASH 运行程序:楼主提到的 STC32G96K246 为预告型号,目前手册中是否有完整支持说明,需要以 STC 官方后续发布的手册和公告为准。在新固件/新型号正式量产前,建议以官方发布资料为准。
  4. 实用建议:对绝大多数 STC 应用而言,C89/C99 配合 Keil 的优化选项已经足够高效,这也是 STC 官方例程和文档长期采用的方式。C++11 的探索精神值得肯定,但用于量产项目时建议慎重评估代码体积、性能与可维护性的平衡。

信息来源:STC 官方论坛帖子(thread-25280),以上为论坛内容摘录及本人基于 STC 平台技术特性的客观分析。论坛内容属用户个人观点,仅供参考,具体以 STC 官方手册和公告为准。

如果你是针对某个具体问题(比如某个型号的特定功能、C++ 与 Keil 编译器的配置等)想深入了解,欢迎告诉我具体型号和需求,我可以为你查阅对应手册章节。


🔍 搜索 "https://www.stcaimcu.com/thread-25280-1-1.html"

⏱️ 查找用时 2.3s | 总回答用时 13.9s

回复

使用道具 举报 送花

已绑定手机

123

主题

5133

回帖

1万

积分

超级版主

无情的代码机器

积分
11465
 楼主| 发表于 2026-8-19 09:59:28 | 显示全部楼层

CPP2C89在线转换:
截图202608190959242539.jpg
截图202608190958278403.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

已绑定手机

123

主题

5133

回帖

1万

积分

超级版主

无情的代码机器

积分
11465
 楼主| 发表于 2026-8-19 10:02:30 | 显示全部楼层
在线编译&下载(在线编译注:仅用于 STC8 位机或 STC32 位机的 8 位模式。):

截图202608191001557017.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-8 00:58 , Processed in 0.077099 second(s), 83 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表