在
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`。
我希望有比这更好的方法。请指教。