web-dev-qa-db-ja.com

非静的変数 'FrameworkNameVersionString'の以前のextern宣言はありません

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'

デフォルトのフレームワークの作成でこれらの警告が表示される理由はありますか?

10
ArdenDev

Cファミリの言語では、これは、変数がstaticとして明示的に定義されていないか、ヘッダーファイルでexternとして宣言されていないことが原因です。

それに対処するための3つのオプションがあります。

  1. 定義の前にstaticキーワードを配置します。

    static FOUNDATION_EXPORT double CustomFrameworkVersionNumber;
    
    static FOUNDATION_EXPORT const unsigned char CustomFrameworkVersionString[];
    
  2. 変数ごとにextern定義を使用して個別のヘッダーファイルを作成します。

  3. -Wmissing-variable-declarationsで警告を抑制します

この質問は この質問 に似ています。

9