为什么我需要它:
In 这个帖子 https://stackoverflow.com/questions/36685492/perfect-hash-function-generator-for-functions我正在尝试映射函数子集(用户定义)来实现记忆化 https://en.wikipedia.org/wiki/Memoization框架。正如有人在评论中建议的那样,映射目标程序内的所有函数可能会更具性能。这个问题来自于枚举/索引程序内所有函数的必要性。
您可以通过查看目标文件的内容找到所有导出器符号。在 Windows 上,您可以使用诸如为此,在 Linux 上,nm http://linux.die.net/man/1/nm就是您要找的机器人。
如果您谈论的是运行时检查,那么当您听说 C++ 没有任何类型的内置反射时,您会感到难过。可以通过库提供不同程度的元数据(请参阅here https://stackoverflow.com/questions/41453/how-can-i-add-reflection-to-a-c-application,但从根本上讲,这是需要在编译器内部发生的事情,因为在翻译阶段之后会丢失很多信息。
现在您已经更新了您的帖子并说明了为什么要这样做,这一切都变得更有意义了。如果您想记住函数调用,那么您可以看看完美转发 http://eli.thegreenplace.net/2014/perfect-forwarding-and-universal-references-in-c/ and 可变参数模板 http://en.cppreference.com/w/cpp/language/parameter_pack;您可以存储函数参数的“缓存”并返回结果(如果之前已经调用过该结果)。