使用 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 代码的主要内容,如果未能解决你的问题,请参考以下文章
二.microchip samE54-- ATSAME54P20A 开发板使用总结
视频:Microchip安全加密技术入门教程——第四集:非对称加密