extern “C“,#ifdef,#ifndef,#pragma once

  • extern “C”
    • 被extern "C"修饰的代码将按照c语言的方式去编译
    • 要是函数既有声明也有实现,要放在声明前面,或者声明和实现都放,只放实现会报错
    • 用于c,c++混合开发(引用c语言的库)
      • 在引入的库头文件中加入extern “C”(C++调用c库)
      • 如果c文件这样调用会出错
extern "C" void func()
{}
extern "C" void func(int a)
{}

我们可以以用 {} 来将代码包起来写

extern "C"
{
    void func()
    {
    }
    void func(int a)
    {
    }

}

C++文件会默认定义这句代码

#define __cplusplus

那么可以这样写,可以在c,和c++中都可以使用该头文件


#ifdef __cplusplus
extern "C" {
#endif 
    函数声明
    函数声明

#ifdef __cplusplus
}
#endif 
//避免头文件重复包含
//使用#ifndef
//      #define
//      #endif

#ifndef __HEADER_H
#define __HEADER_H
//------------------------------------------

#ifdef __cplusplus
extern "C" {
#endif 
    函数声明
        函数声明

#ifdef __cplusplus
}
#endif


//------------------------------------------
#endif // !__HEADER_H
//#pragma once  避免整个文件被重复包含

//可以起到 #ifndef 一样的效果

#pragma once是针对整个文件

而#ifndef可以只对某一段代码起作用

#pragma once的兼容性不如#ifndef
#pragma once不支持老版本

#ifndef支持所有版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值