extern "C",头文件重复包含,#pragma once

1.用c语言的方式编译代码
在这里插入图片描述
也可以这样用,用大括号将声明括起来
在这里插入图片描述

2.如果函数同时有声明和实现,要让函数声明被extern “C” 修饰,函数实现可以不修饰
函数声明加extern C加修饰
在这里插入图片描述
3.函数重载,一个加,一个不加,ok
一个用c方式编译,一个用c++编译, 可以重载,ok
在这里插入图片描述
完全相同函数,一个加一个不加, 会产生二义性,报错
在这里插入图片描述

2.c, c++混合开发时,可能会用一下操作
如c++开发中调用第三方框架/库,可能是c语言写的开源库
如main.cpp调用math.c文件的函数
在这里插入图片描述
项目代码中的正确使用
c代码, 函数的实现放在.c文件里, 函数的声明放在.h文件,为了方便c++代码调用, 通常在.cpp文件中将用extern “C” 包含c的.h头文件
在这里插入图片描述
如果在c的.h头文件中直接加上extern c, 在cpp文件中引用就不用再加extern c了,但是这样.c文件就没发include包含这个头文件了

3.正确用法,在cpp文件中被包含时,才用extern c
c++文件中默认有一个宏, #define __cplusplus

4. 防止头文件重复包含, 这里xxxx.h本身要不能与别人重复, 所以一般用 __finename.h定义这个放在重复引用的宏
#ifndef xxxx.h
#define xxxx.h


#endif

5.#pragma once 也可以防止整个文件内容被重复包含,但是老的编译器不支持,且是针对整个文件
而#ifndef #define #endif 不受编译器限制,而且可以针对文件中的某一部分代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值