一些C代码在以C++文件编译时无法通过C++编译器的编译,这是由于C++更加严格的类型安全性所致。是否有任何工具可以将C代码转换为有效的C++代码?换句话说,它会添加到C代码中使其能够与C++编译器一起编译所需的内容。
请注意,我知道C和C++代码可以链接在一起,但在这里我特别谈论将C代码作为C++代码文件进行编译的情况。
请注意,我知道C和C++代码可以链接在一起,但在这里我特别谈论将C代码作为C++代码文件进行编译的情况。
只需将您的C代码放在项目中的单独 .c 文件中,您就可以将其编译为C语言。您使用哪个编译器?
这些语言有足够的区别,任何直接转换都注定失败。你必须通过一个中间人工语言来实现,其中C语言已经基本编译,才有可能实现,但此时生成的C++代码会非常丑陋,您肯定不想看到它。
尝试使用额外的标志进行编译,以使其 less strict 或使用不同的编译器。
编辑#1:我不能添加评论。 我只是抛出一些想法,我还没有亲手执行这些想法。 在挖掘一番后,您可能会因为 C 代码是否在不是 C++ 的子集中的一部分而无法解决问题。
如果只是非 ANSI C 标准问题,您可能可以通过调整来解决。 如果您正在使用 gcc,则可以尝试使用 Microsoft Visual C++ 或 OpenWatcom。
至于标志,我认为您可以进行宽容处理,但我可能错了。 标志将取决于编译器,我认为我已经使用了-std = isoC99,-compat,-feat = features。
我认为你需要将这看作是C和C++代码的混合,并在相关的头文件中使用编译器指令,如下所示:
#ifdef __cplusplus
extern "C"
#endif
您可以参考C++ FAQ-Lite的 "如何混合使用C和C ++",以获得更全面的讨论。
不确定是否存在这样的工具。
我从未尝试过,因为我从未有过这样的需求,但是:
您可以尝试将C代码编译为库。也许,如果您很幸运,只有您的C代码的头文件是有效的C ++。在C ++中包含这些头文件,并链接到库。
再次强调,我从未尝试过,不知道它是否有效。这只是一个想法。