|
main.cpp:31: warning: ISO C++ prohibits anonymous structs
경고에 관해서는 GCC 3.3.x 이상 버전부터 C99 ISO 가 정확히 작동 하는걸로 알고 있습니다..
제가 사용한 3.4.x 에서는 그런 경고가 안나는걸 봐서는 그문제는 아닌것 같네요 아쉽게도요;;; ㅠㅠ
C++ ISO 2003에 9.5 Unions 에 보니 특별히 문제 있어 보이진 않는데 말이죠;;; ㅠㅠ
답변 감사 합니다 ^^
%uAE40%uC0C1%uBA74 님이 쓰신 글 :
: #ifdef HAVE_CONFIG_H
: #include <config.h>
: #endif
:
: #include <iostream.h>
: #include <stdlib.h>
: #include <unistd.h>
: #include <curses.h>
: #include <stdio.h>
:
: using namespace std;
:
: struct InRect
: { int left;
: int top;
: int right;
: int bottom;
: };
:
: template <typename Type = int>
: struct RECT
: { union
: { struct
: { Type left;
: Type top;
: Type right;
: Type bottom;
: };
: InRect in;
: };
:
: RECT(Type l, Type t, Type r, Type b)
: { left = l;
: top = t;
: right = r;
: bottom = b;
: }
: };
:
: int main(int argc, char *argv[])
: { struct RECT<int> r(1,1,10,10);
:
: cout << r.left << ':' << r.in.left << endl;
: cout << r.top << ':' << r.in.top << endl;
: cout << r.right << ':' << r.in.right << endl;
: cout << r.bottom << ':' << r.in.bottom << endl;
:
: return EXIT_SUCCESS;
: }
:
:
: 위는 제가 테스트한 소스입니다.
: 특별히 다른 에러는 발생한게 없습니다.
:
: 그리고 아래는 KDevelop 버전입니다.
: KDevelop 2.1.5 (Using KDE 3.1-10 Red Hat)
: 아래는 GCC버전입니다. (gcc -v명령 사용 )
: gcc version 3.2.2 20030222 (Red hat Linux 3.2.2-5)
: 아직 실력이 부족하여 도움이 될런지 모르겠습니다.
: 많은 도움을 드리지 못해 죄송합니다.
: 그럼
:
: 전재득 님이 쓰신 글 :
: : 아닙니다 ㅠㅠ 정확한 정보를 올리지 못해 생긴 오해로 오히려 제가 더 죄송하네요 ㅠㅠ
: :
: : KDevelop 라면 컴파일러는 GCC를 사용 할거 같은데 GCC버전이 어떻게 되나요 ?
: :
: : gcc version 3.4.2 (mingw-special) 버전으로 테스트 했을때는 저런 경고는 없었거든요 ㅠㅠ
: :
: : 아 그리고 혹시 실행 했을때 잘 작동은 했나요? 경고만 떴었나요?
: :
: : 답변 주셔서 감사합니다. ㅠㅠ 이문제 때문에 아직도 고민이 많네요 ㅠㅠ
: :
: :
: :
: :
: :
: :
: :
: : 김상면 님이 쓰신 글 :
: : : main.cpp:31: warning: ISO C++ prohibits anonymous structs
: : : 먼저 실력도 없으면서 주제 넘게 답변을 달아서 문제를 잃으긴점 사과 드립니다.
: : :
: : : 제가 영어는 까막눈이라서 잘은 모르지만....
: : : 대충 표준에서는 익명의 구조체을 인정하지 않는다고 하는군요...
: : : (해석이 정확한지 모르겠군요)
: : : 그래서 문제가 발생한게 아닌가요..
: : : 테스트 환경은 KDevelop입니다.
: : : 그럼
: : :
: : : 전재득 님이 쓰신 글 :
: : : : template< typename TN=int >
: : : : struct MyRect
: : : : {
: : : : union
: : : : {
: : : : struct
: : : : {
: : : : TN Left;
: : : : TN Top;
: : : : TN Right;
: : : : TN Bottom;
: : : : };
: : : :
: : : : RECT Rect;
: : : : };
: : : :
: : : : MyRect( void ){ Left = Top = Right = Bottom = 0; }
: : : : MyRect( TN l, TN t, TN r, TN b )
: : : : {
: : : : Left = l;
: : : : Top = t;
: : : : Right = r;
: : : : Bottom = b;
: : : : }
: : : : };
: : : :
: : : : 이런 template struct 를 만들었 습니다.
: : : :
: : : : MyRect<int> rect( 0, 0, 0, 0);
: : : :
: : : : 이렇게 사용했는데;; 뭐가 문제인지;; vs 에서는 잘작동하고 c++ 표준에 어긋난거 같진 않은데;;
: : : :
: : : : 컴파일러가 바보라서 그런걸까여???
: : : :
: : : : Turbo C++ 무료 버전을 사용 했습니다. 버그 fix 패치는 대부분 했구요...
: : : :
: : : : 이런 황당한 문제 겪어 보신분 ㅠㅠ 뭐가 문제인건지;;;
: : : :
: : : : union 을 안쓰고 그냥 밖으로 꺼내면 잘작동하긴 하는데;;;
: : : :
: : : :
: : : : ps. 게시판에 바로 쓰느라 정확한 코드가 적용이 안되었 군요.. 다시 수정 하였습니다...
|