【问题标题】:Semantic Issue - implicit declaration of function语义问题 - 函数的隐式声明
【发布时间】:2014-07-12 04:28:18
【问题描述】:

我正在使用 Appirater (https://github.com/arashpayan/appirater) 在我的 xcode 项目中启用应用评级。使用“iOS 模拟器”时一切正常,但是当我使用“iOS 设备”目标归档我的项目时,出现 2 个构建错误:

语义问题:函数“SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO”的隐式声明在 C99 中无效

语义问题:函数“SYSTEM_VERSION_LESS_THAN”的隐式声明在 C99 中无效

相关代码行在 Appirater.m 文件中:

    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0") && SYSTEM_VERSION_LESS_THAN(@"7.1")) {
        reviewURL = [templateReviewURLiOS7 stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%@", _appId]];
    }

我在How to check iOS version?中发现了一组和这些非常相似的宏

任何帮助将不胜感激。

【问题讨论】:

    标签: ios appirater


    【解决方案1】:

    将这些行从您的链接添加到您的 .pch 文件。清洁和建造。它应该会消失。

    #define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
    #define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
    #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
    #define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
    #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
    

    更多信息:由于预处理器无法找到它们来对这些宏进行查找和替换,因此它们会传递给编译器,在那里它们看起来像 C 函数。编译器找不到它们并给你一个错误。

    【讨论】:

      【解决方案2】:

      更新 请再次从 repo 中提取。这应该有效。对此感到抱歉。

      原始回复 这是我的错。我接受了对 Appirater 存储库的这些宏调用的新更改,而无需构建/测试。我现在正在删除有问题的宏,并将在一小时内进行修复。

      【讨论】:

        猜你喜欢
        • 2015-04-24
        • 1970-01-01
        • 2021-01-20
        • 1970-01-01
        • 1970-01-01
        • 2014-06-28
        • 1970-01-01
        • 2022-01-16
        相关资源
        最近更新 更多