之前没有非静态变量“FrameworkNameVersionString”的外部声明

问题描述 投票:0回答:2

我创建了一个名为 CustomFramework 的 iOS 框架,并且在 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
2个回答
15
投票

在 C 系列语言中,这是由未明确定义为

static
或在头文件中声明为
extern
的变量引起的。

您有三种选择来处理它。

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

    static FOUNDATION_EXPORT double CustomFrameworkVersionNumber;
    
    static FOUNDATION_EXPORT const unsigned char CustomFrameworkVersionString[];
    
  2. 为每个变量创建一个单独的头文件,其中包含

    extern
    定义。

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

这个问题与这个问题类似。


0
投票
  1. -Wno-missing-variable-declarations
© www.soinside.com 2019 - 2024. All rights reserved.