iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么在C语言中引用C++的函数和变量
  • 789
分享到

怎么在C语言中引用C++的函数和变量

2023-06-17 17:06:34 789人浏览 安东尼
摘要

本篇内容主要讲解“怎么在C语言中引用c++的函数和变量”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在C语言中引用C++的函数和变量”吧!引用C++语言的头文件需添加extern "

本篇内容主要讲解“怎么在C语言中引用c++的函数和变量”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在C语言中引用C++的函数和变量”吧!

引用C++语言的头文件需添加extern "C",但是在C语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型,希望本文能教会你更多东西。

实际上,在连接阶段,连接器会从模块A生成的目标文件moduleA.obj中寻找_foo_int_int这样的符号!加extern "C"声明后的编译和连接方式加extern "C"声明后,模块A的头文件变为:

// 模块A头文件 moduleA.h  #ifndef MODULE_A_H  #define MODULE_A_H  extern "C" int foo( int x, int y );  #endif

在模块B的实现文件中仍然调用foo( 2,3 ),其结果是:
(1)模块A编译生成foo的目标代码时,没有对其名字进行特殊处理,引用C++语言的方式;
(2)连接器在为模块B的目标代码寻找foo(2,3)调用时,寻找的是未经修改的符号名_foo。如果在模块A中函数声明了foo为extern "C"类型,而模块B中包含的是extern int foo( int x, int y ) ,则模块B找不到模块A中的函数;反之亦然。

所以,可以用一句话概括extern “C”这个声明的真实目的(任何语言中的任何语法特性的诞生都不是随意而为的,来源于真实世界的需求驱动。我们在思考问题时,不能只停留在这个语言是怎么做的,还要问一问它为什么要这么做,动机是什么,这样我们可以更深入地理解许多问题):

  • 探索C++语言种种简洁灵活特性说明

  • 如何使用Visual C++子集搜索主题

  • 如何更好学习C++ ——及C++学习方法总结

  • 高级编程对C++学习方法说明指导

  • 更好的理解C++编程学习与研究

实现C++与C及其它语言的混合编程。明白了C++中extern "C"的设立动机,我们下面来具体分析extern "C"通常的使用技巧。
.extern "C"的惯用法
(1)在C++中引用C语言中的函数和变量,在包含C语言头文件(假设为cExample.h)时,需进行下列处理:

extern "C"  {  #include "cExample.h"  }

而在C语言的头文件中,对其外部函数只能指定为extern类型,引用C++语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。笔者编写的C++引用C函数例子工程中包含的三个文件的源代码如下:

  #ifndef C_EXAMPLE_H  #define C_EXAMPLE_H  extern int add(int x,int y);  #endif    #include "cExample.h"  int add( int x, int y )  {   return x + y;  }  // c++实现文件,调用add:cppFile.cpp  extern "C"   {   #include "cExample.h"  }  int main(int arGC, char* argv[])  {   add(2,3);    return 0;  }

如果C++调用一个C语言编写的.DLL时,当包括.DLL的头文件或声明接口函数时,应加extern "C" { }。(2)在C中引用C++语言中的函数和变量时,C++的头文件需添加extern "C",但是在C语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型。

到此,相信大家对“怎么在C语言中引用C++的函数和变量”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么在C语言中引用C++的函数和变量

本文链接: https://www.lsjlt.com/news/291509.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在C语言中引用C++的函数和变量
    本篇内容主要讲解“怎么在C语言中引用C++的函数和变量”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在C语言中引用C++的函数和变量”吧!引用C++语言的头文件需添加extern "...
    99+
    2023-06-17
  • c语言math库函数怎么引用
    要使用C语言的math库函数,需要在代码中包含头文件<math.h>。只需在代码的开头添加以下语句: #include ...
    99+
    2024-02-29
    c语言
  • 怎么在PHP中调用C语言函数
    怎么在PHP中调用C语言函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。// 创建一个 FFI 对象,加载 libc 并...
    99+
    2023-06-14
  • C语言函数封装及变量的作用域
    目录1. for循环示例2. 模拟实现投票系统。switch3. 计算字符串空格、数字等数据数量4. 字符串转整数。5. 整数转字符串6. 浮点数转字符串7. 字符串转浮点数8. 函...
    99+
    2024-04-02
  • C语言中函数怎么用
    这篇文章主要为大家展示了“C语言中函数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言中函数怎么用”这篇文章吧。函数函数定义百度百科对函数的定义:子程序在计算机科学中,子程序是一个大型...
    99+
    2023-06-25
  • c语言和c++语言中const修饰的变量区别浅析
    目录c:修饰全局变量:修饰局部变量:c++:修饰全局变量:修饰局部变量:总结:在c语言中:在c++语言中:总结c: 修饰全局变量: 用const修饰的全局变量是没有办法直接修改的,间...
    99+
    2024-04-02
  • 浅谈C语言的变量和常量
    目录变量的分类1.全局变量2.局部变量(补充:只要放在{ }里的都是局部变量)变量的作用域和生命周期作用域生命周期常量总结生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型...
    99+
    2024-04-02
  • c语言中的pow函数怎么用
    pow 函数用于计算 x 的 y 次方。其语法为 pow(double x, double y),其中 x 为要计算幂次方的数字,y 为幂次方值。调用该函数并将 x 和 y 传递给它即可...
    99+
    2024-05-10
    c语言
  • c语言指针在函数中怎么使用
    在C语言中,指针在函数中的使用有以下几种方式:1. 将指针作为函数参数传递:可以将指针作为函数的参数传递给函数,这样函数内部就可以通...
    99+
    2023-10-20
    c语言
  • c语言中strlen函数怎么用
    strlen 函数用于确定给定字符串的长度,使用方法如下:包含 string.h 头文件声明指向给定字符串的常量字符指针调用 strlen 函数,将字符指针作为参数传递将函数的返回值存储...
    99+
    2024-05-08
    c语言 标准库 len函数
  • c语言中sign函数怎么用
    c 语言中的 sign 函数用于获取浮点值符号,返回整数表示正、负或零。语法:sign(double x),参数为浮点值 x。返回值:x 大于 0 返回 1,小于 0 返回 -1,等于 ...
    99+
    2024-04-13
    c语言
  • c语言中parse函数怎么用
    parse 函数解析字符串,将其转换为由分隔符分隔的令牌列表。步骤:1. 从字符串开头搜索第一个非分隔符字符;2. 继续搜索直到遇到分隔符,并在该分隔符处终止字符串;3. 将令牌存储在令...
    99+
    2024-04-28
    c语言 字符串解析
  • c语言中fseek函数怎么用
    fseek 函数用于在文件流中设置文件指针位置,其语法为 fseek(file *stream, long int offset, int whence)。根据 whence 参数,of...
    99+
    2024-05-08
    c语言
  • c语言中isalpha函数怎么用
    在C语言中,isalpha函数用于检查一个字符是否为字母。该函数的原型为: #include int isalpha(int c)...
    99+
    2023-10-23
    c语言
  • C语言中sizeof函数怎么用
    这篇文章给大家分享的是有关C语言中sizeof函数怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一.sizeof 函数简介在 C 语言中,char 字符串也是一种非常重要的数据类型,我们除了使用 sizeo...
    99+
    2023-06-25
  • C语言中itoa()和sprintf()函数怎么使用
    itoa()函数是将一个整数转换成字符串的函数,函数原型为:char *itoa(int value, char *str, int...
    99+
    2023-09-06
    C语言
  • 在c语言中log2函数怎么表达
    c语言中没有内置的log2函数,可使用以下公式计算:log2(x) = log(x) / log(2)。使用步骤:包含头文件,使用log2(x)表达式,并存储或用于进一步计算。 C语言...
    99+
    2024-05-02
    c语言
  • C语言浮点函数中的modf和fmod怎么用
    这篇文章给大家分享的是有关C语言浮点函数中的modf和fmod怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。modf函数可以提取出浮点数的整数部分和小数部分。fmod函数可以返回两个浮点数相除的余数。它们的...
    99+
    2023-06-29
  • C语言中的可变参数怎么使用
    今天小编给大家分享一下C语言中的可变参数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、什么是可变参数我们在C语言...
    99+
    2023-06-08
  • C语言的函数怎么定义和使用
    本篇内容主要讲解“C语言的函数怎么定义和使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言的函数怎么定义和使用”吧!关于函数函数是C语言的基本单元,函数中包含实现程序功能的代码。C语言程序...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作