【发布时间】:2014-01-14 18:10:50
【问题描述】:
在谷歌或这里都没有找到我要问的确切问题,所有内容都在谈论想要从 c 代码调用 c++ 或使用 c 编译器编译的某些部分和使用 c++ 编译的其他部分,然后再链接在一起以及问题源于我不想要的。
我想在我的所有 C++ 应用程序中使用 Visual Studio 的 C++ 编译器编译和链接 C99 文件,并且能够在没有错误和问题的情况下调用 c 函数。将不涉及 c 链接器或使用不同的编译器编译某些部分和稍后链接在一起,或任何类型的技巧。标头来自 C 库(libcurl)和其他一些,因为我想在我的应用程序中使用它们。我不想使用 C++ 绑定,我想将 c 代码编译为 c++。我可以相信 c 代码可以编译为 C++ 代码而无需进行重大重构吗?与包含 C++ 头文件时有何不同?会出现哪些不兼容问题?
【问题讨论】:
-
Visual Studio 包含一个 C 编译器(尽管它不完全支持 C99)。为什么要用 C++ 编译器编译 C 代码?
-
这些库是我想包含在我的 C++ 应用程序中的 C 代码。
-
这就是
extern "C"的用途。如果它使用了 MSVS 不支持的 C99 特性,那么除非你重新编译它,否则你就很不走运了。如果没有,大部分 C 代码只需稍作调整即可编译为 C++;尝试将其编译为 C++ 并修复任何报告的错误。 (有一些东西是具有不同语义的有效 C 和有效 C++,但不是很多。)如果您想将代码从 C 转换为 C++,请执行此操作并停止将其视为 C。如果您想保留它在 C 中,将其编译为 C。 -
文件位于 .c 和 .h 中,因此它们可以并且将被重新编译,否则我无法理解您的确切意思。
标签: c++ c visual-studio compilation