pytorch源码解析-动态接口宏

动态库接口定义:
	gcc:
		定义在动态库的显示属性:
			作用对象: 	函数、变量、模板以及C++类
			default:	表示在动态库内可见
			hidden:		表示不可见
		#define EXPORT __attribute__((__visibility__("default")))
	微软:
		#define C10_EXPORT __declspec(dllexport)	 制作dll时候用
		#define C10_IMPORT __declspec(dllimport)	 调用dll时候用
			放到同一个api 头文件中
			当编译的时候用export
			调用的时候用 import 

	通常用法:
		class API Tensor {};

	常用方法:
	#ifdef _WIN32
		#windows编译
		#if defined(C10_BUILD_SHARED_LIBS)		#如果定义动态库
			#define C10_EXPORT __declspec(dllexport)
			#define C10_IMPORT __declspec(dllimport)
		#else
			#define C10_EXPORT
			#define C10_IMPORT
		#endif
	#else // _WIN32
		#if defined(__GNUC__)
			#define C10_EXPORT __attribute__((__visibility__("default")))
		#else // defined(__GNUC__)
			#define C10_EXPORT
			#endif // defined(__GNUC__)
		#define C10_IMPORT C10_EXPORT
	#endif // _WIN32

	#ifdef BUILD_MAIN_LIB			#编译的时候 这个有定义   调用的时候没有定义
		#define API C10_EXPORT
	#else
		#define API C10_IMPORT
	#endif

	真正使用的时候使用: API 便可

原文地址:https://www.cnblogs.com/longriyao/p/10802682.html

时间: 2024-12-31 20:11:31

pytorch源码解析-动态接口宏的相关文章

Spring源码解析 - BeanFactory接口体系解读

不知道为什么看着Spring的源码,感触最深的是Spring对概念的抽象,所以我就先学接口了. BeanFactory是Spring IOC实现的基础,这边定义了一系列的接口,我们通过这些接口的学习,可以大致了解BeanFactory体系各接口如何分工合作. 为学习具体实现打下基础.毕竟这边逻辑复杂,涉及的概念很多. BeanFactory 是Spring bean容器的根接口.提供获取bean,是否包含bean,是否单例与原型,获取bean类型,bean 别名的api. -- Autowire

JDK1.8 动态代理机制及源码解析

动态代理 a) jdk 动态代理 Proxy, 核心思想:通过实现被代理类的所有接口,生成一个字节码文件后构造一个代理对象,通过持有反射构造被代理类的一个实例,再通过invoke反射调用被代理类实例的方法,来实现代理. 缺点:被代理类必须实现一个或多个接口 参考链接:http://rejoy.iteye.com/blog/1627405 源码解析:见第四部分 cglib 动态代理 核心思想:通过生成子类字节码实现,代理类为每个委托方法都生成两个方法,以add方法为例,一个是重写的add方法,一个

Spring-cloud & Netflix 源码解析:Eureka 服务注册发现接口 ****

http://www.idouba.net/spring-cloud-source-eureka-client-api/?utm_source=tuicool&utm_medium=referral *************************** 先关注下netflix eureka server 原生提供的接口.https://github.com/Netflix/eureka/wiki/Eureka-REST-operations 这是对非java的服务使用eureka时可以使用的r

IdentityServer4源码解析_4_令牌发放接口

目录 identityserver4源码解析_1_项目结构 identityserver4源码解析_2_元数据接口 identityserver4源码解析_3_认证接口 identityserver4源码解析_4_令牌发放接口 identityserver4源码解析_5_查询用户信息接口 identityserver4源码解析_6_结束会话接口 identityserver4源码解析_7_查询令牌信息接口 identityserver4源码解析_8_撤销令牌接口 协议 Token接口 oidc服

IdentityServer4源码解析_5_查询用户信息接口

目录 IdentityServer4源码解析_1_项目结构 IdentityServer4源码解析_2_元数据接口 IdentityServer4源码解析_3_认证接口 IdentityServer4源码解析_4_令牌发放接口 IdentityServer4源码解析_5_查询用户信息接口 [IdentityServer4源码解析_6_结束会话接口] [IdentityServer4源码解析_7_查询令牌信息接口] [IdentityServer4源码解析_8_撤销令牌接口] 协议简析 UserI

Queue(队列)接口和其实现类PriorityQueue(优先级队列)源码解析

前面介绍的Stack是新进后出,而Queue是先进先出的 1.Queue结构 public interface Queue<E> extends Collection<E> { boolean add(E e); boolean offer(E e); E remove(); E poll(); E element(); E peek(); } Queue是一个接口. 2.PriorityQueue源码分析 PriorityQueue是一个优先队列,和先进先出的队列的区别是: 优先

iOS开源库源码解析之Mantle

来自Leo的原创博客,转载请著名出处 我的StackOverflow 这个源码解析系列的文章 AsnycDispalyKit SDWebImage Mantle(本文) AFNetworking(3.0) MBProgressHud SwiftJSON MagicRecord Alamofire 前言 iOS开发中,不管是哪种设计模式,Model层都是不可或缺的.而Model层的第三方库常用的库有以下几个 JSONModel Mantle MJExtension JSON data到对象的转换原

Caffe2源码解析之core

写在前面 在对Tensorflow的后端源码进行了拆解(参见tensorflow源码解析系列文章索引)之后,很想跟其它深度学习框架的实现进行对比,根据框架的流行程度,先选择了Pytorch.Pytorch的后端核心是直接复用了Caffe2,因此本文针对Caffe2源码的core模块进行了简单拆解. 目录 数据存储与表示 storage tensor blob qtensor 操作 observer observable operator 操作求导 operator_schema context

Qt元对象系统源码解析

Qt元对象系统源码解析 https://blog.51cto.com/9291927/2070348 一.Qt元对象系统简介 1.元对象系统简介 Qt 的信号槽和属性系统基于在运行时进行内省的能力,所谓内省是指面向对象语言的一种在运行期间查询对象信息的能力, 比如如果语言具有运行期间检查对象型别的能力,那么是型别内省(type intropection)的,型别内省可以用来实施多态.C++的内省比较有限,仅支持型别内省, C++的型别内省是通过运行时类型识别(RTTI)(Run-Time Typ