1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > C语言 extern “C” - C语言零基础入门教程

C语言 extern “C” - C语言零基础入门教程

时间:2020-01-29 05:13:10

相关推荐

C语言 extern “C” - C语言零基础入门教程

目录

一.__cplusplus 简介二.__cplusplus 使用三.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.__cplusplus 简介

__cplusplus 和 extern “C” 一般都是配对使用,我们在阅读程序时,经常会见到__cplusplus 关键字,比如下面的代码:

/******************************************************************************************///@Author:猿说编程//@Blog(个人博客地址): //@File:C语言教程 - C语言 __cplusplus//@Time:/07/14 07:30//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!/******************************************************************************************/#ifndef __CODERSRC_H__/*防止该头文件被重复引用*/#define __CODERSRC_H__#ifdef __cplusplus //告诉编译器,这部分代码按C语言的格式进行编译,而不是C++的extern "C"{#endif/*.................................* do something here*.................................*/#ifdef __cplusplus}#endif#endif /*end of __CODERSRC_H__*/

分析:头文件中编译宏”#ifndef __CODERSRC_H** 、#define __CODERSRC_H**、#endif”作用是为了防止该头文件被重复引用;

同时也是告诉编译器,如果定义了__cplusplus( cpp 文件默认定义了该宏),则采用 C 语言方式进行编译(即:在 c++ 中调用 c );

重点提示:如果是 C++ 调用由 C 语言编写的第三方库,必须使用 extern “C” 告诉编译以 C 方式编译,否则会出现编译报错的问题;

二.__cplusplus 使用

/******************************************************************************************///@Author:猿说编程//@Blog(个人博客地址): //@File:C语言教程 - C语言 __cplusplus//@Time:/07/14 07:30//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!/******************************************************************************************/#ifdef __cplusplusextern "C" {#endifvoid *memset(void* ,int , size_t);#ifdef __cplusplus}#endif

由于 C 和 C++ 毕竟是不同的,为了实现某个程序在 C 和 C++ 中都是兼容的,如果定义两套头文件,未免太过麻烦,所以就有了 __cplusplus 的出现,这个是在 C++ 中特有的,__cplusplus 其实就是 C++ ,也就有了上面第一段代码的使用,如果这段代码是在 C++ 文件中出现,那么经过编译后,该段代码就变成了:

/******************************************************************************************///@Author:猿说编程//@Blog(个人博客地址): //@File:C语言教程 - C语言 __cplusplus//@Time:/07/14 07:30//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!/******************************************************************************************//**********C++文件中条件编译后结果***************/extern "C" {void *memset(void* ,int , size_t);}而在C文件中,经过条件编译,该段代码变成了:/**********C文件中条件编译后结果*************/void *memset(void* ,int , size_t);

三.猜你喜欢

C 语言 数组下标越界和内存溢出区别C 语言 指针声明和定义C 语言 指针 p++ / p–C 语言p++/§++/_(p++)/_p++C 语言 使用指针遍历数组C 语言 指针和数组区别C 语言 指针数组和数组指针区别C 语言 空指针 NULLC 语言 void 指针C 语言 野指针C 语言 函数值传递和址传递C 语言 函数缺省参数C 语言 函数不定长参数C 语言 函数指针C 语言 指针函数C 语言 回调函数 callbackC 语言 typedefC 语言 define 定义常量C 语言 define 防止头文件重复包含C 语言 #pragma onceC 语言 #include <> 与 #include “” 区别C 语言 const 修饰变量C 语言 const 修饰指针C语言 const 修饰函数C 语言 const 修饰函数参数C 语言 const 和 define 区别C 语言 #运算符C 语言 ##运算符C 语言 extern “C”C 语言 __cplusplus

未经允许:猿说编程 » C 语言 __cplusplus

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。