2017-04-21 17 views
5

このコードは構造体配列のアクセスに関する知識をテストすることに過ぎません。このコードを実行すると、多くの人がparamの初期化を行うエラーが発生します。エラーを理解し、この問題を解決するのを手伝ってください。 私は既に誰かによって解決されたコードを再利用しようとしていました。構造体にパラメータを書き込むことについての私の質問Param_u paramUnion構造体配列の初期化が多すぎます

#include <iostream> 
#include <stdio.h> 
#include <string.h> 


#define ARRAY_COUNT(arr) (sizeof (arr)/sizeof *(arr)) 

typedef union { 
    struct { // Function parameters 
     int *array; 
     size_t size; 
    }; 
    struct { // Function return value 
     float mean; 
     int Median; 
    }; 
} Param_u; 

int main() { 
    int array_1[] = {1, 2, 3, 4, 5}; 
    int ret1, ret2; 

    // Fill the Struct with parameters 
    Param_u param = { 
     .array = array_1, 
     .size = ARRAY_COUNT(array_1), 
    }; 
    return 0; 
} 
+0

prog.cpp:機能において 'メインINT()': prog.cpp:5:28のエラー: 'Param_u' }あまりにも多くのイニシャライザと、 – TestEngineer

+0

clangもエラーとなります。ライブデモ[こちら](http://rextester.com/PNAALV26498)をご覧ください。使用しているclangのバージョンは? – Destructor

+0

標準C++には指定された初期化子がありません –

答えて

0

これは標準的なC++ではありません。指定されたイニシャライザ(C99機能)を匿名のstruct &で使用しています。 C++はそれをサポートしていません。 clang ++ & g++-pedantic-errorsオプションを有効にします。詳細についてはthis質問をご覧ください。コンパイラ固有の拡張機能を使用しているため、プログラムは移植できません。

ライブデモをご覧くださいhereをご覧ください。

clang++は、以下の診断を与える:

Error(s): 

source_file.cpp:12:5: error: anonymous structs are a GNU extension [-Werror,-Wgnu-anonymous-struct] 
    struct { // Function parameters 
    ^
source_file.cpp:16:5: error: anonymous structs are a GNU extension [-Werror,-Wgnu-anonymous-struct] 
    struct { // Function return value 
    ^
source_file.cpp:28:9: error: designated initializers are a C99 feature [-Werror,-Wc99-extensions] 
     .array = array_1, 
     ^~~~~~~~~~~~~~~~ 
source_file.cpp:29:9: error: designated initializers are a C99 feature [-Werror,-Wc99-extensions] 
     .size = ARRAY_COUNT(array_1), 
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
source_file.cpp:24:16: warning: unused variable 'ret2' [-Wunused-variable] 
    int ret1, ret2; 
      ^
source_file.cpp:27:13: warning: unused variable 'param' [-Wunused-variable] 
    Param_u param = { 
      ^
source_file.cpp:24:10: warning: unused variable 'ret1' [-Wunused-variable] 
    int ret1, ret2; 
     ^
3 warnings and 4 errors generated. 
関連する問題