C/C++混合编程

1.关键字extern “C”

记得之前面试官问我extern "C"了解不?说实话,当时我真的不了解,很少关注这个。现在我才明白,**extern “C”**的主要作用就是为了能够正确实现C++代码调用其他C语言代码。

加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。

2.在头文件中使用声明函数,定义函数不需要

源文件mySub.c

#include "mySub.h"

/* Function Definitions */

/*
 * Arguments    : int a
 *                int b
 * Return Type  : int
 */
 
int mySub(int a, int b)
{
  long long i0;
  i0 = (long long)a - b;
  if (i0 > 2147483647LL) {
    i0 = 2147483647LL;
  } else {
    if (i0 < -2147483648LL) {
      i0 = -2147483648LL;
    }
  }

  return (int)i0;
}

头文件mySub.h

#ifndef __MYSUB_H__
#define __MYSUB_H__




#ifdef __cplusplus
 extern "C" {
#endif

extern int mySub(int a, int b);


#ifdef __cplusplus
}
#endif


#endif

其中,__cplusplus是C++编译器内置的宏

//__cplusplus是C++编译器内置的宏
#ifdef __cplusplus
 extern "C" {
#endif

//extern int mySub(int a, int b);

//__cplusplus是C++编译器内置的宏
#ifdef __cplusplus
}
#endif

这样,就可以使用了,或者可以把*.c改成,*.cpp文件,就可以使用功c++的编译器了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值