cbr*_*lak 15 c++ virtual-functions arduino firmware
从编写固件:汇编或高级别的问题开始对此评论进行跟进?:
在为Arduino平台编译C++代码时,您可以使用虚函数,异常等吗?或者你想(必须)使用C++的一个子集(如评论中所述)?
在为Arduino平台编程时还有其他注意事项吗?
Ben*_*bee 14
Arduino环境使用GCC工具链的AVR版本.代码编译为C++,因此您可以使用类.虚拟功能是可能的; vtable将存储在.data部分中,并具有正确的地址.实际上,Print基类使用虚函数来使各种"print"方法适应不同的输出类型.
由于代码空间原因,不支持异常.Arduino环境将"-fno-exceptions"传递给编译器命令行.请参阅源代码以进行验证.
支持模板.例如,这种免费的流插入操作符技术使用简单的模板和内联运算符可以正常工作.
Mat*_*och 11
Arduino软件使用avr-gcc编译草图.以下限制来自avrlibc FAQ(我可以在AVR上使用C++吗?):
支持的
不支持
new
和delete
(尝试使用它们会导致链接器抱怨未定义的外部引用).这意味着只能在堆栈上创建对象.如果需要动态内存分配就必须要使用malloc()
和free()
的C
类型-fno-exceptions
在编译器选项中明确使用它们.这是由Arduino IDE在启动时自动完成的avr-gcc
其他问题
extern "C" { . . . }
归档时间: |
|
查看次数: |
11535 次 |
最近记录: |