- 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支持所有版本