如何适应? C 艹程序员做 ANSI C 的项目

2023-06-08 20:44:10 +08:00
 w1lu0bOo

别说 STD 和 C++11+ 了,class, template 都用不了,完全束手束脚的感觉,要怎么适应呢?

3687 次点击
所在节点    C++
44 条回复
w1lu0bOo
2023-06-10 00:39:00 +08:00
感谢那么多回复。
w1lu0bOo
2023-06-10 00:39:31 +08:00
我先理一理……
koebehshian
2023-06-10 01:07:20 +08:00
@duke807
我之前也是,喜欢用静态变量,类似于内存池自己管理,但这只适用于业务逻辑比较简单或内存充足的场景。
我碰到业务逻辑复杂且内存少的情况,就必须动态分配了。比如有 10 个功能,用户可能只用1个功能,也可能用2个,不确定,这是由用户动态配置的,编译时是确定不了的。

每个功能涉及到的结构体的长度不同的,如果用联合体就比较浪费,如果分别预先定义最大长度,更加浪费,导致每个功能的最大负荷降低。
macha
2023-06-10 09:13:37 +08:00
如果是老项目的话,基本上常用的轮子都有了,学习一下他们的套路就行了。
新项目的话,直接换语言吧。
C 语言实在不适合写业务太复杂的项目。
最适合那种精雕细琢的项目,扣内存,扣 CPU ,扣字节,深扣一切。。。
w1lu0bOo
2023-06-12 22:42:11 +08:00
@tool2d 工程量巨大 /(ㄒoㄒ)/~~
w1lu0bOo
2023-06-12 22:43:07 +08:00
@zhuangzhuang1988 嗯嗯,找一些库学习一下是个好路径 👍
w1lu0bOo
2023-06-12 22:44:40 +08:00
@duke807 感谢具体的建议♥
w1lu0bOo
2023-06-12 22:46:53 +08:00
@cnbatch 上学的时候叫惯了 ANSI C 哈哈哈,目前 for 循环第一个分号初始化语句还是可以用的😄

感谢建议~
w1lu0bOo
2023-06-12 22:48:46 +08:00
@ederodan √,要是有(hen)空(xian)的话是可以对照着智能指针的实现看看学学 /(ㄒoㄒ)/~~
w1lu0bOo
2023-06-12 22:49:34 +08:00
@tairan2006 嗯,有些建议是用 glib ,不过要拖入一堆依赖,不知道大项目 maintainer 会不会同意😄
w1lu0bOo
2023-06-12 22:50:02 +08:00
@cstj0505 太厉害了,多门语言无缝切换~
w1lu0bOo
2023-06-12 22:53:43 +08:00
@zhyl 感谢信息。 看它官网有一句 "V can be bootstrapped in under a second by compiling its code translated to C with a simple..." 实际使用上转成 C 语言有没有什么局限性呢?
w1lu0bOo
2023-06-12 22:55:23 +08:00
@aa514758835 嗯嗯,不知道有没有比较广泛使用的替代 C++11/14/17 的高级语法? 大几年没写 C 了。
w1lu0bOo
2023-06-12 22:56:18 +08:00
@minami 哈哈哈哈哈哈
w1lu0bOo
2023-06-12 22:58:27 +08:00
@minami 感谢信息
w1lu0bOo
2023-06-12 23:00:14 +08:00
@lovelylain 主要是运行环境( flash )都容不下一个 libstdc++.so 的运行库 。。。。 嗯嗯,C++暴露出 C 接口是一个好路径
w1lu0bOo
2023-06-12 23:01:52 +08:00
@koebehshian 那大概率是没有 OS 的场景吧? malloc 都没有 /(ㄒoㄒ)/~~
w1lu0bOo
2023-06-12 23:02:41 +08:00
@macha 就怕产品经理又要多快好省…… 天天 cuicuicuicuicui
w1lu0bOo
2023-06-12 23:10:51 +08:00
@hpepper 大概什么方面的问题呢? 方便的可以一起讨论讨论
cnbatch
2023-06-12 23:45:50 +08:00
如果能用 C11 ,那么不少特性都能继续保留
比如 std::atomic thread_local static_assert bool
只不过需要加下划线

https://en.cppreference.com/w/c/99
https://en.cppreference.com/w/c/11

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/947093

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX