社区
C++ 语言
帖子详情
关于API的声明?
master_feng2009
2009-04-29 10:37:37
下面是自己声明了一个API函数:
BOOL WINAPI PaintDIB (HDC, LPRECT, HDIB, LPRECT, CPalette* pPal);
请问为什么前面要加WINAPI,它与不加WINAPI的函数声明有什么区别?
即与BOOL PaintDIB (HDC, LPRECT, HDIB, LPRECT, CPalette* pPal); 的区别?
...全文
110
4
打赏
收藏
关于API的声明?
下面是自己声明了一个API函数: BOOL WINAPI PaintDIB (HDC, LPRECT, HDIB, LPRECT, CPalette* pPal); 请问为什么前面要加WINAPI,它与不加WINAPI的函数声明有什么区别? 即与BOOL PaintDIB (HDC, LPRECT, HDIB, LPRECT, CPalette* pPal); 的区别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
沙漠里的海豚
2009-04-30
打赏
举报
回复
[Quote=引用 2 楼 lingyin55 的回复:]
WINAPI见windef.h这个头文件
#define WINAPI __stdcall
默认情况下,我们的函数调用都是遵循__stdcall这个规则的。当然,也有诸如__cdecl、__pascal等规则。
使用__stdcall还是__cdecl或__pascal,在纯Windows编程下并非特别需要。
__stdcall:
1、进行函数调用,函数参数的入栈方式是最右边先入栈。
2、同时__stdcall规定,调用者负责栈的回收。当然,这些工作是应用程序自己完成的,不需要…
[/Quote]
不错 呵呵
liliangbao
2009-04-29
打赏
举报
回复
帮顶~
lingyin55
2009-04-29
打赏
举报
回复
WINAPI见windef.h这个头文件
#define WINAPI __stdcall
默认情况下,我们的函数调用都是遵循__stdcall这个规则的。当然,也有诸如__cdecl、__pascal等规则。
使用__stdcall还是__cdecl或__pascal,在纯Windows编程下并非特别需要。
__stdcall:
1、进行函数调用,函数参数的入栈方式是最右边先入栈。
2、同时__stdcall规定,调用者负责栈的回收。当然,这些工作是应用程序自己完成的,不需要编写者动手。汇编语言另当别论(POP SP POP BP等)
题外话:__pascal的调用规则是从左到右,真好与__stdcall相反。
3、C调用约定(即用__cdecl关键字说明)(The C default calling convention)按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数vararg的函数(如printf)只能使用该调用约定)。另外,在函数名修饰约定方面也有所不同。 _cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。VC将函数编译后会在函数名前面加上下划线前缀。
是MFC缺省调用约定。
在函数调用过程中,会使用栈。__stdcall与__cdecl是两种不同的函数调用约定,定义了函数参数入栈的顺序,由调用函数还是被调用函数将参数弹出栈,以及产生函数修饰名的方法。关于这两个调用约定的详细信息,读者可参看MSDN。对于参数个数可变的函数,例如printf,使用的是__cdecl调用约定,Win32的API函数都遵循__stdcall调用约定。在VC++开发环境中,默认的编译选项是__cdecl,对于那些需要__stdcall调用约定的函数,在声明时必须显式地加上__stdcall。在Windows程序中,回调函数必须遵循__stdcall调用约定,所以我们在声明回调函数时要使用CALLBACK。使用CALLBACK而不是__stdcall的原因是为了告诉我们这是一个回调函数。注意,在Windows 98和Windows 2000下,声明窗口过程函数时,即使不使用CALLBACK也不会出错,但在Windows NT4.0下,则会出错
npuhuxl
2009-04-29
打赏
举报
回复
http://topic.csdn.net/t/20010621/13/166647.html
Kubernetes
声明
式
API
声明
式
API
践行了"将简单留给用户,将复杂流程系统"的设计理念。对于用户来说,只需掌握
API
对象的使用,无需关心内部的实现细节。系统会使用控制器模式将资源对象调谐到
API
对象指定的"期望状态"。
声明
式
API
是Kubernetes最核心的设计理念,正因为实现了对
声明
式
API
的支持,才可在基于Kubernetes构建的上层平台使用一致的编程范式和交互编程界面,才使得今天整个云原生生态中诞生了如此多的Kubernetes插件能力和扩展。
Kubernetes 了解
声明
式
API
Kubernetes
API
概述 Kubernetes
API
是集群系统中的重要组成部分,Kubernetes中各种资源(对象)的数据都通过该
API
接口被提交到后端的持久化存储(etcd)中,Kubernetes集群中的各部件之间通过该
API
接口实现解耦合,同时Kubernetes集群中一个重要且便捷的管理工具kubectl也是通过访问该
API
接口实现其强大的管理功能的。Kubernetes
API
中的资源对象都拥有通用的元数据,资源对象也可能存在嵌套现象,比如在一个Pod里面嵌套多个Container。创
10-
声明
式
API
[toc] 命令式命令行操作 很多 Kubernetes 的
API
对象,有的是用来描述应用,有的则是为应用提供各种各样的服务。但是,无一例外地,为了使用这些
API
对象提供的能力,你都需要编写一个对应的 YAML 文件交给 Kubernetes。 这个 YAML 文件,正是 Kubernetes
声明
式
API
所必须具备的一个要素。不过,是不是只要用 YAML 文件代替了命令行操作,就是...
API
函数
声明
在VB中,如何
声明
函数呢?我想,如果你正在看此文,那么你绝对能够回答得出这个问题。以下便是你应该很熟悉的函数
声明
∶Function SetFocus (ByVal hwnd As Long) As Long即,这行代码定义了名为SetFocus的函数,此函数具有一个Long型数据类型的参数,并按值传递(ByVal),函数执行后将返回一个Long型数据。
API
函数的
声明
也很类似,如,
API
中的Set
vb怎么
声明
api
函数:VB中
声明
和使用
API
函数
一、在VB中
声明
API
函数有两种方法:如果我们只在某个窗体中使用
API
函数,我们可以在窗体代码的General部分
声明
它:
声明
的语法是: Private Declare Function ... Private Declare Sub..... 这里必须采用Private
声明
,因为这个
API
函数只能被一个窗体内的程序所调用。 如果我们的程序有多个窗体构成,而且我们需
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章