用C+编译C99文件+;编译程序 在谷歌或这里没有找到我要问的确切问题,所有的事情都是想从C代码中调用C++,或者是用C编译器编译的一些部分,还有一些C++,然后链接在一起,以及我做的强> > < > 我想在我的C++应用程序中编译和链接Visual Studio的C++编译器的C99文件,并且能够调用C函数,而不会出现错误和问题。这些头文件来自C库(libcurl)和其他一些文件,因为我想在我的应用程序中使用它们。我不想使用C++绑定,我想编译C代码作为C++。我能相信C代码编译成C++代码而不需要重构吗?与包含C++头文件时不同的做法是什么?预期会出现什么不兼容?
如果要使用visual studio执行此操作,则不可能。MSVC不支持C99理论上,C代码应该能够编译成C++代码。Stroustrup博士在某个时候指出,所有的来自KAN&C的ANSI C版本的代码都是用C++编译器编译的,并且与C编译器编译的代码具有相同的语义。(这是解释所有ANSI C代码都是有效的C++代码,显然,不是这样的,例如,因为许多C++关键字在C中不是预留标识符)。 <>但是,如果你想用C++编译器编译代码,C中的某些成语将需要对C代码进行实质性的改变。典型的例子是将代码> >空*>代码>转换成C++中不需要的C类型,并且在从用C+编译C99文件+;编译程序 在谷歌或这里没有找到我要问的确切问题,所有的事情都是想从C代码中调用C++,或者是用C编译器编译的一些部分,还有一些C++,然后链接在一起,以及我做的强> > < > 我想在我的C++应用程序中编译和链接Visual Studio的C++编译器的C99文件,并且能够调用C函数,而不会出现错误和问题。这些头文件来自C库(libcurl)和其他一些文件,因为我想在我的应用程序中使用它们。我不想使用C++绑定,我想编译C代码作为C++。我能相信C代码编译成C++代码而不需要重构吗?与包含C++头文件时不同的做法是什么?预期会出现什么不兼容?,c++,c,visual-studio,compilation,C++,C,Visual Studio,Compilation,如果要使用visual studio执行此操作,则不可能。MSVC不支持C99 >空*>代码>转换成C++中不需要的C类型,并且在从到适当的指针类型,虽然效果是它阻止C代码被C++编译器编译(在我看来是一个好的想法,例如,因为有更严格的规则可能导致发现C代码中的问题,即使生产版本是用C编译器编译)根据我所知,还有一些细微的语义差异,虽然现在我不能很容易地把其中一个点指向一个点。也就是说,用C和C++编译器编译的相同的代码可能已经定义了,但是对于这两种情况都有不同的结果。 实际应用中,我怀疑你可以
<>实际应用中,我怀疑你可以用C++编译器简单编译C代码的一个非平凡的实体,并得到一个和原C代码相同的程序。如果你设想用C++编译的C程序带有一组完整的测试用例,那么将代码移植到C++中是可行的,但是它将涉及比仅仅是ReNAMI更多的工作。NG文件从<代码> .c/> >到
C和C++是两种不同但密切相关的语言,C++几乎是C++的超集,但不是完全(C++是C++中缺少的)。 如果您的代码依赖于C99功能(即C99中的功能,但不在C90中),那么您可能运气不佳。Microsoft的C编译器不支持C99(除了一些次要功能;我认为它允许
/
注释),Microsoft已明确表示,此类支持不是优先考虑的。您可以修改代码,使其成为有效的C90,具体取决于它使用的功能
<微软> Visual Studio支持编译C和C++(虽然它强调C++)。如果你可以用MS C编译器编译C代码,我建议做这件事而不是把它当作C++。C++有很多特性,特别是如果您想继续将代码保持为C++,我的建议是继续进行更改,然后停止将其视为C代码。
<> P>编译C和AS C++的相同代码的实际需求是相当罕见的(例如,P.J. Plauger需要做这一点,因为他提供了一些用于两种语言的库)。在大多数情况下,C++的代码>和其他功能足够好,可以让您合理地清晰地混合这两种语言。没有任何版本的Visual Studio完全支持C99。较新版本可能比早期版本支持更多功能,但Microsoft已明确表示,他们不打算完全支持C99。@KeithThompson;已删除该功能。Visual Studio包括C编译器(虽然它不完全支持C99)。为什么要用C++编译器编译C代码?库是我想在C++应用程序中包含的C代码,就是这样。如果使用了M99不支持的C99特性,除非重新编译它,否则你将非常走运。如果不是,大多数C代码可以被编译成C++,只需稍加调整,就可以编译为C++并修复任何报告错误。(有几个C和C++的有效语义不同,但不是很多。如果你想把代码从C转换成C++,那么就不要再把它当作C了。如果你想把它保存在C中,就把它编译成C。文件是.c和h。