完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
开发环境:Visual Studio 2015 + VisualGDB (编译器为arm-eabi GCC 7.2.0)+ STM32CubeMX
c与c++混合编程情况下,*.c文件会使用arm-xxx-gcc编译器进行编译,*.cpp文件会使用arm-xxx-g++编译器进行编译,STM32CubeMX生成文件都是*.c源文件,在不修改文件名后缀情况下,我现在是想在*.c源文件中使用c++特性(比如重载),应该怎么处理。 |
|
相关推荐
1个回答
|
|
在STM32CubeMX中,要在*.c源文件中使用C++特性,可以按照以下步骤操作:
1. 首先,确保你的开发环境已经正确设置。你已经提到了使用Visual Studio 2015 + VisualGDB,编译器为arm-eabi GCC 7.2.0。 2. 打开STM32CubeMX,创建或打开一个项目。 3. 在项目中,找到你想要添加C++特性的*.c源文件。 4. 将该*.c文件重命名为*.cpp。这样,VisualGDB将会使用arm-xxx-g++编译器来编译这个文件,而不是arm-xxx-gcc编译器。 5. 在*.cpp文件中,你现在可以使用C++特性,如函数重载。例如: ```cpp #include void myFunction(int a) { std::cout << "int version" << std::endl; } void myFunction(double a) { std::cout << "double version" << std::endl; } int main() { myFunction(10); // 调用 int 版本的 myFunction myFunction(3.14); // 调用 double 版本的 myFunction return 0; } ``` 6. 保存并重新编译项目。VisualGDB将会使用g++编译器来编译*.cpp文件,从而允许你使用C++特性。 7. 如果你不想改变文件扩展名,可以尝试在项目设置中指定使用g++编译器来编译特定的*.c文件。但是,这种方法可能会导致一些与C语言特性不兼容的问题。 请注意,虽然在C文件中使用C++特性是可能的,但这种做法可能会导致代码可读性和维护性降低。在混合编程环境中,建议尽可能使用C语言特性,并在必要时使用C++特性。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1683 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1582 浏览 1 评论
1013 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1627 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
675浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
538浏览 3评论
558浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
526浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 02:11 , Processed in 0.840026 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号