以前没有非静态变量'FrameworkNameVersionString'的extern声明

Ard*_*Dev 9 xcode objective-c ios-frameworks

我创建了一个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>
Run Code Online (Sandbox Code Playgroud)

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

No previous extern declaration for non-static variable 'CustomFrameworkVersionNumber'
No previous extern declaration for non-static variable 'CustomFrameworkVersionString'
Run Code Online (Sandbox Code Playgroud)

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

Nat*_*son 9

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

您有三种处理方式。

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

    static FOUNDATION_EXPORT double CustomFrameworkVersionNumber;
    
    static FOUNDATION_EXPORT const unsigned char CustomFrameworkVersionString[];
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个单独的头文件,并extern为每个变量定义。

  3. 禁止显示警告 -Wmissing-variable-declarations

这个问题类似于这个问题