c++ - 是否可以编译 c/c++ 混合源代码?

标签 c++ c gcc makefile g++

我们有一个c项目,想把一个c++项目合并到这个c项目中,编译成一个二进制文件,可以吗?

有点像

cproject/src/
cproject/src/a.h
cproject/src/a.c
cproject/src/b.h
cproject/src/b.c
cproject/src/main.c

添加cpp项目

cproject/cppproject/src/c.h
cproject/cppproject/src/c.cpp
cproject/cppproject/src/m.h
cproject/cppproject/src/m.cpp

也许将 cpp 编译为分片库并链接它?

最佳答案

是的,你可以。你说你有一个 C 项目和另一个 C++ 项目。 但是你解决的方式(“分片库并链接它?”)是另一回事。

正如其他人所说,您可以:

1) 混合使用 C 和 C++(小心使用 extern "C" )

2) 创建一个带有子项目的项目(在 Xcode for Mac 中是将项目添加到现有项目的标准做法

3) 确保只有一个main()

4) 你想做一个外部库,不需要混合它们,但是如果你没有经验,公开方法、管理包含和链接选项以及传递参数可能会有点复杂。

库和 DLL 与普通的“main()”程序有很大不同。

关于c++ - 是否可以编译 c/c++ 混合源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45363546/

相关文章:

c - C语言中的标识符存放在哪里

c - C 中的运算符优先级

linux - GNU Radio,debian 编译错误

c++ - 如何截取第二屏幕监视器的屏幕截图?

c++ - 在单元测试时操作迭代器

c - 使用 C 中的按位运算符查找值是否在某个范围内

c++ - 如何防止g++优化由IRQ可以更改的变量控制的循环?

linux - 指定 GCC 输出二进制文件的预期 Linux 版本

c++ - 是否可以根据type_info创建对象?

c++ - Cortex-A8 强制内存缓存