菜鸟教程小白 发表于 2022-12-13 14:01:14

objective-c - “Ordered comparison of function pointers” 警告是什么意思?


                                            <p><p>我收到了这个编译器警告:</p>

<pre><code>Ordered comparison of function pointers (&#39;IMP&#39; (aka &#39;id(*)(id,SEL,...)&#39;)and &#34;IMP&#34;)
</code></pre>

<p>当我尝试比较两个实体时:</p>

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

<p>您能否解释一下这个警告的最终原因以及如何解决它。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>直接回答这个问题,当您尝试比较两个函数指针的地址时,会生成函数指针的有序比较警告。在大多数情况下,这种比较是错误的,因为比较两个函数在内存中的位置没有什么值(value)。</p>

<p>这里可能是这样,也可能不是,但是如果你需要让函数指针可以直接比较,你需要显式关闭警告(我找不到编译器选项,如果有是一)或将两个指针强制转换为支持比较的值,例如 void*。</p></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c -“Ordered comparison of function pointers” 警告是什么意思?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/10893859/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/10893859/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - “Ordered comparison of function pointers” 警告是什么意思?