ST意法半导体
直播中

李永每

7年用户 1391经验值
私信 关注
[问答]

使用C++项目的正确方法是什么?

STM32CubeIDE 中,我创建了一个 C++ 项目。但是 `main.c` 仍然以 .c 扩展名生成,并使用 C 编译器编译。这就是为什么我不能将 C++ 标头包含到 `main.c` 中(因为 C 编译器不理解关键字 `class`)。因此我无法在 `main.c` 中创建 C++ 类的全局实例。
我可以告诉 IDE 为此文件使用 `g++` (C++) 编译器而不是 `gcc`(C 编译器)。但是在语言标准选项中仍然只有 C 选项可用(例如“GNU11(ISO C11 + gnu 扩展)(-std=gnu11)”)。编译器仍会将文件编译为 C 文件而不是 C++。
另一方面,我不敢将 `main.c` 重命名为 `main.cpp`,因为它是在代码生成期间重新生成的(在更新 .ioc 文件之后)。
那么如何让 STM32CubeIDE 将 `main()` 函数放置到 C++ 文件中,例如 `main.cpp`,而不是像 `main.c` 这样的 C 文件?
---
我目前的想法如下:
* 告诉 IDE 从编译中排除 `main.c`;
* 将 `main.c` 复制到 `main.cpp`;
* 将 C++ 头文件包含到 `main.cpp` 中并创建 C++ 类的实例,从 `main()` 函数中调用它们的成员函数;
* 每当重新生成代码(和更新 `main.c`)时,将更新复制到 `main.cpp`。
我希望有比这更好的方法。请指教。



回帖(1)

辛太励

2023-2-7 14:52:28
我在这里找到了一些答案 - https://community.st.com/s/global-search/main_cpp。但我不知道如何获得我最喜欢的答案的直接链接(ST 论坛开发人员可能希望添加此功能)。要查看我最喜欢的答案,请搜索“main_cpp”。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分