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
[107] [팁] BCC32.EXE Option 정리 #1 (command-line)
박지훈.임프 [cbuilder] 12622 읽음    2001-07-26 14:29
이 팁은 담비님(천리안 FREKBS)님이 98년 12월 22일에 천리안 프로그래머포럼에 올리신 것입니다.
담비님으로부터는 전제하여 올리는 데 대해 허락을 받았습니다.
좋은 정보를 공유하도록 허락해주신 담비님께 감사드립니다.

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

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

  frekbs@chollian.net

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
C++ Builder에서는 Project Options Dialog Box를 통하여 프로젝트의 옵션을 설정할
수 있으며 Project : Options 메뉴를 통하여 Dialog Box를 호출할 수 있습니다.
Project Options Dialog Box를 통하여 C++ Builder의 콤파일러와 링커의 대부분의
Option들을 설정할 수 있습니다. 만일 Project Options Dialog Box에서 찾을 수 있는
Option이라면 project file(.BPR)내에서 옵션을 설정할 수 있습니다. Project make
file을 열었을 때(View : Project Makefile을 선택하여) 다음과 같은 makefile code
를 가지는 섹션을 볼 수 있을 것입니다.
   CFLAG1 = ...
   CFLAG2 = ...
   CFLAG3 = ...
   PFLAGS = ...
   RFLAGS = ...
   LFLAGS = ...
   IFLAGS = ...
이 섹션들은 Object Pascal compiler, resource compiler, C++ compiler와 linker를
위한 옵션의 설정들로 구성되어있습니다. 좀더 도전적인 C++ 콤파일러의 옵션들을
설정하기 위하여 CFLAG1 줄에 원하는 command-line switch를 추가할 수 있습니다.
(만일 스트링을 사용하는 command-line switch를 수정하거나 추가하려면 CFLAG2 줄을
이용한다.) PFLAGS 줄은 Object Pascal 콤파일러의 option들을 설정합니다.
RFLAGS줄은 resource compiler의 옵션을 설정합니다. LFLAGS줄은 TLINK32와 함께
구버전과의 호환성을 위한 링커의 옵션을 설정하며 IFLAGS줄은 ILINK32와 제공되는
새로운 링커의 옵션을 설정합니다.

명령라인으로부터 콤파일러를 가동시키기 위해서는 DOS 프롬프트에서 BCC32를 입력
하고 이어 일단의 명령라인 인수를 입력합니다. 명령라인 인수에는 콤파일러 옵션과
링커 옵션 및 파일명이 포함됩니다. 일반적인 명령 라인 포맷은 다음과 같습니다.

  BCC32 [option [option...]] filename [filename...]

각 명령라인 옵션 앞에는 하이픈(-)이나 슬래쉬(/)중에서 좋아하는 것을 선행시킬
수 있으며 각 옵션과 BCC32 또는 다른 명령 사이는 반드시 띄어써야 하고 파일명과의
사이도 띄어써야 합니다. 옵션을 off 시키려면 옵션 문자 뒤에 두번째 하이픈을
추가해야합니다. 이것은 모든 토글 옵션에 대해 동일하게 적용되며 뒤에 오는 하이픈
은 옵션을 off시키며 뒤에 오는 Plus(+)기호나 아무것도 없으면 옵션을 On시킵니다.
예를 들면 -C와 -C+는 모두 내포된 주석을 On시키고 -C-는 내포된 주석을 Off시킵니
다.

C++ Builder는 여러개의 디렉토리에서 Include 파일과 library 파일들을 검색할 수
있습니다. #define 옵션(-D)과 같이 라이브러리 디렉토리(-L)와 Include 디렉토리
(-I) command line을 위한 구문에 많은 옵션 목록을 수록할 수 있다는 것을 의미합
니다. 이것을 위한 문법은 다음과 같습니다.

-Ldirname[;dirname;...]
-Idirname[;dirname;...]

-L 및 -I와 함께 사용된 매개변수 dirname으로는 임의의 디렉토리나 디렉토리 경로가
올 수 있습니다. 이와 같은 다수 디렉토리를 명령 라인상에 입력할 때는 다음과 같이
합니다.
. -L이나 -I 옵션 하나만 있으면 다수의 엔트리를 집단화할 수 있으며 집단화된 엔트
   리를 구분할 때는 세미콜론(;)을 사용합니다.
   BCC32.EXE -Ldirname1;dirname2;dirname3 -Iinc1;inc2;inc3 myfile.c

. 다음과 같은 요령으로 각 옵션 중에서 둘 이상의 명령라인상에 배치할 수 있습니다
   BCC32.EXE -Ldirname1 -Ldirname2 -Ldirname3 -Iinc1 -Iinc2 -Iinc3 myfile.c

. 아래와 같이 집단화된 목록과 다수 목록을 혼용할 수도 있습니다.
   BCC32.EXE -Ldirname1;dirname2 -Ldirname3 -Iinc1;inc2 -Iinc3 myfile.c

만일 다수의 -L이나 -I옵션을 사용하였다면 그 결과는 누적될것입니다. 콤파일러는
수록된 모든 디렉토리를 좌에서 우측의 순서로 검색합니다. C++ Builder는 또한
Project Options와 Environment Options Dialog Box등을 이용하여 입력한 다수의
디렉토리들을 사용할 수 있도록 지원합니다.

지금까지는 Command-line을 사용하기 위한 기본적인 내용이었습니다. 이제부터
Command-line의 기능을 그룹하시켜 설명하겠습니다.

* Compiler 관련 option
   . Compiler response files
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ @<filename>            ┃응답파일 filename으로부터 콤파일러의 옵션을
    ┗━━━━━━━━━━━━┛읽어들입니다.
      구성파일에 저장된 설정 내용은 명령라인에 입력된 옵션들과 함께 적재됩니다.
      또한 콤파일옵션은 선행규칙을 가집니다.  선행규칙은 간단하며 기본적으로
      좌측에서부터 우측으로 평가되어집니다. -D, -U, -I, -L 등의 옵션을 제외한
      다른 옵션들은 가장 오른쪽에 기술되어진 내용만이 적용됩니다.  예를 들어
      좌측에 특정 옵션을 on시키는 명령이 바로 다음에 off시키는 명령이 있다면
      on명령은 무시되어집니다. (-D, -U, -I, -L 등의 옵션은 누적되어집니다.)
      command line에 직접 입력한 내용은 구성파일에 저장된 명령보다 우선합니다.

      응답파일은 하나의 파일 안에 콤파일러의 옵션과 파일 이름들을 모두 열거할수
      있도록 해줍니다.(오직 콤파일러의 옵션만을 받아들이는 구성파일과는 같지않습
      니다.) 응답파일은 일반적인 ASCII 택스트 파일이며 하나 이상의 옵션이나
      파일이름들로 구성됩니다. 또한 각 요소들의 구분은 Space나 줄바꿈을 통하여
      구분될수 있습니다. 추가적으로 콤파일 명령을 간단하게 하기 위하여
      응답파일은 대부분의 운영체제에서 허락하는것보다도 더 긴 명령줄을 발행할 수
      있습니다. 응답파일을 사용하기 위한 문법은 다음과 같습니다.

      BCC32 @[path]respfile.txt

      여러개의 응답파일을 사용하기 위해서는

      BCC32 @[path]respfile.txt @[path]otheresp.txt

      응답파일의 확장자는 .RSP입니다.

   . Compiler configuration files
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ +<filename>            ┃구성파일 filename으로 부터 대치하여 사용합니다.
    ┗━━━━━━━━━━━━┛
      만일 확실하게 옵션의 설정사항들을 반복해서 사용할 경우가 있다면 그 내용을
      반복적으로 command-line에 타이핑하지 않고 구성화일에 저장하여 사용할 수도
      있습니다. 구성화일은 일반적인 ASCII 텍스트 화일로 구성되면 각각의
      command-line 옵션은 Space나 줄바꿈으로 구분되어져야 합니다.  콤파일 명령을
      사용할 때면 언제나 BCC32.EXE는 BCC32.CFG를 호출하기 위하여 검색을 합니다.
      콤파일러는 .CFG파일을 먼저 콤파일 명령을 발행한 디렉토리에서 찾고, 그 후에
      콤파일러가 위치한 디렉토리에서 찾습니다. 기본적으로 사용되는 .CFG화일을
      여러개 작성하여 사용할 수도 있습니다. 콤파일 옵션이 위치한 장소를 지정하기
      위하여 다음과 같은 문법을 사용할 수 있습니다.

      +[path]filename

      예를 들자면  MYCONFIG.CFG라는 구성파일을 사용하여 다음과 같이 사용할 수
      있습니다.

      BCC32 +C:\MYPROJ\MYCONFIG.CFG mycode.cpp

   . Compiler options : Defines
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -D<name>               ┃name을 NULL 문자열로 정의합니다.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -Dname=string          ┃name을 string으로 정의합니다. 이때 string은
    ┗━━━━━━━━━━━━┛공백이나 탭을 포함할 수 없습니다.
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -U<name>               ┃이전에 정의된 name의 모든 정의를 취소합니다.
    ┗━━━━━━━━━━━━┛(undefine)
     C++ Builder의 매크로 정의능력은 매크로를 정의하거나 혹은 취소할 수 있도록
     해줍니다.(매크로는 표현상수 또는 정의상수라고 불려지기도 함) 명령라인상에
     정의된 매크로는 소스파일의 것보다 우선합니다.  또한 여러개의 #define옵션을
     다음과 같은 방법을 통하여 command-line상에 정의 할 수 있습니다.
     - 단일 -D 옵션뒤에 세미콜론(;)으로 분리하여 다수의 엔트리를 포함시킬수
       있으며 등호(=)를 이용하여 값들을 할당합니다.
       BCC.EXE -Dxxx;yyy=1;zzz=NO MYFILE.C
     - 여러개의 -D옵션을 포함하기 위하여 각각을 스페이스로 구분하여 정의할 수
       있습니다.
       BCC.EXE -Dxxx -Dyyy=1 -Dzzz=NO MYFILE.C

   . Compiler options : Code generation
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━ ━━━━━━━
    ┃ -an                    ┃n의 범위내에서 데이터를 정렬합니다.
    ┗━━━━━━━━━━━━┛Default = Double word alignment (-a4 or -a)
     데이터의 정렬은 메모리에 저장된 데이타를 콤파일러가 어떻게 저장시킬것인가를
     선택할 수 있게 해줍니다. word, double word, quad word, 선택된 타입이
     복잡하여 큰 item들은 강제로 정수크기로 정렬됩니다. 여분의 byte들은 멤버들을
     확실하게 정렬하도록 안전하게 구조체에 삽입합니다.
     - Byte alignment (Command-line switch: -a1 or -a-)
       byte정렬이 on되면 콤파일러는 메모리의 경계가 정의된 data field들이나
       변수들의 강제정렬을 하지 않습니다. 콤파일러는 홀수 혹은 짝수의 주소에
       data를 정렬합니다. byte정렬이 행해지는 동안 프로그램은 좀더 치밀해지고
       프로그램은 실행이 느려지는 경향이 있습니다. 다른 data의 정렬 옵션은 80x86
       프로세서에서 데이터를 저장 및 복구하는데 속도를 증가시킵니다.
     - Word alignment (2-byte) (Command-line switch: -a2)
       word 정렬이 on되면 콤파일러는 짝수의 주소에 비문자형 data를 정렬합니다.
       자동 변수와 글로발 변수는 적절하게 정렬됩니다. char와 unsigned char변수와
       field들은 모든 주소에 배치될수 있으며 모든 다른 것들은 짝수번지에
       배치시킵니다.
     - Double word (4-byte) (Command-line switch: -a4 or -a)
       double word는 32-bit word의 범위(4-byte)에서 비문자형 데이터를 정렬합니
       다.  4바이트보다 작은 크기의 데이타는 그들의 타입 크기에 맞추에 정렬됩
       니다.
     - Quad word (8-byte) (Command-line switch: -a8)
       quad word는 64-bit word(8-byte)의 범위에 비문자형 데이터를 정렬합니다.
       8바이트보다 작은 크기의 데이타는 그들의 타입 크기에 맞추에 정렬됩니다.
     - Paragraph (16-byte) (Command-line switch: -a16)
       paragraph는 비문자형 데이터를 128-bit(16-byte)의 범위에 정렬합니다.
       16바이트보다 작은 크기의 데이타는 그들의 타입 크기에 맞추에 정렬됩니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -b                     ┃enums들의 크기를 항상 정수의 크기로 만듭니다.
    ┗━━━━━━━━━━━━┛Default = ON
     이 옵션은 콤파일러에게 열거형을 위해(enum형의 변수들) 항상 전체 word를
     할당하라고 지시합니다.(32-bit 프로그램에서는 4-byte int임)
     이 옵션이 off되었을 경우(-b-), 콤파일러는 열거된 값들을 가장작은 정수에
     위치시킵니다. 열거의 최소 및 최대값이 각각 0 ~ 255 및 -128 ~ 127의 범위
     내에 있을 경우 unsigned 또는 signed char에 값을 할당하라고 지시합니다.
     또는 열거의 값이 다음의 범위에 있을 경우 unsigned 또는 signed short에
     값을 할당하라고 지시합니다.
        0 to 4,294,967,295 or -2,147,483,648 to 2,147,483,647
     만일 범위를 벗어나는 열거 값이 있다면 콤파일러는 4-byte int(32-bit)에 재배
     치 시킵니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -CP                    ┃MBCS를 위해서 Code Paging이 가능하게 합니다.
    ┗━━━━━━━━━━━━┛Default = OFF
     이 옵션은 사용자가 정의한 코드 페이지를 제공할 수 있도록 해줍니다. 그것의
     주용한 사용은 BCC32가 multi-byte charcter strings(MBCS)을 변환하고 해석하는
     방법을 알게 하는것입니다. 거기에는 코드 페이지가 효과를 미칠 별개의 두가지
     영역이 있습니다.
     1. string constant, comment, #error, #pragma지시어
     2. wide-char string constant(L'<MBCS>'에의해 정의하는것처럼)
     첫번째에 속하는 MBCS 스트링은 정확한 코드 페이지를 반드시 명시해주어야 하고
     Windows API 함수 IsDBCSLeadByteEx를 호출하여 사용합니다.
     이 함수를 사용하는것은 특별한 장소를 위한 MBCS 스트링의 정확한 해석을 위한
     코드 페이지를 명시하는 것입니다.(예를 들자면 이것은  BCC32가 MBCS trail
     byte에서 백슬래쉬를 정확하게 해석할 수 있게 해줍니다.)
     두번째(wide-char string constants)에 속하는 MBCS string을 위해서는 Windows
     API function MultiByteToWideChar를 사용하여 Unicode string의 MBCS string을
     변환하기 위한 정확한 코드 페이지를 명시해야 합니다.
     다음의 command-line 스위치를 사용하여 코드 페이징이 가능하게 합니다.
        -CPnnnn
     이 문장의 nnnn은 특별한 지역을 위해 사용할 필요가 있는 코드 페이지의 10집값
     입니다. 다음과 같은 규칙이 적용됩니다.
     . 코드페이지를 설정할때 nnnn을 위한 숫자의 설정은 반드시 Microsoft NLS Code
       Page ID의 값을 사용해야만 합니다. 예를 들자면 United States MS-DOS 응용
       프로그램을 위해서는 437를, 일본을 위해서는 932의 코드페이지를 사용해야
       합니다.
     . 숫자값 nnnn은 OS에 의해 제공되어진 유효한 코드페이지여야만 합니다.
     . 사용자는 확실하게 아시안 지역의 코드페이지를 엑세스 가능하게 하기 위하여
       관련있는 Windows NLS 파일들을 설치해야할 필요가 있습니다. 세부적인것을
       위해 반드시 Microsoft NLS Code Page 문서를 참조하십시요.
     . 만일 코드페이지의 값을 설정하지 않았다면 BCC32는 Windows API function
       GetACP를 호출하여 시스템의 기본 코드페이지를 가져오고 위에서 설명했던
       스트링들을 핸들링할때 이 값을 사용할것입니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -d                     ┃중복되는 문자열을 결합시킵니다.
    ┗━━━━━━━━━━━━┛Default = OFF(-d-)
    이 옵션을 사용하면 콤파일러에게 스트링이 다른 스트링과 부합될 때 문자열을
    통합하여 더 작은 프로그램을 생성하라고 지시합니다. 콤파일시간이 더 길게 소비
    되며 하나의 스트링을 수정함으로서 에러를 야기시킬 수 있습니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -K                     ┃모든 char 타입을 unsigned로 취급하게 합니다.
    ┗━━━━━━━━━━━━┛Default = OFF(char는 기본값으로 signed로
                                선언되어집니다.-K-)
     이 옵션은 컴파일러에게 모든 char 선언문을 마치 unsigned char형인 것처럼
     취급하라고 지시하는데 이것은 char선언문을 unsigned로 취급하는 다른
     콤파일러와의 호환성을 허용합니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -r                     ┃레지스터 변수를 사용합니다.
    ┗━━━━━━━━━━━━┛Default = Automatic(-r)
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -rd                    ┃register keyword가 사용되었을 경우에만 레지스터
    ┗━━━━━━━━━━━━┛변수를 사용합니다.
     이 옵션은 레지스터 변수의 사용을 억제하거나 가능하게 합니다.
     - None (Command-line switch: -r-)
       이것은 콤파일러에게 register keyword를 사용하였다 하더라도 레지스터 변수
       를 사용하지 말것을 지시합니다.
     - Register keyword (Command-line switch: -rd)
       register keyword는 콤파일러에게 register keyword를 사용하였고 register가
       가능한 경우에만 레지스터 변수를 사용할 것을 지시합니다. 레지스터의 사용을
       최적화하기 위하여 이 옵션을 사용하거나 Automatic 옵션(-r)을 사용합니다.
       #pragma옵션에서 -rd를 사용할 수 있습니다.
     - Automatic (Command-line switch: -r)
       Automatic은 콤파일러에게 register keyword를 사용하지 않았더라도 가능하면
       레지스터 변수를 자동으로 할당할것을 지시합니다. 일반적으로 기존하는
       어셈블리 코드가 레지스터 변수를 지원만한다면 Automatic을 사용할 수
       있습니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -WU                    ┃Unicode용 응용프로그램으로 변환합니다.
    ┗━━━━━━━━━━━━┛Default = OFF
    이 옵션은 tchar.h에 있는 _txxxx 매크로를 사용한 소스 코드로부터 유니코드
    응용프로그램을 생성한다. 만일 _UNICODE가 선언되었다면 매크로는 Unicode용
    이름으로 치환되고 비 유니코드는 그렇지않게 이름지어질 것이다.
    예를 들어 다음의 코드는 유니코드 또는 비 유니코드 응용프로그램으로 컴파일
    되어질 수 있다. 유니코드 응용프로그램으로 컴파일하기 위해서 명령라인에 -WU를
    사용한다.

        #include <stdio.h>

        #include <tchar.h>
        int _tmain(char argc, _TCHAR ** _targv)
        {
                _TCHAR buff[200];
                int i;

                for (i = 0; i < argc; i++)
                {
                        _tcscpy(buff, _targv[i]);
                        _tprintf(_T("argument %d:%s\n"), i, buff);
                }
                return 0;

        }

    이 예에서, -WU가 사용된 경우라면 _tcscpy는 wcscpy로 치환되고, 사용되지 않은
    경우라면 strcpy로 치환되어진다. 비슷하게 _tprintf는 wprintf나  printf,
    _TCHAR는 wchar_t나 char,  _targv는 _wargv나 _argv로 치환된다.
    _T(...) 매크로는 괄호안의 스트링을 wide-character나 스탠더드 스트링으로
    바꾼다. tchar.h 헤더파일은 또한 _tWinMain을 WinMain 또는 wWinMain으로
    만든다. 변환에 관한 완전한 리스트는 tchar.h를 참조한다.

   . Compiler options : Floating point
    floating point option은 콤파일러에게 floating point 코드를 어떻게 핸들링하고
    최적화실킬것인가를 알려줍니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -f-                    ┃부동소수점 계산을 포함하지 않음.
    ┗━━━━━━━━━━━━┛
    . No floating point
      (Command-line switch: -f-)
      부동소수점 계산을 사용하지 않는다면 이 옵션을 사용합니다. 이 옵션(-f-)이
      설정되었을 때 부동소수점 라이브러러를 linke시키지 않습니다. 만일 이 옵션을
      사용하고서 프로그램에서 부동소수점 연산을 사용하였다면 link 에러가 발생합
      니다. check(-f)하였을 때는 콤파일러는 80x87을 실행시에 흉내내게 됩니다.

      Default = OFF  (-f)

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -ff                    ┃신속한 부동소수점 계산
    ┗━━━━━━━━━━━━┛
    . fast floating point
      (Command-line switch: -ff)
      빠른 부동소수점 연산이 설정되면 명시적 또는 암시적 형 변환에 관계 없이
      부동 소수점 연산을 최적하합니다. 연산은 ANSI 연산 모드보다 빠를 수 있습니
      다. 빠른 부동소수점 연산의 목적은 다음 예와 같이 기술적으로 C 어의와
      (semantic) 정확히 반대인 특정 최적화를 허용하는 것입니다.

        double x;
        x = (float) (3.5*x);

      위 코드를 제대로 실행하기 위해 x는 3.5와 곱해서 float로 절단된 double을 준
      뒤 x에 double로 저장됩니다. 신속한 부동 소수점 옵션하에서 long double의
      곱은 double로 직접 변환됩니다. 더 협소한 부동 소수점 형으로 패스할 때의
      정밀도(precision) 손실에 좌우되는 프로그램은 거의 없으므로 신속한 부동
      소수점은 디폴트 입니다. 이 옵션을 -ff-를 사용하여 off 시키면 콤파일러는
      엄격한 ANSI의 엄격한 부동소수점 변환 규칙을 따르게 됩니다.

      Default = ON

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -fp                    ┃Pntium의 fdiv 결함 수집
    ┗━━━━━━━━━━━━┛
    . Pntium의 fdiv 결함 수집
      약간 일찍 개발된 Pentium 칩들은 전체 정밀도(precision)로 부동소수의 나눗셈
      을 수행하지 않습니다. 비록 이런 문제를 부딪칠 기회가 아주 적다 하더라도
      정확한 결과값을 보장하도록 부동소수점 나눗셈을 흉내내는 코드를 이 스위치는
      삽입합니다. 이 옵션은 프로그램의 FDIV 수행능력을 감소시킵니다.
      이 옵션은 오직 콤파일할 모듈에 FDIV 인스트럭션을 수집하는데 사용합니다.
      실행 라이브러리는 또한 이 스위치의 사용으로 인하여 수정되지 않은 FDIV
      인스트럭션을 가집니다. 실행라이브러리가 수집하도록하기 위해서는 이스위치를
      사용하여 다시 콤파일하여야만 합니다.
      다음의 함수들은 이 옵션을 사용하여 수집되어지지 않은 어셈블리 언어에서의
      FDIV 인스트럭션을 사용합니다.

        acos     cosh      pow10l
        acosl    coshl     powl
        asin     채니      sin
        asinl    exp       sinh
        atan     expl      sinhl
        atan2    fmod      sinl
        atan2l   fmodl     tan
        atanl    pow       tanh
        cos      pow10     tanhl
        tanl

      추가적으로 이 스위치는 printf나 scanf와 같은 스트링으로부터의 또는 스트링
      에 대한 부동소수를 변환하는 함수를 수집하지는 않습니다.

      Default = OFF

   . Compiler options : Compiler output
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -c                     ┃.OBJ 파일을 위해 컴파일은 하나 link하지 않음.
    ┗━━━━━━━━━━━━┛
    이 옵션은 .C, .CPP, .ASM로 이름지어진 파일을 컴파일하고 어셈블하지만 링크
    명령을 실행하지는 않습니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -e<filename>           ┃실행파일의 이름을 명시합니다.
    ┗━━━━━━━━━━━━┛
    파일 확장자 .EXE를 추가하여 filename으로부터 실행 프로그램을 파생시킵니다.
    만일 이 옵션이 없을 경우, 링커는 파일명 목록 내의 첫 번째 원시 파일 또는
    대상 파일명으로부터 .EXE 파일명을 파생시킵니다. filename은 -e 바로 뒤에
    와야하며 그 사이에 White space가 사용되면 안됩니다. -WD를 사용시 기본
    확장자는 .DLL이 됩니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -lx                    ┃링커에게 x 옵션을 패스합니다.
    ┗━━━━━━━━━━━━┛
    이 command-line 옵션은 컴파일 명령으로부터 링커 명령에 x 옵션을 전달합니다.
    -l-x를 사용하면 x를 제거하며 하나 이상의 옵션이 -l 뒤에 올 수 있습니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -M                     ┃링크 맵 파일을 생성합니다.
    ┗━━━━━━━━━━━━┛
    이 옵션은 링커가 풀 링크 맵을 생성하게 하며 디폴트는 링크맵을 생성하는 것
    입니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -o<filename>           ┃filename으로 컴파일하여 .OBJ파일을 생성합니다.
    ┗━━━━━━━━━━━━┛
    이 옵션은 컴파일을 위해 명시된 소스파일 이름으로 filename.OBJ를 컴파일합니다

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -P                     ┃소스 확장자에 관계없이 모든 파일을 C++로 컴파일
    ┗━━━━━━━━━━━━┛합니다.
    이 옵션은 컴파일러가 확장자에 관계 없이 코드를 항상 C++로 컴파일하게 합니다.
    컴파일러는 다른 확장자 코드와 함께 명시되지 않은 한 모든 파일이 .CPP라고
    가정합니다. -P옵션은 컴파일러에게 파일을 그 확장자에 따라 C 또는 C++로
    컴파일 하라고 지시하며 기본 확장자는 .CPP 입니다. 이 옵션이 디폴트입니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -P<ext>                ┃C++로 컴파일하고 확장자에의해 결과물을 산출한다.
    ┗━━━━━━━━━━━━┛
    이 옵션은 컴파일러가 모든 파일을 C++로 컴파일하게 하며 디폴트확장자를 ext를
    가지고 명시한 것으로 변경합니다. 이 옵션은 일부 프로그래머가 C++ 코드를
    위한 기본 확장자로 .C 또는 다른 확장자를 사용하기 때문에 사용할 수 있습니다.
    옵션 -P-ext는 컴파일러에게 확장자를 바탕으로 코드를 콤파일(.CPP를 C++로,
    다른  모든 파일명 확장자를 C 코드로)하라고 지시하며 디폴트 확장자가 무엇인
    지도 명시합니다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -tWC                   ┃Target이 윈도우용 console application이다.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -tWD                   ┃.DLL 실행파일로 변환한다.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -tWM                   ┃32-bit용 multi-threaded target으로 변환한다.
    ┗━━━━━━━━━━━━┛
    컴파일러에게 멀티 쓰레드된 .EXE 또는 .DLL파일을 생성하게 한다.(command-
    line 옵션 -WM은 구버전과의 호환성을 위한것이며 -tWM과 동일한 기능을 한다.)
    이 옵션은  생성할 32-bit 응용프로그램의 타입을 명시하거나 컴파일하거나 링크
    에 모듈 정의를 포함할 필요가 없다.

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -tWP                   ┃Target이 package이다.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -tWR                   ┃Target을 dynamic RTL을 사용한다.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -tWV                   ┃Target이 VCL을 사용한다.
    ┗━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -X                     ┃자동종속정보의 생성을 하지 않는다.
    ┗━━━━━━━━━━━━┛Default: -X- use compiler autodependency output
    자동종속 옵션(-X-)을 설정한 경우 컴파일러는 .C 또는 .CPP파일의 모든 포로젝트
    파일들을 위한 자동종속 정보를 생성한다. Borland C++ Project Manager는 컴파일
    시간에 속도를 증가시키기 위하여 자동종속 정보를 사용한다. 프로젝트 메니져는
    .OBJ 파일을 열어서 소스코드에 포함된 파일들에 관한 정보를 찾는다. 이 정보는
    항상 소스 모듈이 컴파일되면 .OBJ파일에 위치하게 된다. 그런 후, .OBJ파일을
    생성하는데 사용된 시간과 일자는 .OBJ파일에 있는 시간과 일자의 정보와
    비교하여 쳌크되어지고 서로 다른 날짜라면 소스파일은 다시 컴파일된다. 이것은
    자동종속 쳌크에 의하여 호출되어진다. 만일 유효한 종속정보를 프로젝트 파일이
    가지고 있다면 프로젝트 메니져는 그 정보를 사용하여 자동종속을 쳌크할것이다.
    이것은 각각의 .OBJ 파일을 읽는것보다 빠르다.
    이 옵션이 disable(-X)된다면 컴파일러는 자동종속 정보를 생성하지 않는다.
    모듈이 자동종속 정보를 사용하여 컴파일되었다면 MAKE의 자동종속 사항을 사용
    할 수 있다.

    C++ Builder Project Manager는 자동종속 정보(autodependency information)를
    사용하지 않는다. 이 옵션은 대개 .LIB파일에 배치(디스크 공간에 저장)할 파일
    을 위해 사용한다.

    Default = OFF  (-X)

    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -u                     ┃underscore를 변환한다.
    ┗━━━━━━━━━━━━┛Default = ON
    generate underscore 옵션이 설정되면 컴파일러는 자동으로 모든 글로발 식별자
    (함수들과 글로벌 변수들)를 오브젝트 모듈에 저장하기 전에 앞에 underscore
    (_)를 추가한다. 파스칼 식별자(키워드 __pascal에 의해 수정된것)들은
    대문자로 변환되며 프리픽스로 언더스코어를 사용하지 않는다. C나 C++ 식별자를
    위한 언더스코어는 선택적이지만, Borland C++ 라이브러리를 사용하여 링크시
    에러를 피하기 위해서는 이 옵션을 켜두어야한다.

   . Compiler options : Source
    ┏━━━━━━━━━━━  ┏━━━━━━━━━━━━━━━━━━━━━━━
    ┃ -C                     ┃내포된 주석(nested comments)를 허용한다.
    ┗━━━━━━━━━━━━┛(Default: -C- turn nested comments off)
     이 옵션이 on인 경우 nested comment를 소스 파일에 사용할 수 있다.
     표준 C에서는 nested comment를 허용하지 않으며 호환성은 없다.

     Default = OFF

    ┏━━━━━━━?

+ -

관련 글 리스트
107 [팁] BCC32.EXE Option 정리 #1 (command-line) 박지훈.임프 12622 2001/07/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.