C++对全局函数的处理方式是什么

这篇文章主要介绍“C++对全局函数的处理方式是什么”,在日常操作中,相信很多人在C++对全局函数的处理方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++对全局函数的处理方式是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

为什么标准头文件都有类似以下的结构?

#ifndef __INCvxWorksh  #define __INCvxWorksh   #ifdef __cplusplus  extern "C" {  #endif   /*...*/   #ifdef __cplusplus  }  #endif   #endif /* __INCvxWorksh */

那么:

#ifdef __cplusplus  extern "C" {   #endif    #ifdef __cplusplus  }  #endif

而在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。

/* c语言头文件:cExample.h */  #ifndef C_EXAMPLE_H  #define C_EXAMPLE_H  extern int add(int x,int y);  #endif  /* c语言实现文件:cExample.c */  #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++语言中的函数和变量时,C++的头文件需添加extern "C",但是在C语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型。

//C++头文件 cppExample.h  #ifndef CPP_EXAMPLE_H  #define CPP_EXAMPLE_H  extern "C" int add( int x, int y );  #endif  //C++实现文件 cppExample.cpp  #include "cppExample.h"  int add( int x, int y )  {   return x + y;  }  /* C实现文件 cFile.c  /* 这样会编译出错:#include "cExample.h" */  extern int add( int x, int y );  int main( int argc, char* argv[] )  {   add( 2, 3 );    return 0;

到此,关于“C++对全局函数的处理方式是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

原创文章,作者:6024010,如若转载,请注明出处:https://blog.ytso.com/237568.html

(0)
上一篇 2022年1月29日
下一篇 2022年1月29日

相关推荐

发表回复

登录后才能评论