比较函数指针

use*_*369 14 c++

如何比较C++中的函数指针?它稳定吗?

例如,像这样的东西是有效的:

if(pFnc == &myFnc){
//Do something
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ing 15

C++ 03 5.10/1 [expr.eq]:

==(等于)和!=(不等于)运算符具有与关系运算符相同的语义限制,转换和结果类型,除了它们的优先级和真值结果.[注意:只要<b和c <d具有相同的真值,a <b == c <d就为真.] 可以比较相同类型的对象或函数(指针转换后)的指针是否相等.相同类型的两个指针比较相等,当且仅当它们都为空时,都指向相同的函数,或者两者都表示相同的地址(3.9.2).

强调我的.

  • @ user965369 - 该标准不了解DLL.但是,标准确实知道(数据)指针.使用指向已删除内存的指针是每个标准的未定义行为.这同样适用于在通过`FreeLibrary`卸载的库中使用函数指针.它本质上是未定义的行为. (2认同)