首页 > 编程语言 >31. C和C++混合开发

31. C和C++混合开发

时间:2024-11-20 17:14:26浏览次数:3  
标签:__ int 31 add C++ 混合 编译器 cplusplus

一、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)'。

标签:__,int,31,add,C++,混合,编译器,cplusplus
From: https://blog.csdn.net/flurry_heart/article/details/143920962

相关文章

  • springboot汽车租赁智慧管理-计算机毕业设计源码96317
    目 录第1章引 言1.1选题背景1.2研究现状1.3论文结构安排第2章系统的需求分析2.1系统可行性分析2.1.1技术方面可行性分析2.1.2经济方面可行性分析2.1.3法律方面可行性分析2.1.4操作方面可行性分析2.2系统功能需求分析2.3系统性需......
  • 【Linux Ops】如何替换 libstdc++ 提升 GLIBCXX 版本
    【环境】kos5.8sp2,kernel5.10还是上一篇提到的那个软件环境,其依赖的GLIBCXX版本较高,因此在安装时给出了以下错误:xxx:/lib64/libstdc++.so.6:version`GLIBCXX_3.4.29'notfound(requiredbyxxx)执行strings/usr/lib64/libstdc++.so.6|grepGLIBCXX,查看当前环境中......
  • Pylon C++ Programmer's Guide
    移步至PylonC++Programmer'sGuide观看效果更佳GettingStartedpylon编程指南是一个关于如何使用BaslerpylonC++API进行编程的快速指南。它可以与pylon示例代码一起使用,以帮助初学者入门。此外,APIrenfence提供了有关BaslerpylonC++接口的描述。接口的描述也可在pylon的......
  • 算法日记 31 day 动态规划(01背包)
    继续来看动态规划中01背包的题目。题目:最后一块石头的重量II1049.最后一块石头的重量II-力扣(LeetCode)有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x ......
  • springboot农产品小程序-计算机毕业设计源码31670
    摘要 近年来,电子商务的快速发展引起了行业和学术界的高度关注。农产品小程序旨在为用户提供一个简单、高效、便捷的新鲜农产品购物体验,它不仅要求用户清晰地查看所需信息,而且还要求界面设计精美,使得功能与页面完美融合,从而提升系统的可操作性。因此,我们需要深入研究信息内......
  • springboot高校心理咨询管理系统-计算机毕业设计源码31814
    摘 要本论文主要探讨了基于SpringBoot的高校心理咨询管理系统的设计与实现。随着高校心理健康教育的重要性日益凸显,一个高效、便捷的心理咨询管理系统对于提升高校心理咨询服务的质量和效率至关重要。本文首先分析了高校心理咨询管理的现状和需求,然后详细阐述了系统的整......
  • 1.C++基础知识—指针篇
    #指针#变量#1.一个整型数 intnumber;2.一个指向整型数的指针 int* ptrToInt;3.一个指向指针的指针,它指向的指针是指向一个整型数int**ptrToPtrToInt;4.一个有10个整型数的数组intarry[10];5.一个有10个指针的数组,该指针是指向一个整型数的int*ptrArray[10];6......
  • C++基础知识-const篇
    1.const作用在C++中,const 关键字用于定义常量,确保某些数据不会被修改。const的作用包括但不限于以下几点:1.定义常量值:  const 可以用来定义不会改变的常量值  constintMAX_USERS=100;2.修饰指针:  const可以修饰指针,以限制指针指向的数据是否可以被修改......
  • 【c++笔试强训】(第十六篇)
    目录游游的⽔果⼤礼包(枚举)题目解析讲解算法原理编写代码买卖股票的最好时机(⼆)(贪⼼)题目解析讲解算法原理编写代码游游的⽔果⼤礼包(枚举)题目解析1.题目链接:登录—专业IT笔试面试备考平台_牛客网2.题目描述题目描述游游有nnn个苹果,mmm个桃子。她可以把2个苹......
  • (2024最新毕设合集)基于SpringBoot的校园共享厨房信息系统-72647|可做计算机毕业设计JAV
    目 录摘要第一章 绪论1.1选题背景与意义1.2研究现状1.3论文结构与章节安排第二章系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分......