我有一个程序,我正在动态加载一个DLL并使用'factory'函数来获取一个类实例。 (我实际上从我在网上某处阅读的帖子中删除了这个,并且只是盲目地使用它。)为此,我有一个如下代码片段:
typedef IHermes* (*pHermesFactory)();
pHermesFactory pHermes = (pHermesFactory)GetProcAddress(hInstance, "HermesFactory");
我的问题是 - 在typedef'替换'之后,最后一行是什么?当我试图用手解决它时,我想出了:
IHermes* (*pHermes)() = (IHermes* (*GetProcAddress(hInstance, "HermesFactory"))();
有谁知道这是对的吗?我真的不需要知道,但我想更好地了解typedef。
答案 0 :(得分:4)
如果没有typedef,你需要指定pointer to function
作为变量的类型和强制转换,所以你最终得到这样的东西(我已经分成了一个定义和分配,希望略微提高清晰度。)
IHermes* (*pHermes)();
pHermes = (IHermes*(*)())GetProcAddress(hInstance, "HermesFactory");
这些可以合并成一个可怕的混乱:
IHermes* (*pHermes)() = (IHermes*(*)())GetProcAddress(hInstance, "HermesFactory");