gpt4 book ai didi

c++ - 当您的嵌入式编译器不支持 operator new 或 STL 时,您如何执行 C++?

转载 作者:可可西里 更新时间:2023-11-01 18:40:11 27 4
gpt4 key购买 nike

我正在为我的大学做一个小组高级项目,我在尝试让我的代码工作时遇到了一个主要障碍。

我们的 8 位 Atmel 微 Controller 的编译器不支持 new 或 delete 运算符,也不支持 C++ STL。我可以用 C 语言编写它,但我必须实现一个我以前从未做过的 A* 算法。虽然我最初尝试过 C,但我很快意识到我以前从未用过纯 C。尝试使用结构和函数对对象建模会让我的速度变慢,因为我已经习惯了更简洁的 C++ 语法。

无论如何,我的编译器缺点的确切措辞可以在这里找到:http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_cplusplus

为了克服它们并仍然使用 C++,我考虑了以下可能性。1)不分配任何东西,只是使用模板在堆栈上生成固定数组。2)一旦我为对象分配了空间,就分配并找到一些 hack 来调用对象的构造函数。放置 new 不是一个选项,因为 new 不是运算符。3) 只需使用 C 并吸收它,它是一个微 Controller ,为什么我会喜欢它?4) 找到一个更好的编译器,可能会花费 $$$。

第二个选项是最难的,但就我如何编写这段代码而言,它会带来最大的返回。但是,我想如果我弄错了,调试它可能会很痛苦。我正在考虑在堆栈上创建对象,将它们的位复制到分配的空间中,然后将对象中的位归零,这样它就不会调用它的析构函数。为此,我将使用 unsigned char 指针和 sizeof 运算符直接访问这些位以获取字节数。

这听起来很糟糕,我不知道它是否可以可靠地工作,但我正在考虑。我知道 vtables 可能是个问题,但我不打算拥有任何 vtables,因为它只是一个 8 位微 Controller 。

最佳答案

不要对抗你的工具。如果您的嵌入式系统唯一的编译器是 C 编译器,那么学习 C - 这并不困难。仅仅为了解决一个相当简单的编程问题而尝试制作这两种语言的一些 SCSS 版本只会泪流满面。

换个角度来看,如果您的嵌入式平台甚至不支持 C 编译器,而只支持汇编器,您的第一 react 会是坐下来用汇编器编写 C++ 编译器吗?我希望不会,我希望你能坐下来学习使用汇编程序来完成您的任务 - 编写 C++ 编译器(甚至 C 编译器)将完全不恰本地利用您的时间,并且几乎肯定会导致失败。

关于c++ - 当您的嵌入式编译器不支持 operator new 或 STL 时,您如何执行 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/765459/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com