MAKEINTRESOURCE进行地址转换时的问题
当使用导出函数的序号来调用dll中的函数时,需要使用MAKEINTRESOURCE宏来将序号转换成一个字符串地址,也就是使用如下形式:
GetProcAddress(dllhandle, MAKEINTRESOURCE(10));
我查看了一下MAKEINTRESOURCE的定义,它是((ULONG_PTR)(USHORT)),其实也就是((unsigned int)(unsigned short)),不知道为什么先要转换成16位的地址,然后再转换为32位地址,难道只能寻址64k吗?还有,GetProcAddress的第二个参数是一个LPCSTR类型,LPCSTR是一个const char *,为什么可以被赋值成一个((unsigned int)(unsigned short)),而不需要任何强制类型转换?谢谢!