declspec的用法小结

来源:互联网 发布:刷高中生物的软件 编辑:程序博客网 时间:2024/06/03 19:35

目前学了三个declspec的用法:


1.线程局部存储TLS机制:(在全局变量或静态变量前加上标识符__declspec(thread)就变为私有变量)

// 定义静态TLS全局变量
__declspec(thread)  int __TlsValue = 0;


2.

__declspec(naked)加在函数的定义前,代表函数的栈区是要由其自己写汇编开辟的,不加的时候(一般),都是由操作系统为其开辟堆栈。

所以通常写法都是:
__declspec(naked) 
    void Sub_1()
{
_asm
{


}
}

3._declspec(dllexport)动态库导出

_declspec(dllexport)加在函数的定义前,代表函数以动态库的形式导出。

//注意这里前面是单下滑线。


#8.13补充:

_declspec  (dllexport)是“静态导出”;lib的形式,

使用方法:函数已经初始化到导入表里了,操作系统已加载,可以直接使用。


extern "C" __declspec (dllexport)和_declspec(dllexport)区别
查看PEcheck,
实际上是函数导入名称的区别.

extern "C"的意思:
兼容C语言,执行C语言运行库。(一般默认为C++运行库)








原创粉丝点击