【问题标题】:Use of undeclared identifier FLT_MAX when used in macro在宏中使用未声明的标识符 FLT_MAX
【发布时间】:2014-07-05 16:18:51
【问题描述】:

我使用以下代码动态调整标签大小:

CGRect frame = self.myLabel2.frame;
frame.origin.y = self.myLabel1.frame.origin.y + self.myLabel1.frame.size.height + 10;
frame.size = LABEL_SIZE(self.myLabel2);
self.myLabel2.frame = frame;

LABEL_SIZE 是一个宏定义为:

#define LABEL_SIZE(label) CGSizeMake(280, [label sizeThatFits:CGSizeMake(280, FLT_MAX)].height);

代码在模拟器(32 位)上运行时运行良好。在模拟器(64 位)上运行时会出现问题。 XCode 将其显示为不是作为警告,而是作为错误,因此,它甚至不会编译。

我不明白,我错过了什么吗?

【问题讨论】:

  • 显示FLT_MAX宏定义。
  • FLT_MAX 是 float.h 中定义的内置宏。
  • FLT_MAX 是浮点数的最大值。当你想通过最大值比较来查找数字时使用
  • @SunnyShah,这与问题有什么关系?
  • 我不知道您在发布问题之前是否尝试过其他链接,但此链接正是您要查找的内容:stackoverflow.com/questions/6285188/…

标签: ios objective-c macros


【解决方案1】:

你忘了包含float.h

#include <float.h>
float a = FLT_MAX;

【讨论】:

    【解决方案2】:

    尝试使用CGFLOAT_MAX 而不是FLT_MAX,如下所示

    #define LABEL_SIZE(label) CGSizeMake((CGFloat)280, [label sizeThatFits:CGSizeMake((CGFloat)280, (CGFLOAT_MAX))].height);
    

    【讨论】:

      猜你喜欢
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多