2017-04-21 20 views
5

Bu kod yalnızca yapı dizisi erişimi hakkındaki bilgimi sınamak içindir. Bu kodu çalıştırdığımda, param için iki çok sayıda başlatma hatası verir. Lütfen hatayı anlamak ve bu sorunu çözmek için bana yardımcı olun. Daha önce bir kişi tarafından çözülen kodu yeniden kullanmaya çalışıyordum. Benim sorum yaklaşık parametreleri Param_u paramUnion Structure dizilimi için çok fazla başlatma var

#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: prog.cpp: 28: 5: hatası:

clang++

aşağıdaki teşhis verir 'Param_u' } için çok fazla sayıda başlatıcıları; – TestEngineer

+0

clang ayrıca bir hata veriyor. Canlı demoya bakın [here] (http://rextester.com/PNAALV26498). Hangi argo sürümünü kullanıyorsunuz? – Destructor

+0

Standard C++, belirtilen başlatıcılara sahip değil –

cevap

0

Bu standard C değil ++ ile Struct doldurun. Anonim struct & belirtilen başlatıcıları (C99 özelliği) kullanıyorsunuz. C++ bunu desteklemiyor. Clang ++ & g++'da -pedantic-errors seçeneğini etkinleştirin. Daha fazla bilgi için this sorusuna bakınız. Derleyici özel uzantıları kullanıyorsunuz, böylece programınız taşınabilir değil.

Canlı demoya bakın here. fonksiyonunda 'int ana()':

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.