31. C和C++混合开发

一、C和C++混合开发

    C++ 可以看作是 C 语言的增强版,在 C 的基础上扩展了更多的功能。一个 C 程序可以看作一个简单的 C++ 程序。但是 C++ 和 C 语言之间还是存在区别的。例如,C++ 支持函数名重载,而 C 不支持,因此编译器生成目标文件时,函数名在目标文件中的临时内部名称规则不同,导致链接时符号对不上。因此,我们可以使用 extern "C"{} 可以使 {} 中的内容用 C 的标准来编译。

  新建一个 test.c 文件,用来存放编写的 C 源代码。

#include "test.h"

int add(int a, int b)
{
    return a + b;
}

  新建一个 test.h 文件,用来存放编写的 C 的头文件。

#pragma once

// C++的编译器会定义一个__cplusplus的宏
#ifdef __cplusplus
// 告诉编译器{}内的内容使用C语言编译器编译
extern "C"
{
#endif // __cplusplus

    int add(int a, int b);

#ifdef __cplusplus
}
#endif // __cplusplus

  新建一个 main.cpp 文件,用来存放编写的 C++ 的源文件。

#include <iostream>
#include "test.h"

using namespace std;

int main(void)
{
    int count = add(10 ,20);

    cout << "count = " << count << endl;

    return 0;
}

如果我们在 C++ 程序中直接调用 C 程序中编写的程序,会报如下错误:undefined reference to `add(int, int)'。

posted @   星光映梦  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示