【问题标题】:expected expression "implicit declaration of a function is invalid in c99"预期的表达式“函数的隐式声明在 c99 中无效”
【发布时间】:2014-02-21 16:12:16
【问题描述】:

此时我正在使用this 收据验证进行测试,但 Xcode 抱怨这些行

require(signature_length > offsetof(struct signature_blob, certificate), outLabel);

require(signature_length - offsetof(struct signature_blob, certificate) >= certificate_len, outLabel);

说:“预期的表达式 - 函数 'offsetof' 的隐式声明在 C99 中无效”

我该如何解决?

【问题讨论】:

  • #include <stddef.h>?
  • 我用这些就好了。我的导入是通常的#import <Foundation/Foundation.h>
  • @maddy - 你是个天才!请将您的评论转换为答案,以便我接受!谢谢你是怎么发现这样的事情的?通过占卜板?难以置信!
  • @DesperateDeveloper 完成。

标签: ios iphone ipad


【解决方案1】:

在您的文件中使用标准的#import <Foundation/Foundation.h> 将解决问题。

当然,如果您不需要任何基础课程,那么按照其他人说的做,包括stddef.h

【讨论】:

  • 我的项目设置为使用模块,正因为如此,可能是因为 Xcode 的另一个无限错误(顺便说一句,我非常讨厌 Xcode),我现在发现这个解决方案适用于开发但不适用于发布。在我的情况下,如果我包含 Foundation 框架,它只会编译,添加此导入行以及 @import Foundation。 Xcode 是一个可悲的开发工具。 Apple 应该购买 AppCode,将其命名为 Xcode 6,然后交给我们。
【解决方案2】:

offsetof 是包含在 stddef.h 中的宏。在源文件中添加这一行。

#import <stddef.h>

【讨论】:

    【解决方案3】:

    该宏在“stddef.h”中定义,因此您应该有以下行:

    #include <stddef.h>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 2013-11-28
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多