寻找理解打字机

In search of understanding a typedef

本文关键字:打字机 寻找      更新时间:2023-10-16

我有一个程序,我在其中动态加载dll并使用'factory'函数获取类实例。(我实际上是从网上读取的帖子中删除的,只是盲目地使用了它。

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

我的问题是 - 在Typedef"替换"之后,最后一行变成了什么?当我试图手工弄清楚时,我想到了:

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

有人知道这是否正确吗?我真的不需要需要知道,但是我想更好地了解Typedef。

没有Typedef,您需要将pointer to function指定为变量的类型和铸件,因此您最终会得到类似的东西(我已经分为一个定义和分配,希望稍微提高清晰度)。

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

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

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