2017-04-21 10 views
5

이 코드는 구조체 배열 액세스에 대한 지식을 테스트하는 것입니다. 이 코드를 실행하면 많은 사람들이 param을 초기화하는 많은 에러를 발생시킵니다. 오류를 이해하고이 문제를 해결하는 데 도움을주십시오. 누군가가 이미 해결 한 코드를 재사용하려고했습니다. 구조체를 매개 변수로 채우는 것에 대한 제 질문입니다. Param_u param너무 많은 유니온 구조 배열을 초기화합니다

#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 : 오류 :

clang++

다음 진단 제공 'Param_u' } 너무 많은 초기화하는 단계; – TestEngineer

+0

clang도 오류가 발생합니다. 라이브 데모 [here] (http://rextester.com/PNAALV26498)를 참조하십시오. 사용중인 clang의 버전은 무엇입니까? – Destructor

+0

표준 C++에는 지정된 초기화 프로그램이 없습니다 –

답변

0

이것은 표준 C++가 아닙니다. 익명 struct & 지정된 초기화 프로그램 (C99 기능)을 사용하고 있습니다. C++은 그것을 지원하지 않습니다. clang ++ & g++-pedantic-errors 옵션을 사용 설정합니다. 자세한 내용은 this 질문을 참조하십시오. 프로그램이 이식 가능하지 않도록 컴파일러 관련 확장을 사용하고 있습니다.

라이브 데커보기 here 함수에서 '내부의 main()':

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. 
관련 문제