【发布时间】:2012-10-05 13:56:06
【问题描述】:
如何比较 C++ 中的函数指针?稳定吗?
例如,这样的事情是否有效:
if(pFnc == &myFnc){
//Do something
}
【问题讨论】:
-
你说的稳定是什么意思?在编译器的不同运行中生成两个函数的顺序?功能在应用程序的一个特定运行中的位置?动态库呢,你关心吗?
-
这就是我的意思,当涉及到更复杂的系统时,肯定会有问题吗?!
-
问题是什么?你想在什么范围内考虑稳定性,你要追求的稳定性是什么意思?否则,这不是一个合适的问题,我将是第一个投票结束的人。
-
正如您所指出的,这种比较的稳定性取决于您正在考虑的稳定性范围。我正在 MFC 中构建应用程序,并且正在比较某些 WndProc 函数的地址。那么在这个范围内,它会稳定吗?
-
如果您正在寻找精确的比较(即
==),这是正确的。对于任何不等式,顺序是未定义的,但在应用程序的单次运行中是稳定的(假设它不是加载的 dll),可能跨同一个二进制文件的多次执行(同样,不涉及 dll)。如果涉及 dll,只要不重新加载 dll,订单将保持不变......对于其他任何事情,您的赌注都是关闭的(这也适用于==:如果您卸载并重新加载 dll,它可能不会测试相等,因为它可能已加载到不同的地址...
标签: c++