C++:1.1.2extern “C”

extern “C”

一、作用

被extern"C"修饰的代码会按照C语言的方式去编译

例如:

//单行
extern "C" void func() {};

//多行
extern "C" {
    void func() {};
   	void func(int a) {};
    void func(int a,int b) {};
}

​ 则函数func ( ) 将使用C语言的方式进行编译

二、使用

>由于C、C++编译规则的不同,在C、C++混合开发时,可能会经常出现以下操作

​ >使用第三方框架\库,可能是用C语言写的,就需要使用extern “C”。

方法:

​ C++文件中存在被定义的 __cplusplus; 通过此定义可以判定文件是否为C++,从而选择是否要包括extren “C”;

1>引用第三方库的头文件

//main.cpp文件
#include<iostream>
#include<string>
#include "other.h"   //引用头文件
using namespace std;
int main(void)
{
	cout << sum(10,10) << endl;
	cout << delta(10, 10) << endl;
	cout << divide(10, 10) << endl;
	system("pause");
}

2>添加other.h文件,并定义好使用的函数,并防止文件被重复引用。

  • ​ 防止重复被包含,一般用文件名字定义,以两个下划线开头并使用大写。
//other.h头文件
//头文件定义函数
#ifndef __OTHER_H
#define __OTHER_H   //防止重复被包含

#ifdef __cplusplus
extern "C" {
#endif  //!__cplusplus

int sum(int v1, int v2);
int delta(int v1, int v2);
int divide(int v1, int v2);

#ifdef __cplusplus
}
#endif  //!__cplusplus

#endif  //!__OTHER_H

3>第三方库一般会带有一个头文件,只需引用即可,若没有则使用上述方法,当然对于不同的情况可以有不同选择

  • ​ 例如需要用C语言编译的代码比较短时,使用多行包括即可。
//other.c文件
//第三方库
#include "other.h"
int sum(int v1, int v2)
{
	return v1 + v2;
}
int delta(int v1, int v2)
{
	return v1 - v2;
}
int divide(int v1, int v2)
{
	return v1 / v2;
}

提示:防止重复包含也可使用#pragma once(在VS环境下),不同平台存在差异,

​ 所以为了兼容还是选择#ifdef、#define、#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值