由于C
的类型安全性更严格,如果编译为C++
文件,某些C++
代码无法使用C++
编译器进行编译。是否有任何工具可以使用C
代码并生成有效的C++
代码。换句话说,它向C
代码添加了使用C++
编译器编译代码所需的内容。
请注意,我知道C和C ++代码可以链接,但在这里我特别谈到了使用C代码并使用C ++编译器将其编译为C ++代码文件。
答案 0 :(得分:3)
只需将C代码放在项目中的单独.c文件中,您就可以将其编译为C.您使用的是哪种编译器?
答案 1 :(得分:2)
语言是完全不同的,任何直接转换的尝试都注定要失败。你必须经历一种中间的人工语言,其中C已经基本上被编译为可行,并且在那时,生成的C ++将是如此难看,你不希望看到它。
答案 2 :(得分:1)
尝试使用其他标志进行编译,使其不那么严格和/或使用不同的编译器。
编辑#1:我无法添加评论。我只是在四处寻找想法,我没有亲自执行这些。经过一番挖掘后,您可能会选择SOL,具体取决于C代码是否写入部分不是C ++子集的集合中。
如果它只是非ansi C标准问题,您可能能够完成它。如果您使用的是gcc,可以尝试使用Microsoft Visual C ++或OpenWatcom。
至于旗帜,我认为你可以宽大处理,但我可能是错的。标志将取决于编译器,我想我已经使用-std = isoC99,-compat,-feat = features。
答案 3 :(得分:1)
我认为您需要将此视为C和C ++代码的混合,并在相关的头文件中使用编译器指令,如下所示:
#ifdef __cplusplus
extern "C"
#endif
您可以参考C ++ FAQ-Lite的“How to mix C and C++”,以便对该主题进行更全面的讨论。
答案 4 :(得分:0)
不确定是否存在此类工具
从来没有尝试过,因为我从来没有这个需要,但是:
您可以尝试将C代码编译为lib。也许,如果幸运的话,只需C代码的头文件是有效的C ++。在C ++中包含这些标题,并链接到lib。
再一次,从未尝试过这个,不知道它是否会起作用。只是一个想法。