Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用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 - Fatal编程技术网

用C+编译C99文件+;编译程序 在谷歌或这里没有找到我要问的确切问题,所有的事情都是想从C代码中调用C++,或者是用C编译器编译的一些部分,还有一些C++,然后链接在一起,以及我做的强> > < > 我想在我的C++应用程序中编译和链接Visual Studio的C++编译器的C99文件,并且能够调用C函数,而不会出现错误和问题。这些头文件来自C库(libcurl)和其他一些文件,因为我想在我的应用程序中使用它们。我不想使用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++编译器编译的相同的代码可能已经定义了,但是对于这两种情况都有不同的结果。 实际应用中,我怀疑你可以

如果要使用visual studio执行此操作,则不可能。MSVC不支持C99但是,如果你想用C++编译器编译代码,C中的某些成语将需要对C代码进行实质性的改变。典型的例子是将代码> >空*>代码>转换成C++中不需要的C类型,并且在从到适当的指针类型,虽然效果是它阻止C代码被C++编译器编译(在我看来是一个好的想法,例如,因为有更严格的规则可能导致发现C代码中的问题,即使生产版本是用C编译器编译)根据我所知,还有一些细微的语义差异,虽然现在我不能很容易地把其中一个点指向一个点。也就是说,用C和C++编译器编译的相同的代码可能已经定义了,但是对于这两种情况都有不同的结果。
<>实际应用中,我怀疑你可以用C++编译器简单编译C代码的一个非平凡的实体,并得到一个和原C代码相同的程序。如果你设想用C++编译的C程序带有一组完整的测试用例,那么将代码移植到C++中是可行的,但是它将涉及比仅仅是ReNAMI更多的工作。NG文件从<代码> .c/> >到。CPP< /代码>。我可以想象一个工具可以完成所需的转换(编译器编译C源到C++源),但是我不知道这样的工具。我只知道相反的方向,产生完全不可读取的代码(例如C++ COM+使用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++有很多特性,特别是 Extn“C”。,专门设计用来让C和C++代码接口。 如果你真的需要编译C++代码,因为某些原因,你可能会做一些小的源代码修改。将源文件从<代码> fo.c<代码>重命名为<代码> fo.CPP,编译它,并修复报告的任何错误。结果可能不是好的C++,但是你应该能使它工作。有几个const。RC是有效的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。