typedef 后面加个函数名 这怎么理解?
还有下面这段代码 是显示链接动态链接库的
看我的注释的地方
void CMainFrame::OnViewDll()
{
typedef void (MYGOD)(void); //这个怎么理解
HINSTANCE hDLL;
MYGOD* pFunction;
hDLL=::LoadLibrary("MyDll.dll");
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思? (MYGOD*)::GetProcAddress 为什么是这样? (MYGOD*):: ???
(*pFunction)();
::FreeLibrary(hDLL);
}
请高手帮我解释一下我注释的这两句话
typedef IUnknown* (*CREATEFUNCPTR)() 和 typedef void (MYGOD)(void);
(MYGOD*)::GetProcAddress(hDLL,"Hello"); 前面的(MYGOD*) 是干吗的
为什么要:: ?
14 个解决方案
#1
typedef void (MYGOD)(void); 定义函数
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思?
获得Hello函数指针地址,Hello函数为void Hello(),pFunction为函数指针的地址。
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思?
获得Hello函数指针地址,Hello函数为void Hello(),pFunction为函数指针的地址。
#2
typedef void (MYGOD)(void);
突然不知道要说成定义函数,还是定义函数指针的。因为看起来不只函数指针的,但却是为了得到函数指针
突然不知道要说成定义函数,还是定义函数指针的。因为看起来不只函数指针的,但却是为了得到函数指针
#3
对了,忘记说了
::表示全局
::表示全局
#4
typedef void (MYGOD)(void); //这个怎么理解
MYGOD* pFunction;
这是定义一个函数指针,所指函数原型为 void fun(void);
通常写作
typedef void (*MYGOD)(void); //这个怎么理解
MYGOD pFunction;
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思
这是通过GetProcAddress从dll中获得函数"Hello"的地址,然后强制转化成MYGOD*类型
MYGOD* pFunction;
这是定义一个函数指针,所指函数原型为 void fun(void);
通常写作
typedef void (*MYGOD)(void); //这个怎么理解
MYGOD pFunction;
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思
这是通过GetProcAddress从dll中获得函数"Hello"的地址,然后强制转化成MYGOD*类型
#5
freefalcon(心宇) :
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思
这是通过GetProcAddress从dll中获得函数"Hello"的地址,然后强制转化成MYGOD*类型
你说的这个和 UPCC(我是菜鸟)(我就喜欢---灌)
::表示全局
好象不一样,这里 :: 到底表示什么 我想应该不是表示全局的意思
typedef void (MYGOD)(void); 这个说是定义 但是怎么理解?
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思
这是通过GetProcAddress从dll中获得函数"Hello"的地址,然后强制转化成MYGOD*类型
你说的这个和 UPCC(我是菜鸟)(我就喜欢---灌)
::表示全局
好象不一样,这里 :: 到底表示什么 我想应该不是表示全局的意思
typedef void (MYGOD)(void); 这个说是定义 但是怎么理解?
#6
::PostMessage(...)
楼主你给出的是vc的内容,那么我上面的函数你应该看过的吧?
(MYGOD*) ::GetProcAddress(hDLL,"Hello");//获得一个函数,函数的格式为MYGOD指向的格式,函数名为Hello.
::GetProcAddress(hDLL,"Hello");//是一个全局的函数,不属于那一个类的。(MYGOD*)只是一个类型转化而已。
typedef是定义新类型的操作符,本来一般的函数指针是这样的(我熟悉的格式)
typedef void (*MYGOD)(void); //* 定义一个函数指针MYGOD。
楼主你给出的是vc的内容,那么我上面的函数你应该看过的吧?
(MYGOD*) ::GetProcAddress(hDLL,"Hello");//获得一个函数,函数的格式为MYGOD指向的格式,函数名为Hello.
::GetProcAddress(hDLL,"Hello");//是一个全局的函数,不属于那一个类的。(MYGOD*)只是一个类型转化而已。
typedef是定义新类型的操作符,本来一般的函数指针是这样的(我熟悉的格式)
typedef void (*MYGOD)(void); //* 定义一个函数指针MYGOD。
#7
upcc和我说的没有冲突啊
GetProcAddress是一个API,加上域操作符仅仅强调它是全局函数,这里你不加也可以
关于
typedef void (MYGOD)(void);
你得了解typedef的用法
应该知道
typedef int INT;
INT a = 10; // a 即为int类型
那么上面便是定义了MYGOD为函数原型void foo(void)
GetProcAddress是一个API,加上域操作符仅仅强调它是全局函数,这里你不加也可以
关于
typedef void (MYGOD)(void);
你得了解typedef的用法
应该知道
typedef int INT;
INT a = 10; // a 即为int类型
那么上面便是定义了MYGOD为函数原型void foo(void)
#8
UPCC(我是菜鸟)(我就喜欢---灌) :
我明白了 (MYGOD*) ::GetProcAddress(hDLL,"Hello");
是我理解错了
-------------------------------------------------
我知道typedef的常规用法 但是在这里
typedef void (MYGOD)(void); 定义的是个什么? 函数指针? 是否代表函数的返回值和参数都是void?
这个和 typedef void (*MYGOD)(void); 有什么区别?
MYGOD pFunction; 这个又定义的什么了?
typedef IUnknown* (*CREATEFUNCPTR)() 这个有两个* 又怎么理解?
我明白了 (MYGOD*) ::GetProcAddress(hDLL,"Hello");
是我理解错了
-------------------------------------------------
我知道typedef的常规用法 但是在这里
typedef void (MYGOD)(void); 定义的是个什么? 函数指针? 是否代表函数的返回值和参数都是void?
这个和 typedef void (*MYGOD)(void); 有什么区别?
MYGOD pFunction; 这个又定义的什么了?
typedef IUnknown* (*CREATEFUNCPTR)() 这个有两个* 又怎么理解?
#9
typedef void (MYGOD)(void); 定义的是个什么? 函数指针? 是否代表函数的返回值和参数都是void?
是
这个和 typedef void (*MYGOD)(void); 有什么区别?
没什么区别,就在在运用是不同而已。
在帖字的是
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");
但假如用typedef void (*MYGOD)(void); 就变成了
pFunction=(MYGOD)::GetProcAddress(hDLL,"Hello");
是
这个和 typedef void (*MYGOD)(void); 有什么区别?
没什么区别,就在在运用是不同而已。
在帖字的是
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");
但假如用typedef void (*MYGOD)(void); 就变成了
pFunction=(MYGOD)::GetProcAddress(hDLL,"Hello");
#10
MYGOD pFunction; 这个又定义的什么了?
MYGOD 在typedef后其实也是一个类型了,类型当然可以定义类型变量啦,就是这个道理。
定义一个指针变量的变量
typedef IUnknown* (*CREATEFUNCPTR)() 这个有两个* 又怎么理解?
因为返回值为IUnknown* ,返回值不是void了。其他一样函数指针,你应该知道了吧?
我不是故意多次发的,而是发后才知道的。
MYGOD 在typedef后其实也是一个类型了,类型当然可以定义类型变量啦,就是这个道理。
定义一个指针变量的变量
typedef IUnknown* (*CREATEFUNCPTR)() 这个有两个* 又怎么理解?
因为返回值为IUnknown* ,返回值不是void了。其他一样函数指针,你应该知道了吧?
我不是故意多次发的,而是发后才知道的。
#11
typedef IUnknown* (*CREATEFUNCPTR)() 这个有两个* 又怎么理解?
是不是个 返回值指向 IUnknown 指针的函数指针?
是不是个 返回值指向 IUnknown 指针的函数指针?
#12
哈哈 差不多我们在同一时间回贴了
我都觉得30分不足以表达我的谢意了
加分结贴
我都觉得30分不足以表达我的谢意了
加分结贴
#13
typedef IUnknown* (*CREATEFUNCPTR)() 的函数需要这样的定义
IUnknown* fun(void){...}//其他的我在上面说了啊。
要是还不知道就要让 freefalcon(心宇) ( )告诉你了。因为我文笔差
IUnknown* fun(void){...}//其他的我在上面说了啊。
要是还不知道就要让 freefalcon(心宇) ( )告诉你了。因为我文笔差
#14
谢谢了
我明白了
我明白了
#1
typedef void (MYGOD)(void); 定义函数
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思?
获得Hello函数指针地址,Hello函数为void Hello(),pFunction为函数指针的地址。
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思?
获得Hello函数指针地址,Hello函数为void Hello(),pFunction为函数指针的地址。
#2
typedef void (MYGOD)(void);
突然不知道要说成定义函数,还是定义函数指针的。因为看起来不只函数指针的,但却是为了得到函数指针
突然不知道要说成定义函数,还是定义函数指针的。因为看起来不只函数指针的,但却是为了得到函数指针
#3
对了,忘记说了
::表示全局
::表示全局
#4
typedef void (MYGOD)(void); //这个怎么理解
MYGOD* pFunction;
这是定义一个函数指针,所指函数原型为 void fun(void);
通常写作
typedef void (*MYGOD)(void); //这个怎么理解
MYGOD pFunction;
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思
这是通过GetProcAddress从dll中获得函数"Hello"的地址,然后强制转化成MYGOD*类型
MYGOD* pFunction;
这是定义一个函数指针,所指函数原型为 void fun(void);
通常写作
typedef void (*MYGOD)(void); //这个怎么理解
MYGOD pFunction;
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思
这是通过GetProcAddress从dll中获得函数"Hello"的地址,然后强制转化成MYGOD*类型
#5
freefalcon(心宇) :
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思
这是通过GetProcAddress从dll中获得函数"Hello"的地址,然后强制转化成MYGOD*类型
你说的这个和 UPCC(我是菜鸟)(我就喜欢---灌)
::表示全局
好象不一样,这里 :: 到底表示什么 我想应该不是表示全局的意思
typedef void (MYGOD)(void); 这个说是定义 但是怎么理解?
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");//这个是什么意思
这是通过GetProcAddress从dll中获得函数"Hello"的地址,然后强制转化成MYGOD*类型
你说的这个和 UPCC(我是菜鸟)(我就喜欢---灌)
::表示全局
好象不一样,这里 :: 到底表示什么 我想应该不是表示全局的意思
typedef void (MYGOD)(void); 这个说是定义 但是怎么理解?
#6
::PostMessage(...)
楼主你给出的是vc的内容,那么我上面的函数你应该看过的吧?
(MYGOD*) ::GetProcAddress(hDLL,"Hello");//获得一个函数,函数的格式为MYGOD指向的格式,函数名为Hello.
::GetProcAddress(hDLL,"Hello");//是一个全局的函数,不属于那一个类的。(MYGOD*)只是一个类型转化而已。
typedef是定义新类型的操作符,本来一般的函数指针是这样的(我熟悉的格式)
typedef void (*MYGOD)(void); //* 定义一个函数指针MYGOD。
楼主你给出的是vc的内容,那么我上面的函数你应该看过的吧?
(MYGOD*) ::GetProcAddress(hDLL,"Hello");//获得一个函数,函数的格式为MYGOD指向的格式,函数名为Hello.
::GetProcAddress(hDLL,"Hello");//是一个全局的函数,不属于那一个类的。(MYGOD*)只是一个类型转化而已。
typedef是定义新类型的操作符,本来一般的函数指针是这样的(我熟悉的格式)
typedef void (*MYGOD)(void); //* 定义一个函数指针MYGOD。
#7
upcc和我说的没有冲突啊
GetProcAddress是一个API,加上域操作符仅仅强调它是全局函数,这里你不加也可以
关于
typedef void (MYGOD)(void);
你得了解typedef的用法
应该知道
typedef int INT;
INT a = 10; // a 即为int类型
那么上面便是定义了MYGOD为函数原型void foo(void)
GetProcAddress是一个API,加上域操作符仅仅强调它是全局函数,这里你不加也可以
关于
typedef void (MYGOD)(void);
你得了解typedef的用法
应该知道
typedef int INT;
INT a = 10; // a 即为int类型
那么上面便是定义了MYGOD为函数原型void foo(void)
#8
UPCC(我是菜鸟)(我就喜欢---灌) :
我明白了 (MYGOD*) ::GetProcAddress(hDLL,"Hello");
是我理解错了
-------------------------------------------------
我知道typedef的常规用法 但是在这里
typedef void (MYGOD)(void); 定义的是个什么? 函数指针? 是否代表函数的返回值和参数都是void?
这个和 typedef void (*MYGOD)(void); 有什么区别?
MYGOD pFunction; 这个又定义的什么了?
typedef IUnknown* (*CREATEFUNCPTR)() 这个有两个* 又怎么理解?
我明白了 (MYGOD*) ::GetProcAddress(hDLL,"Hello");
是我理解错了
-------------------------------------------------
我知道typedef的常规用法 但是在这里
typedef void (MYGOD)(void); 定义的是个什么? 函数指针? 是否代表函数的返回值和参数都是void?
这个和 typedef void (*MYGOD)(void); 有什么区别?
MYGOD pFunction; 这个又定义的什么了?
typedef IUnknown* (*CREATEFUNCPTR)() 这个有两个* 又怎么理解?
#9
typedef void (MYGOD)(void); 定义的是个什么? 函数指针? 是否代表函数的返回值和参数都是void?
是
这个和 typedef void (*MYGOD)(void); 有什么区别?
没什么区别,就在在运用是不同而已。
在帖字的是
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");
但假如用typedef void (*MYGOD)(void); 就变成了
pFunction=(MYGOD)::GetProcAddress(hDLL,"Hello");
是
这个和 typedef void (*MYGOD)(void); 有什么区别?
没什么区别,就在在运用是不同而已。
在帖字的是
pFunction=(MYGOD*)::GetProcAddress(hDLL,"Hello");
但假如用typedef void (*MYGOD)(void); 就变成了
pFunction=(MYGOD)::GetProcAddress(hDLL,"Hello");
#10
MYGOD pFunction; 这个又定义的什么了?
MYGOD 在typedef后其实也是一个类型了,类型当然可以定义类型变量啦,就是这个道理。
定义一个指针变量的变量
typedef IUnknown* (*CREATEFUNCPTR)() 这个有两个* 又怎么理解?
因为返回值为IUnknown* ,返回值不是void了。其他一样函数指针,你应该知道了吧?
我不是故意多次发的,而是发后才知道的。
MYGOD 在typedef后其实也是一个类型了,类型当然可以定义类型变量啦,就是这个道理。
定义一个指针变量的变量
typedef IUnknown* (*CREATEFUNCPTR)() 这个有两个* 又怎么理解?
因为返回值为IUnknown* ,返回值不是void了。其他一样函数指针,你应该知道了吧?
我不是故意多次发的,而是发后才知道的。
#11
typedef IUnknown* (*CREATEFUNCPTR)() 这个有两个* 又怎么理解?
是不是个 返回值指向 IUnknown 指针的函数指针?
是不是个 返回值指向 IUnknown 指针的函数指针?
#12
哈哈 差不多我们在同一时间回贴了
我都觉得30分不足以表达我的谢意了
加分结贴
我都觉得30分不足以表达我的谢意了
加分结贴
#13
typedef IUnknown* (*CREATEFUNCPTR)() 的函数需要这样的定义
IUnknown* fun(void){...}//其他的我在上面说了啊。
要是还不知道就要让 freefalcon(心宇) ( )告诉你了。因为我文笔差
IUnknown* fun(void){...}//其他的我在上面说了啊。
要是还不知道就要让 freefalcon(心宇) ( )告诉你了。因为我文笔差
#14
谢谢了
我明白了
我明白了