C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[109] [팁] BCC32.EXE Option 정리 #3
박지훈.임프 [cbuilder] 9407 읽음    2001-07-26 14:48
이 팁은 담비님(천리안 FREKBS)님이 98년 12월 28일에 천리안 프로그래머포럼에 올리신 것입니다.
담비님으로부터는 전제하여 올리는 데 대해 허락을 받았습니다.
좋은 정보를 공유하도록 허락해주신 담비님께 감사드립니다.

-----------------------------------------------------------------------
안녕하세요! 담비입니다.

본 문서의 내용은 BCC32.EXE에 사용되는 Option들을 기능별로 묶어 정리한 마지막
내용입니다. 본 문서는 C++ Builder와 함께 제공되어지는 도움말 파일을 기초로
작성되었으며 내용상의 오류 혹은 추가 및 변경되어져야 할 사항을 발견하시면
메일 주시면 감사하겠습니다. 보내주신 내용은 검토 후 반영하여 다시 올리도록
하겠습니다.
이 문서를 보시면서 IDE와 비교하여 보시면 재미있을 것입니다.

  frekbs@chollian.net

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   . Optimization options
     Optimization option은 소프트웨어의 성능을 조절한다. 거기에는 일반적인
     두가지 형태로 컴파일러가 최적화를 수행한다.
     - 코드를 보다 작게 만든다.
     - 코드를 보다 빠르게 만든다.
     또한 제품개발 주기의 어느 시점에서이든지 컴파일러가 최적화를 수행할 수 있고
     확실한 컴파일러의 최적화에 의해 최적화와 멀어지게 될지도 모르는 몇몇
     어셈블리 명령의 어셈블리 레벨에서의 디버깅을 할때 깨닫게 된다.

     C++ Builder의 미리 정의된 최적화 설정들
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     C++ Builder는 Project Options 다이알로그 박스의 Compiler page에 미리 정의된
     최적화의 설정들을 제공한다. 컴파일러 최적화 설정들이 복잡하게 얽혀있는 관계
     로  C++ Builder 응용프로그램을 컴파일 하는동안 미리 선언된 최적화 설정중에
     하나를 선택하여 사용하기를 추천한다.

     만일 컴파일러의 최적화에 더 많을 것들이 필요하다면 프로젝트 파일을
     수정하거나 명령라인에 다음의 옵션들을 사용할 수 있다.

     ~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~
     옵티마이저는 애플리케이션의 속도를 개선하고 애플리케이션의 크기를 줄이기
     위한 도구이다. 옵티마이저가 애플리케이션의 속도를 두,세 배로 향상시킨다거나
     그 크기를 반으로 줄이는 것은 아니다. 다만, 컴퓨터가 가장 편하다고 느끼는
     스타일이 아니라 사용자가 가장 편리하다고 느끼는 스타일로 프로그래밍할 수
     있도록 할 뿐이다.

     옵티마이저를 사용할 시기
     ~~~~~~~~~~~~~~~~~~~~~~~~
     옵티마이저를 가장 잘 사용하기 위한 이론은 여러 가지다. 하나는 옵티마이저를
     사용하여 새 프로그램을 개발하면 안 되며 애플리케이션 개발의 최종 단계에서
     최적화 기법을 사용하여 컴파일해야 한다는 것이다. 이 이론은 완전한 최적화를
     수행할 경우, 컴파일러의 컴파일 시간이 최적화를 수행하지 않을 때보다 두,세배
     나 더 걸린다는데 바탕을 두고 있다. 그러나 옵티마이저는 완전한 속도 최적화를
     사용할 때 컴파일 시간이 50% 더 걸리고 완전한 크기 최적화를 수행할 때 컴파일
     시간ㅇ 20% 더 걸리므로 컴파일 속도 저하에 대해 크게 걱정할 필요는 없다.
     또 하나의 이론은 초기 개발 단계에서도 반드시 옵티마이저를 사용해야 한다는
     것이다. 이것은 옵티마이저가 최적화 단계에서 발견되지 않는 코드 오류를 밝혀
     준다는 데 근거하고 있다. 한편, 이 이론에 반대하는 사람들은 그와 같이 최적화
     된 코드의 디버깅이 책임질 수 없을 만큼 엄청난 작업이 된다고 주장한다.
     통합 디버거는 최적화된 코드를 이해하기 때문에 사용자는 최적화된 애플리케이
     션을 쉽게 디버깅할 수 있으므로 위의 두 이론 모두에 가장 적합하다고 할 수
     있다.
     ~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -O                     ┃점프 최적화(Optimize jumps)
    ┗━━━━━━━━━━━━┛
    Jump Optimization을 설정한 경우 컴파일러는 점프에 과다한 점프를 제거하고
    loop와 switch문을 재편성함으로서 코드의 크기를 감소시킨다. 이 옵션이 설정된
    경우 디버거에서 Step의 순서를 혼란시킬 가능성이 있는데 인스트럭션의 제거와
    재배열 때문이다. 만일 어셈블리 레벨애서 디벙깅을 한다면 이 옵션을 불가능상태
    로 해야할지도 모른다.

    Default = ON

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -O1                    ┃가능한 한 작은 코드로 생성한다.
    ┗━━━━━━━━━━━━┛
    이 옵션은 크기를 위해 코드를 최적화하도록 컴파일러에게 지시하는 옵션들을
    모아놓은 것이다. 예를들어, 컴파일러는 중복된 연속을 위한 코드가 생성되어
    졌는가를 검사한다. 그러한 연속됨이 확실한 경우 옵티마이져는 다른곳으로 점프
    하는 코드의 연속을 재배치하고 코드의 첫번째 부분을 제거한다.  이것은 가장
    자주 switch문에서 발생한다. 컴파일러는 가능한한 연속되는 가장 작은 코드를
    선택함으로서 코드를 최적화한다. 이 옵션은 다음에 있는 최적화들을 설정한다.
     .  Jump optimizations  (-O)
     .  Duplicate expressions  (-Oc)
     .  Instruction scheduling  (-OS)
    컴파일러 옵션 -Ot와 -G는 오직 구번전과의 호환성을 위하여 제공되며 -O1 옵션과
    동등하다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -O2                    ┃가능한 한 빠른 코드로 생성한다.
    ┗━━━━━━━━━━━━┛
    이 라디오 버튼은 (IDE상의)은  속도를 위해 코드를 최적화하도록 컴파일러에게
    지시하는 옵션들을 모아놓은것이다. 이 스위치(-O2)는 다음의 최적화들을 설정한
    다.
     .  Duplicate expression within functions  (-Oc)
     .  Intrinsic functions  (-Oi)
     .  Instruction scheduling  (-OS)
     .  Induction variables  (-Ov)
    만일 윈도우 응용프로그램을 생성한다면, 아마도 속도를 위해 최적화를 원할것이
    다.
    컴파일러 옵션 -Os 와 -G는 구버젼과의 호환성을 위해서만 제공된다. -Ox 옵션
    또한 구버젼과의 호환성을 위해서 제공되고 Microsoft make 파일과의 호환성을
    위해서도 제공된다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -Oc                    ┃기본 블럭과 함수내에서 중복된 수식을 제거한다.
    ┗━━━━━━━━━━━━┛
    이 옵션이 설정되면 컴파일러는 점프에 의해 파손되지 않는(기본 블럭들) 문장들
    의 그룹과 함수들 안에 있는 일반적인 부 표현식을 컴파일러가 제거하도록 한다.
    이 옵션은 전체적으로 대상범위 내의 중복된 수식들을 제거하고 그들이 하나의
    수식이 되도록 값을 재계산하여 저장한다.(수식을 재평가하는 대신에)
    또한 이 최적화는 이론상 코드의 크기를 줄여준다. 그것은 속도와 드물게는 크기
    감소의 결과를 최적화한다. 이 옵션은 그들을 위한 명시된 스택 위치를 생성하기
    보다 수식을 재사용하는 편이 더 낳을 경우 사용한다.
    -Og 컴파일러 옵션은 오직 구버젼과의 호환성을 위해서 제공되어졌으며 -Oc
    컴파일러 옵션과 동등하다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -Od                    ┃모든 최적화 옵션을 불가능상태로 만든다.
    ┗━━━━━━━━━━━━┛
    모든 최적화 옵션이 불가능한 상태로 만들며 속도 또는 크기중의 일부로서 수행되
    어지게되고 명확한 설정이 될 하나를 포함한다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -Oi                    ┃일반적인 고유 함수들을 확장한다.
    ┗━━━━━━━━━━━━┛
    Inline Intrinsic Function이 설정되면 컴파일러는 펑션의 범위안에 strcpy()와
    같은 메모리 펑션을 위한 코드를 생성한다. 이것은 함수호출에 대한 필요성을
    제거한다. 결과적인 코드는 더 빠르게 실행되지만 크기는 더 커진다.
    다음의 함수들은 이 옵션과 함께 인라인된다.

        alloca    fabs      memchr    memcmp
        memcpy    memset    rotl      rotr
        stpcpy    strcat    strchr    strcmp
        strcpy    strlen    strncat   strncmp
        strncpy   strnset   strrchr

    #pragma intrinsic으로 이러한 펑션의 인라인을 제어할수 있다. 예를들면,#pragma
    intrinsic strcpy은 펑션안에 strcpy에 관한 모든 후속의 호출을 위한 인라인
    코드를 생성하고, #pragma intrinsic -strcpy는 컴파일러가 strcpy를 인라인되는
    것을 방지한다. 파일안에 이러한 pragma를 사용하는 것은 컴파일러 옵션을
    무시하게 한다.
    어떤 intrinsic(고유의) 펑션을 인라인할때, 펑션을 사용하기 전에 그러한 펑션에
    대한 원형을 포함해야만 한다.그 이유는 컴파일러가 내부적으로 인식하는
    인라인된 펑션을 한 펑션으로 리네임하는 한 매크로를 생성한다.
    이전의 예제에서,컴파일러는 매크로 #define strcpy __strcpy__를 생성하게 될
    것이다.
    컴파일러는 두개의 앞,뒤 underscore(밑줄)을 가진 펑션에 대한 호출을
    인식하고 자체 내부적으로 원형을 저장하는 것과는 반대로 그러한 펑션의 원형을
    일치하게 한다. 만일 원형을 제공하지 않았거나 제공한 원형이 컴파일러의 원형과
    일치하지 않는다면, 컴파일러는 그러한 펑션을 인라인하려는 시도를 무시하고
    에러를 생성한다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -OS                    ┃펜티엄 명령에 따른다.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -Ov                    ┃루프 유도 변수와 강도 환원 최적화가 가능케한다.
    ┗━━━━━━━━━━━━┛
    이 옵션이 설정되면 컴파일러는 유도변수들을 생성하고 loop의 속도를 최적화하는
    세력감소를 수행한다. 소스코드에 loop를 가지고 있고 스피드를 위해 컴파일할
    경우 이 옵션을 사용한다. 옵티마이저는 루프에 사용된 수식으로부터 새로운
    변수들(유도변수들)을 생성하기위해 유도를 사용한다. 옵티마이져는
    최적화는 새로운 변수에 수행되는 연산은 원래의 변수에 의해 사용되는 것보다
    덜 대가를 치룬다고 확신한다.

    옵티마이져는 루프내부에 색인된 배열을 사용한다면 흔히 일어난다. 이유는 곱셈
    연산은 색인에 의해 지적된 배열안의 위치를 계산하는 것이 필요하게 되기
    때문이다.   예를들면, 옵티마이져는 다음의 코드안의 연산 v[i]의 외부에 유도
    변수를 생성한다.  그 이유는 v[i] 연산은 i값을 유지하기 위한 필요성을
    제거하는 곱셉을 필요로 하기 때문이다.

      int v[10];
      void f(void)
      {
         int i,x,y,z;
         for(i=0;i<10;i++)
         v[i]=x * y * z;
       }

    유도 변수가 가능하면, 코드는 변한다.

      int v[10];
      void f(void)
      {
         int i,x,y,z,*p;
         for(p=v;p<&v[10];p++)
         *p = x * y * z;
      }

   . Warning message options
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w                     ┃경고 메세지를 디스플레이 한다.
    ┗━━━━━━━━━━━━┛
    모든 경고와 에러 메세지를 디스플레이한다.

    Default = OFF

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wxxx                  ┃xxx에 해당하는 경고 메세지를 enable시킨다.
    ┗━━━━━━━━━━━━┛
    디스플레이될 경고를 선택한다. 소스 코드에 #pragma warn을 사용하여 IDE 또는
    명령라인에서 메세지 옵션을 설정할 수 있다. 명령라인에서 메세지를 disable
    시키려면 -w-xxx를 사용하며 xxx는 명령라인에 의해 사용되어질 메세지 식별자인
    3개의 문자이다.

    Default = 각각의 메세지에 대한 기본 상태는 각각의 메세지를 참조한다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-xxx                 ┃xxx에 해당하는 경고 메세지를 disable시킨다.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -gn                    ┃컴파일러에게 n개의 경고메세지 후에
    ┗━━━━━━━━━━━━┛컴파일을 정지하라고 지시한다.(Default = 100)
    경고 : 명시된 수의 메세지가 발생한 후에 컴파일을 멈추게 한다. 0 부터 255
    사이의 숫자를 지정할 수 있다.
    0이 지정되면 파일의 끝에 도달하거나 n에 지정된 숫자에 도달할때까지던지 어느
    쪽에 먼저 될때까지 컴파일을 계속한다.

    Default = 100

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -jn                    ┃컴파일러에게 n개의 에러메세지 후에
    ┗━━━━━━━━━━━━┛컴파일을 정지하라고 지시한다.(Default = 25)
    에러 : 명시된 수의 메세지가 발생한 후에 컴파일을 멈추게 한다. 0 부터 255
    사이의 숫자를 지정할 수 있다.
    0이 지정되면 파일의 끝에 도달하거나 n에 지정된 숫자에 도달할때까지던지 어느
    쪽에 먼저 될때까지 컴파일을 계속한다.

    Default = 25

   . Message options : Portability
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-rpt                 ┃이식 불가능한 포인터의 변환
    ┗━━━━━━━━━━━━┛Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-cpt                 ┃이식불가능한 포인터의 비교
    ┗━━━━━━━━━━━━┛Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-rng                 ┃비교범위를 벗어난 상수
    ┗━━━━━━━━━━━━┛Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wcln                  ┃상수가 long 입니다
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wsig                  ┃변환에 의해 유효수자를 상실할 우려가 있다.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wucp                  ┃서로다른 'char' type의 혼합(signed와 unsigned)
    ┗━━━━━━━━━━━━┛

   . Message options : ANSI violations
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-voi                 ┃Void 함수는 값을 리턴할 수 없습니다.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-ret                 ┃리턴 및 값을 가진 리턴이 모두 사용되었다.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-sus                 ┃의문스러운 포인터의 변화
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wstu                  ┃구조체 'structure'를 부정의
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-dup                 ┃매크로의 재정의가 일치하지 않는다.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-big                 ┃16진 값이 세개 이상의 숫자를 포함함.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wbbf                  ┃Bit field가 반드시 signed 또는 unsigned int
    ┗━━━━━━━━━━━━┛이어야 함.
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-ext                 ┃식별자가 external 또는 static으로 선언됨
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-dpu                 ┃원형에 사용하기 전에 'type' 타입을 선언함.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-zdi                 ┃0에 의한 나눗셈
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-bei                 ┃식별자가 식별자로 초기화 되었음.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wpin                  ┃이 초기화는 일부만 괄호로 묶임.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wnak                  ┃비ANSI Keyword가 사용되었음: '<keyword>'
    ┗━━━━━━━━━━━━┛(Note: Use of this option is a requirement
                                 for ANSI conformance)

   . Message options : Obsolete C++

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-obi                 ┃클래스명이 없는 기준초기화는 이제 쓸모없음
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-ofp                 ┃이 형태의 함수정의는 이제 무의미함.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wpre                  ┃Overload된 prefix 연산자 'operator'가 postfix
    ┗━━━━━━━━━━━━┛operator처럼 사용되었음.
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-ovl                 ┃Overload가 불필요하고 쓸모없음.
    ┗━━━━━━━━━━━━┛ Default = ON

   . Message options : Potential C++ errors
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-nci                 ┃constant member 'identifier' 가 초기화 되지않음
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -weas                  ┃Assigning 'type' to 'enum'
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-hid                 ┃함수 'function1'가 virtual function 'function2'
    ┗━━━━━━━━━━━━┛를 은닉함 (Default = ON)

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wnfc                  ┃비상수함수 function이 상수 대상을 호출
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wibc                  ┃Base class가 'base2'에도 있으므로 Base class
    ┗━━━━━━━━━━━━┛'base1'을 엑세스할 수 없음.(Default = ON)
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-dsz                 ┃'delete'를 위한 배열크기가 무시됨.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-nst                 ┃내포된 type 'type'을 엑세스하기 위해 수식된
    ┗━━━━━━━━━━━━┛이름을 사용(Default = ON)
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -whch                  ┃'<type1>' 핸들러가 이전의 '<type2>' 핸들러에의해
    ┗━━━━━━━━━━━━┛은닉되었다.
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-mpc                 ┃기준 클래스 base의 구성원을 위한 type으로의
    ┗━━━━━━━━━━━━┛변환이 실패함.(Default = ON)
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-mpd                 ┃구성원 포인터 type <type>을 위해 최대 정도가
    ┗━━━━━━━━━━━━┛사용되었음.(Default = ON)
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-ntd                 ┃'>>'의 대신에 nested templates 을 위해 '> >'가
    ┗━━━━━━━━━━━━┛ 사용되었다. Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-nvf                 ┃소멸성 대상을 위해 호출된 비 소멸성 함수
    ┗━━━━━━━━━━━━┛<function>(Default = ON)

   . Message options : Inefficient C++ coding
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-inl                 ┃점유어를 가지는 함수는 inline으로 확장되지 않음.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-lin                 ┃'identifier'를 초기화 하기 위해 사용된 임시
    ┗━━━━━━━━━━━━┛세그먼트(Default = ON)
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-lvc                 ┃'function'의 호출 매개변수 'parameter'를 위해
    ┗━━━━━━━━━━━━┛사용된 임시 세그먼트(Default = ON)

   . Message options : Potential errors
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-pia                 ┃부적당한 할당일 가능성이 있음.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wdef                  ┃정의 앞에 'identifier'를 사용했을 가능성이 있음
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wnod                  ┃함수 'function'을 위한 선언문이 없음.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-pro                 ┃원형이 없는 함수를 호출함.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-rvl                 ┃함수가 반드시 값을 리턴해야함.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wamb                  ┃모호한 연산자가 괄호를 요구함.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-ccc                 ┃조건이 항상 참/거짓임.
    ┗━━━━━━━━━━━━┛ Default = ON

   . Message options : Inefficient coding
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-aus                 ┃'identifier'에 전혀 사용된 적이 없는 값이 할당됨
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-par                 ┃매개변수 'parameter'가 전혀 사용되지 않음.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wuse                  ┃'identifier'는 선언되었으나 전혀 사용되니 않음.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wstv                  ┃값에 의해 패스된 구조체.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-rch                 ┃도달할 수 없는 코드임.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-eff                 ┃코드가 효력이 없음.
    ┗━━━━━━━━━━━━┛ Default = ON

   . Message options : General
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wasm                  ┃알수 없는 어셈블러 명령어.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-ill                 ┃Ill형식의 프라그마.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-ias                 ┃배열 변수 'identifier'가 near임.
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wamp                  ┃함수와 배열에 첨가된 불필요한 앰퍼샌드(&).
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wobs                  ┃'ident'가 쓸모없는것임.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -w-pch                 ┃프리컴파일드 헤더를 생성할수 없음: header
    ┗━━━━━━━━━━━━┛ Default = ON
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -wmsg                  ┃사용자 정의 경고
    ┗━━━━━━━━━━━━┛Default = ON
      User-defined Warnings option은 IDE의 메세지 윈도우에 나타날 사용자 정의
      메세지를 허락한다. 사용자 정의 메세지는 #pragma message 콤파일러 구문으로
      정의한다.
      third-party 라이브러리에 의해 제공되는 경고는 사용자정의 메세지를 표시하기
      위하여 #pragma message 콤파일러 구문을 사용하여 메세지를 추가한다.
      만일 third-party 라이브러리에 의해 제공되는 경고에 관한 도움말을 필요로
      한다면  라이브러리 공급자에게 문의한다.


+ -

관련 글 리스트
109 [팁] BCC32.EXE Option 정리 #3 박지훈.임프 9407 2001/07/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.