c++与c混合编译问题请教

2019-07-20 06:33发布



引入:
编译器默认将*.cpp源文件采用c++方式编译;编译器默认将*c源文件采用c编译器。
在c++与c混合编程时,在*.h与*.cpp文件如果需要指定使用c编译器编译需要使用#ifdef __cplusplus extern "C" #endif

问题:
如果在*.c文件中想使用c++编译器编译应该怎么设置(不修改文件后缀名的情况下)?

原因:
开发环境:Visual Studio 2015 + VisualGDB (编译器为arm-eabi GCC 7.2.0)+ STM32CubeMX
STM32CubeMX生成文件都是*.c源文件,这么才能使用在*.c源文件里面使用c++特性的东西(不修改文件后缀名的情况下)。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
ISO14882
2019-07-20 18:00
本帖最后由 ISO14882 于 2018-8-21 20:46 编辑

GNU兼容的编译器是-x language <文件名>-x language
Specify explicitly the language for the following input files (rather than lettingthe compiler choose a default based on the file name suffix). This option appliesto all following input files until the next ‘-x’ option. Possible values for languageare:c c-header cpp-outputc++ c++-header c++-cpp-outputobjective-c objective-c-header objective-c-cpp-outputobjective-c++ objective-c++-header objective-c++-cpp-outputassembler assembler-with-cppadaf77 f77-cpp-input f95 f95-cpp-inputgobrig-x none Turn off any specification of a language, so that subsequent files are handledaccording to their file name suffixes (as they are if ‘-x’ has not been used at
all).

微软的cl是
/Tc /TC        指定 C 源文件。
/Tp /TP        指定 C++ 源文件。
详见: https://msdn.microsoft.com/zh-cn/library/19z1t1wy.aspx          https://msdn.microsoft.com/zh-cn/library/032xwy55.aspx
还有, visual studio 的 C 编译器不支持 C99, 还是用Clang/C2 吧  (=&#12539;ω&#12539;=)

gcc.pdf (2.66 MB, 下载次数: 27) 2018-8-21 20:45 上传 点击文件名下载附件

一周热门 更多>