AR# 67770

2016.2 SDK - GCC - ZCU102 ボードのユニバーサル ゼロ イニシャライザー {0} に関して間違って表示される Wmissing-braces 警告メッセージ

説明

SDK 2016.2 で ZCU102 ボードを使用している場合に、ユニバーサル ゼロ イニシャライザー {0} に関する警告メッセージが間違って表示されます。

C では、{0} は、C++ の {} に相当するユニバーサル ゼロ イニシャライザーです ({} は C では無効)。 

完全でも概念が不透明または実装定義型のゼロ初期化オブジェクトを希望する場合には、これを使用する必要があります。

この警告メッセージを表示するには、次を有効にします。

extra_compiler_flags = -Wmissing-braces -Wmissing-field-initializers

次に例を示します。

#include <stdio.h>

struct Foo {

 int arr[2];

 int num;

 char s[10];

}

int main(){

 static struct Foo myFoo = {0};

 return 0;

}

このコードをコンパイルすると、次のような警告メッセージが表示されます。

warning: (near initialization for 'myFoo.arr') [-Wmissing-braces]

多くの開発者は、-Wmissing-braces および -Wmissing-field-initializers をエラーと見なします。

ソリューション

この問題を回避するには、生成後に C コードを更新して、該当する行で {0} ではなく {{0}} になるようにします。


#include <stdio.h>
struct Foo {
 int arr[2];
 int num;
 char s[10];
}
int main(){
 static struct Foo myFoo = {{0}};
 return 0;
}
AR# 67770
日付 09/12/2016
ステータス アクティブ
種類 一般
デバイス
ツール