OGeek|极客世界-中国程序员成长平台

标题: objective-c - “Ordered comparison of function pointers” 警告是什么意思? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 14:01
标题: objective-c - “Ordered comparison of function pointers” 警告是什么意思?

我收到了这个编译器警告:

Ordered comparison of function pointers ('IMP' (aka 'id(*)(id,SEL,...)')and "IMP")

当我尝试比较两个实体时:

for (i = 0; k < 30; k++) {
        IMP imp = getValue(class_method[i]);
        if (imp <= (IMP)currDesc->address) {//this is the line causing the warning
          size_t diff = (size_t)classMap->address - (size_t)imp;
          if (diff < mediumSize) {
            best_method = class_method[i];
            is_class_method = YES;
            mediumSize = diff;
          }
        }

您能否解释一下这个警告的最终原因以及如何解决它。



Best Answer-推荐答案


直接回答这个问题,当您尝试比较两个函数指针的地址时,会生成函数指针的有序比较警告。在大多数情况下,这种比较是错误的,因为比较两个函数在内存中的位置没有什么值(value)。

这里可能是这样,也可能不是,但是如果你需要让函数指针可以直接比较,你需要显式关闭警告(我找不到编译器选项,如果有是一)或将两个指针强制转换为支持比较的值,例如 void*。

关于objective-c - “Ordered comparison of function pointers” 警告是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10893859/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) Powered by Discuz! X3.4