混合编程
什么是混合编程啊。就是不止一种语言的编程。额,这不等于废话。常见就是c调用c++,c++调用c。这就是最常见的混合编程,这是因为面向对象和面向过程都各有千秋,而且cpp的变量类型要求更大,所以更可靠点,c的话,小巧高效但是限制太少了,很容易越界,数据类型错误等。主要还是c使用面向过程的方法的话,是非常利于维护的
C调用CPP
1 | //c调用cpp是不能直接使用cpp的类的,也不能直接使用cpp的函数,必须使用extern "C"{} //Cpp的头文件 |
1 |
|
1 |
|
这样就是一个最简单最简单的使用了,一般都是c来调用cpp,cpp很多情况都是可以直接调用c,只有部分,因为关键字
和数据结构体的问题等才会出现奇奇怪怪的bug。
C/CPP 调用Python
想不到吧,还能调用python呢,这个跟python版本有点关系,在python 3.12的官方手册中,有一个c扩展的功能,也就是通过调用Python.h来实现,对python函数的使用,那为什么可以实现这种情况呢。Python 本身就是一个C库。你所看到的可执行体python只不过是个stub。真正的python实体在动态链接库里实现,在Windows平台上,这个文件位于 %SystemRoot%\System32\python27.dll。
1 |
|
不过编译方法不是直接编译运行
1 | #可以选择是devC++或者vs那种有命令行的ide |
然后直接使用可执行文件即可
其实c和cpp调用python其实是多此一举的,性能又低,又不是我自己实现不了,cpp也是高级语言啊,cpp也有很多生态。
而且还有万能的指针,python就是看着舒服,简洁高效,模块化,效率和大小令人堪忧
Python调用C/CPP
直接使用Python的API,可以称之为最终解决方案。Cython, SWIG, SIP的接口文件转换后所生成的C/C++代码实际上都使用Python的API。
1 | # 定义参数类型与函数名称 |
效率提升二十倍:Python和C的混合编程_python和c混合编程-CSDN博客
上面这个博客,是把cpp编译成dll和lib文件,然后让python来直接调用,这也算吧,说白,这就是库的思想,你就说是不是混合编程嘛。
而且它有关于c的语言的特殊的数据类型库,python本身是没有数据类型的,只有容器哦
1 | import ctypes |
rust调用c
c调用rust
结语
要说用的多,还是python调用cpp写好的库,这个多实在啊,方便简单。还有就是c调用cpp间接封装好的类接口。混合编程其实就是为了利用各种语言之间的便捷性来实现互通互补,你说c语言可以不可以搞定一切,那肯定可以啊,那时间呢?效率呢?难易程度呢?这些都是我们想要考虑的情况,尤其是python,它有非常庞大的生态,很多库python都是有的,难道c要一个一个写?还是直接使用python来实现混合编程?答案就一目了然了