[C.C++] C++调用C语言

838 0
Honkers 2025-3-22 13:00:14 | 显示全部楼层 |阅读模式

1. 包含C头文件

在C++代码中,可以直接包含C语言的头文件。只需要确保使用extern "C"来告诉C++编译器这些函数是C语言函数,以便正确处理名称修饰(name mangling)。

  1. extern "C" {
  2. #include "c_header.h"
  3. }
复制代码

2. 调用C函数

在C++代码中,可以直接调用C语言函数,就像调用C++中的函数一样。

  1. extern "C" {
  2. void cFunction();
  3. }
  4. int main() {
  5. cFunction(); // 调用C函数
  6. return 0;
  7. }
复制代码

3. 使用C全局变量

如果C代码中有全局变量,可以在C++中通过extern关键字来访问。

  1. extern "C" {
  2. int cGlobal;
  3. }
  4. int main() {
  5. std::cout << cGlobal << std::endl; // 使用C全局变量
  6. return 0;
  7. }
复制代码

4. 编译和链接

在编译和链接时,确保C和C++代码都能被正确处理。如果使用命令行编译器,可能需要指定不同的编译器或编译选项。

  1. g++ -o my_program main.cpp c_source.c
复制代码

5. 处理名称修饰

C++编译器会对函数名进行修饰(name mangling),以支持重载等功能。使用extern "C"可以防止这种情况,确保C++调用的函数名与C中定义的相同。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4010
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行