寻找理解typedef

时间:2015-05-15 18:09:00

标签: c++ typedef

我有一个程序,我正在动态加载一个DLL并使用'factory'函数来获取一个类实例。 (我实际上从我在网上某处阅读的帖子中删除了这个,并且只是盲目地使用它。)为此,我有一个如下代码片段:

typedef IHermes* (*pHermesFactory)();

pHermesFactory pHermes = (pHermesFactory)GetProcAddress(hInstance, "HermesFactory");

我的问题是 - 在typedef'替换'之后,最后一行是什么?当我试图用手解决它时,我想出了:

IHermes* (*pHermes)() = (IHermes* (*GetProcAddress(hInstance, "HermesFactory"))();

有谁知道这是对的吗?我真的不需要知道,但我想更好地了解typedef。

1 个答案:

答案 0 :(得分:4)

如果没有typedef,你需要指定pointer to function作为变量的类型和强制转换,所以你最终得到这样的东西(我已经分成了一个定义和分配,希望略微提高清晰度。)

IHermes* (*pHermes)();

pHermes = (IHermes*(*)())GetProcAddress(hInstance, "HermesFactory");

这些可以合并成一个可怕的混乱:

IHermes* (*pHermes)() = (IHermes*(*)())GetProcAddress(hInstance, "HermesFactory");