【问题标题】:No previous extern declaration for non-static variable 'FrameworkNameVersionString'非静态变量“FrameworkNameVersionString”没有先前的外部声明
【发布时间】:2015-02-14 01:47:41
【问题描述】:

我创建了一个iOS框架说CustomFramework,在Xcode创建的CustomFramework.h文件中默认有以下内容

#import <UIKit/UIKit.h>

//! Project version number for CustomFramework.
FOUNDATION_EXPORT double CustomFrameworkVersionNumber;

//! Project version string for CustomFramework.
FOUNDATION_EXPORT const unsigned char CustomFrameworkVersionString[];

// In this header, you should import all the public headers of your framework  using statements like #import <CustomFramework/PublicHeader.h>

当我构建项目时,我收到了这些警告

No previous extern declaration for non-static variable 'CustomFrameworkVersionNumber'
No previous extern declaration for non-static variable 'CustomFrameworkVersionString'

知道为什么创建默认框架会给出这些警告吗?

【问题讨论】:

  • 你解决过这个问题吗?

标签: objective-c xcode ios-frameworks


【解决方案1】:

在 C 系列语言中,这是由未明确定义为 static 或在头文件中声明为 extern 的变量引起的。

你有三种选择来处理它。

  1. static 关键字放在定义前面。

    static FOUNDATION_EXPORT double CustomFrameworkVersionNumber;
    
    static FOUNDATION_EXPORT const unsigned char CustomFrameworkVersionString[];
    
  2. 为每个变量创建一个带有extern 定义的单独头文件。

  3. 使用-Wmissing-variable-declarations 抑制警告

这个问题类似于this question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多