C到C++转换器

3
一些C代码在以C++文件编译时无法通过C++编译器的编译,这是由于C++更加严格的类型安全性所致。是否有任何工具可以将C代码转换为有效的C++代码?换句话说,它会添加到C代码中使其能够与C++编译器一起编译所需的内容。
请注意,我知道C和C++代码可以链接在一起,但在这里我特别谈论将C代码作为C++代码文件进行编译的情况。

1
大卫,那个工具没有时间或耐力去做这件事情 :(! - MetallicPriest
4
类型安全系统的存在是为了防止你写出错误的代码。系统地检查 C++ 编译器报告的问题并解决它们,难道不比留下潜在的错误更好吗? - Jeff Linahan
5个回答

3

只需将您的C代码放在项目中的单独 .c 文件中,您就可以将其编译为C语言。您使用哪个编译器?


如果可以的话,我本来会这么做的,但是我需要修改那段代码并将C++结构放入其中,因此无法将其分离为单独的C文件。 - MetallicPriest

2

这些语言有足够的区别,任何直接转换都注定失败。你必须通过一个中间人工语言来实现,其中C语言已经基本编译,才有可能实现,但此时生成的C++代码会非常丑陋,您肯定不想看到它。


1

尝试使用额外的标志进行编译,以使其 less strict 或使用不同的编译器。

编辑#1:我不能添加评论。 我只是抛出一些想法,我还没有亲手执行这些想法。 在挖掘一番后,您可能会因为 C 代码是否在不是 C++ 的子集中的一部分而无法解决问题。

如果只是非 ANSI C 标准问题,您可能可以通过调整来解决。 如果您正在使用 gcc,则可以尝试使用 Microsoft Visual C++ 或 OpenWatcom。

至于标志,我认为您可以进行宽容处理,但我可能错了。 标志将取决于编译器,我认为我已经使用了-std = isoC99,-compat,-feat = features。


1

我认为你需要将这看作是C和C++代码的混合,并在相关的头文件中使用编译器指令,如下所示:

#ifdef __cplusplus
    extern "C"
#endif

您可以参考C++ FAQ-Lite的 "如何混合使用C和C ++",以获得更全面的讨论。


0

不确定是否存在这样的工具。
我从未尝试过,因为我从未有过这样的需求,但是:
您可以尝试将C代码编译为库。也许,如果您很幸运,只有您的C代码的头文件是有效的C ++。在C ++中包含这些头文件,并链接到库。

再次强调,我从未尝试过,不知道它是否有效。这只是一个想法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接