首页 > 其他分享 >30.externC的用法

30.externC的用法

时间:2023-07-03 21:35:00浏览次数:31  
标签:handle int 30 C++ 用法 xx extern C语言 externC

为了能够正确地在C++代码中调用C语言的代码:在程序中加上extern "C"后,相当于告诉编译器这部分代码是C语言写的,因此要按照C语言进行编译,而不是C++;

哪些情况下使用extern "C":

(1)C++代码中调用C语言代码;

(2)在C++中的头文件中使用;

(3)在多个人协同开发时,可能有人擅长C语言,而有人擅长C++;

举个例子,C++中调用C代码:

#ifndef __MY_HANDLE_H__
#define __MY_HANDLE_H__

extern "C"
{
    typedef unsigned int result_t;
    typedef void* my_handle_t;
    
    my_handle_t create_handle(const char* name);
    result_t operate_on_handle(my_handle_t handle);
    void close_handle(my_handle_t handle);
}

综上,总结出使用方法,在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。所以使用extern "C"全部都放在于cpp程序相关文件或其头文件中。

总结出如下形式:

(1)C++调用C函数:

//xx.h
extern int add(...)
//xx.c
int add()
{
  
}
//xx.cpp
extern "C" 
{
    #include "xx.h"
}

(2)C调用C++函数

//xx.h
extern "C"
{
    int add();
}
//xx.cpp
int add()
{    
}
//xx.c
extern int add();

参考资料来源:

阿秀

标签:handle,int,30,C++,用法,xx,extern,C语言,externC
From: https://www.cnblogs.com/codemagiciant/p/17524131.html

相关文章

  • MYSQL笔记:删除操作Delete、Truncate、Drop用法比较
    1、执行速度比较Delete、Truncate、Drop关键字都可以删除数据drop>truncate>delete2、原理方面2.1deletedelete属于数据库DML操作语言,只会删除数据表中的记录,会执行事务,执行的时候也会触发触发器。InnoDB数据库引擎中,执行delete操作只会给删除的记录打上了删除标记,并不会真正删除......
  • [LOJ 6030]「雅礼集训 2017 Day1」矩阵 题解
    首先不难想到一个贪心,就是先填出一个全黑的行,然后再用其填黑列。而且在其中“填出一个全黑的行步数”我们应该最小化。这个贪心的正确性证明如下:必要性:填黑列的必要条件为有一个全黑的行。充分性:“填黑列的步数”就是“非全黑列的数量”。显然,如果填出一个全黑的行的过程中......
  • 20230701巴蜀暑期集训测试总结
    T1BS5463【NOI2018模拟7】xiz考场A了,猜的结论。求出每个位置上一个和他相同的数的距离,进行KMP。但是每个数在\(B\)中第一次出现的位置不好处理,就猜了个结论——KMP的两个循环中相等的判断方式相同就可以了(至今不知道是否一定是这样),改动一下两个数相等的判断就完了。详解T......
  • 20230703测试
    A我不打了,但是考场上没想起来排列stl怎么写,所以在下面打10遍next_permutationnext_permutationnext_permutationnext_permutationnext_permutationnext_permutationnext_permutationnext_permutationnext_permutationnext_permutationnext_permutation你可以数......
  • 理解ASEMI代理海矽美快恢复二极管SFP3012A的性能与应用
    编辑-Z在电子元件领域,快恢复二极管SFP3012A是一种重要的半导体器件,它在电路设计中扮演着至关重要的角色。本文将深入探讨SFP3012A的性能特点和应用领域,帮助读者更好地理解和使用这种二极管。 一、SFP3012A的性能特点 快恢复二极管SFP3012A具有许多优秀的性能特点。首先,它具......
  • ASEMI代理海矽美SFP3012, 快恢复二极管SFP3012参数
    编辑-ZSFP3012参数描述:型号:SFP3012最大反向重复峰值电压VRRM:1200V平均整流正向电流IF:30A反向恢复时间TRR:≤65nS正向峰值浪涌电流IFSM:160×2A工作接点温度TJ:-40~175℃储存温度TSTG:-40~175℃典型热阻RθJC:0.5℃/WVB:1200VIR:0.01mAVF:2.2V  SFP3012特征:超快速切换,实现......
  • 20230703赛后复盘
    复盘时间安排8:00~8:30写&调试T1正解,过样例8:30~8:50想写T2正解,然而胡错了(所以又重写了)8:50~9:10写T2的\(O(kn^2)\)部分分然后瞟了眼T3感觉不会,跳过去看T49:10~9:40推T4的正解。推了一半,卡在进位的处理上(悲)9:40~9:50爬去写暴力9:50~10:00回头写了个T3部分分最后一个多......
  • 20230703 讲题
    CF1394DBoboniuandJianghu容易发现若\(b_u\neb_v\)则边的方向确定,问题转化为给\(b_u=b_v\)的边定向。设\(f_{u,0/1}\)为\(u\)连向父亲的点的方向是\(u\tofa\)还是\(fa\tou\)。我们知道一个点的贡献系数是\(\max(in,out)\),其中\(in\)和\(out\)为入......
  • OGG-02912 Patch 17030189 is required on your Oracle mining database for trail fo
    Therewillbeascript"prvtlmpg.plb"undergghomedirectory[oracle@OGGR2-1ogg]$ls-lrtprvtlmpg.plb-rw-r-----1oracleoinstall9487May272015prvtlmpg.plb[oracle@OGGR2-1ogg]$pwd/ogg[oracle@OGGR2-1ogg]$Logintothedatabaseand......
  • 19C-19.16 ORA-17503 ORA-27300 ORA-27301 ORA-27302
    ***alter日志告警2023-07-01T02:05:13.474592+08:00Errorsinfile/u01/app/oracle/diag/rdbms/dg/dg1/trace/dg1_ora_17925.trc:ORA-17503:ksfdopn:2Failedtoopenfile+DATA/dg/PASSWORD/pwddgORA-27300:OSsystemdependentoperation:openfailedwithstatus:13ORA-......