使用 Microchip XC16 编译器将 foo.cpp 构建为 C 代码

Posted

技术标签:

【中文标题】使用 Microchip XC16 编译器将 foo.cpp 构建为 C 代码【英文标题】:Building foo.cpp as C code with Microchip XC16 compiler 【发布时间】:2018-02-07 20:50:15 【问题描述】:

我有一些代码在 C++ Windows 应用程序和 XC16 C 应用程序之间共享。源代码的编写方式可以在 MSVC 和 XC16 下干净地编译(适当使用 __cplusplus 宏)。

问题是 XC16 拒绝构建foo.cpp。我必须将文件复制到foo.c 并再次返回。这对版本控制造成了严重破坏,并且在构建过程中自动复制功能时,会使 ide 中的代码编辑出现问题。

有没有办法让 XC16 构建(作为 C)扩展名为 cpp 的文件? (注意头文件是foo.h,所以不是问题)。

【问题讨论】:

为什么不在 MSVC 上编译为 C 呢? 如何为 Windows 构建? VisualStudio?、MSBuild? 在Windows环境下,代码被封装在一个类中(所以需要用C++构建)。当使用 16 位微处理器目标编译为 C 时,这是不可能的。 不知道 XC16,但 MSVC 可以选择构建为 C 或 C++ 并带有任何扩展。 Specify Source File Type @BoPersson 谢谢。我们找到了类似的解决方案(见我的回答)。不幸的是,这似乎不是 XC16 的选项。更具体地说,我认为问题出在 MPLABX 上,它会动态构建 makefile。 【参考方案1】:

我们在我们的一个 Windows 构建环境 (Embarcadero CBuilder) 中发现了一个标志,它强制将 foo.c 编译为 C++。因此,我们将重命名为foo.c。问题解决了。 (编辑:其他人评论说 VC 中存在类似的标志)

我们在 XC16(基于 gcc 4.5.1)中找不到可比较的标志来将 foo.cpp 视为 C 源文件。 -x 标志 (Forcing gcc to compile .cpp file as C) 在 MPLABX 下似乎不起作用。

【讨论】:

以上是关于使用 Microchip XC16 编译器将 foo.cpp 构建为 C 代码的主要内容,如果未能解决你的问题,请参考以下文章

PIC16LF1455 USB 的调试

二.microchip samE54-- ATSAME54P20A 开发板使用总结

20180514 存储地址

视频:Microchip安全加密技术入门教程——第四集:非对称加密

通过 PIC16 UART 发送转换后的 DS1820 温度

不能将两个值结合在一起吗?