C++ extern “C”

一、c的extern

c语言的extern关键字作用是说明“此变量/函数是在别处定义的,要在此处引用”。

二、cpp中的extern “C”

1、c与cpp的编译规则不同,extern "C"告诉cpp编译器已c的风格编译代码。
2、cpp调用c的函数时,除了声明extern “C”外还要在c文件添加宏定义。

/**********A.h*****************/
#ifndef A_H
#define A_H

#ifdef __cplusplus
extern "C" {
#endif

	int foo(int x, int y);

	class A;
#ifdef __cplusplus
}
#endif

#endif
/*********************A.cpp*************************/
#include "A.h"
int foo(int x, int y) {
	return x + y;
}

class A {
	int a;
};
/**********************B.cpp**********************************/
extern "C" {
	#include "A.h"
}
#include<iostream>


int main() {
	std::cout << foo(1, 2);
}

三、cpp动态链接库

extern "C" __declspec(dllimport) className * _stdcall geObjFun();

VS编译动态链接库供其他语言使用时使用到的命令。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 03:46:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 03:46:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 03:46:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 03:46:03       20 阅读

热门阅读

  1. 1130. 【二维数组】打印螺旋矩阵

    2024-06-09 03:46:03       9 阅读
  2. Android 13 亮度调节代码分析

    2024-06-09 03:46:03       11 阅读
  3. 中国剩余定理学习

    2024-06-09 03:46:03       10 阅读
  4. 【React】前端插件 uuidjs 的使用 --随机生成id

    2024-06-09 03:46:03       8 阅读
  5. 浅谈一下关系型数据库中json类型字段的处理

    2024-06-09 03:46:03       11 阅读
  6. MySQL学习——INFORMATION_SCHEMA触发器表

    2024-06-09 03:46:03       11 阅读
  7. Unity3D Delaunay德罗内三角算法详解

    2024-06-09 03:46:03       11 阅读