ccwss000
驱动牛犊
驱动牛犊
  • 注册日期2003-12-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分85分
  • 威望9点
  • 贡献值1点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1907回复:8

菜鸟问有关__cdecl的应用问题,先谢谢啦

楼主#
更多 发布于:2003-12-14 15:17
看到别人程序中首先定义
typedef  USHORT (__cdecl *SM_LOGIN)(HANDLE hModule,  PCHAR szPwd );
然后再定义变量SM_LOGIN SM_Login;
后来就直接应用:usRet = SM_Login(hModule, \"MDRaFw0\");
根据我以前用C语言的习惯怎么也理解不了HANDLE 变量hModule和PCHAR 变量通过什么方法转换到了USHORT 变量usRet ,麻烦走过路过的朋友给解释一下,谢谢!!!!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-12-14 15:53
函数指针呀。
ccwss000
驱动牛犊
驱动牛犊
  • 注册日期2003-12-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分85分
  • 威望9点
  • 贡献值1点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-14 16:01
能麻烦您仔细解释一下吗?拜托!!!
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-14 17:02
好好学习C++
l=z=l 我听说,灌水是使分数快速增长的有效方法
qijianggood
驱动大牛
驱动大牛
  • 注册日期2002-07-12
  • 最后登录2004-12-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-12-15 22:53
第一句是定义一个函数指针类型,第二句是声明由第一句定义的类型的一个变量,第三句就是函数调用了。
[img]http://mms.kongzhong.com//storage/03/d8/c8/0307b61e1dd83e13c1acc8d67df5082d/my_pic/animatorpic/f_678355759/c_678460143/40f3a3_1_1_1_1.gif[/img]-----我的愿望!
mailme
驱动老牛
驱动老牛
  • 注册日期2001-05-21
  • 最后登录2010-02-25
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-12-16 08:53
C++Primer中
 
7.9.4 函数指针的数组
我们可以声明一个函数指针的数组例如
int (*testCases[10])();
将testCases 声明为一个拥有10 个元素的数组每个元素都是一个指向函数的函数指针
该函数没有参数返回类型为int
像数组testCases 这样的声明非常难读因为很难分析出函数类型与声明的哪部分相关
在这种情况下使用typedef 名字可以使声明更为易读例如
// typedefs 使声明更易读
typedef int (*PFV)(); // 定义函数类型指针的typedef
PFV testCases[10];
testCases 的这个声明与前面的等价
由testCases 的一个元素引用的函数调用如下
const int size = 10;
PFV testCases[size];
int testResults[size];
void runtests() {
for ( int i = 0; i < size; ++i )
// 调用一个数组元素
319 第七章函数
testResults[ i ] = testCases[ i ]();
}
函数指针的数组可以用一个初始化列表来初始化该表中每个初始值都代表了一个与数
组元素类型相同的函数例如
int lexicoCompare( const string &, const string & );
int sizeCompare( const string &, const string & );
typedef int ( *PFI2S )( const string &, const string & );
PFI2S compareFuncs[2] =
{
lexicoCompare,
sizeCompare
};
我们也可以声明指向compareFuncs 的指针这种指针的类型是指向函数指针数组的指
针声明如下
PFI2S (*pfCompare)[2] = &compareFuncs;
声明可以分解为
(*pfCompare)
解引用操作符* 把pfCompare 声明为指针后面的[2]表示pfCompare 是指向两个元
素数组的指针
(*pfCompare)[2]
typedef PFI2S 表示数组元素的类型它是指向函数的指针该函数返回int 有两个const
string&型的参数数组元素的类型与表达式&lexicoCompare 的类型相同也与compareFuncs
的第一个元素的类型相同此外它还可以通过下列语句之一获得
compareFuncs[ 0 ];
(*pfCompare)[ 0 ];
要通过pfCompare 调用lexicoCompare 程序员可用下列语句之一
// 两个等价的调用
pfCompare[ 0 ]( string1, string2 ); // 编写
((*pfCompare)[ 0 ])( string1, string2 ); // 显式
早起早睡 精神百倍
ccwss000
驱动牛犊
驱动牛犊
  • 注册日期2003-12-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分85分
  • 威望9点
  • 贡献值1点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-12-16 09:12
共同学习,欢迎各位有实战经验的前来指导!!
Deavy Lau
驱动牛犊
驱动牛犊
  • 注册日期2003-12-11
  • 最后登录2005-11-30
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-12-16 11:11
明白了。
伫倚危楼,风细细, 望尽春愁,暗暗升天际。 草色烟光残照里,无言谁会凭阑意。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
8楼#
发布于:2003-12-16 20:34
在汇编中才没有什么指针类型的概念,都是32位的,不过你是指向一个字节还是一个结构,引入指针类型,只是为了更好利用X86的相对基址变址的方法而已,即所谓万变不离其中。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部