                    M C P P - P O R T I N G . T X T
                         == How to port MCPP ==

                    桡    kmatsui@t3.rim.or.jp

V.2.0   1998/08     First released.
                                                                kmatsui
V.2.1   1998/09     Updated according to C99 1998/08 draft.
                                                                kmatsui
V.2.2   1998/11     Updated according to C++98 Standard.
                                                                kmatsui
V.2.3 prerelease 1      2002/08     Updated according to C99 Standard.
            Added porting to Linux / GCC, CYGWIN and LCC-WIN32.
            Augmented GCC-compatible features.
                                                                kmatsui
V.2.3 prerelease 2      2002/12     Added porting to GCC V.3.2.
            Revised some wording.
                                                                kmatsui
V.2.3 release       2003/02     Finally released.
                                                                kmatsui
V.2.3 patch 1       2003/03     Slightly modified.
                                                                kmatsui
V.2.4 prerelease    2003/11     Added porting to Visual C++.
            Created configure script.
                                                                kmatsui
V.2.4 release       2004/02     Extended multi-byte character handling.
            Added porting to Plan 9 / pcc.
                                                                kmatsui
V.2.4.1     2004/03     Revised recursive macro expansion, and added -c
                option.
                                                                kmatsui
V.2.5       2005/03     Absorbed POST_STANDARD into STANDARD as an
                execution time option, absorbed OLD_PREPROCESSOR
                setting as an execution option of PRE_STANDARD.
            Renamed most of #pragma __* directives as #pragma MCPP *.
            Removed documents on older compiler-systems (DJGPP,
                compiler-systems on MS-DOS except Borland C 4.0).
                                                                kmatsui
V.2.6       2006/07     Integrated STANDARD and PRE_STANDARD modes into
                one executable, differenciating the modes by the
                invocation options.
            Removed compiler-specific behaviors from stand-alone-build.
            Removed configurations for pre-C90 compilers, MS-DOS
                compilers and Plan 9 / cpp.
                                                                kmatsui

V.2.6.1     2006/08     Added porting to MinGW.
            Revised path-list handling for CygWIN.
            Revised some other points.
                                                                kmatsui



ܼ


    [1.1]       ϣӤϤФʤ portable ʥ
    [1.2]       Τ Standard C ⡼ɤ˲äƤ¾γƼ⡼ɤ

ƽϤ˰ܿˡ
    [3.1]       ܿߤν
        [3.1.1]     ɤνϤǤɬפ
        [3.1.2]     FreeBSD / GCC V.2.*, V.3.*, V.4.*
        [3.1.3]     Linux / GCC V.2.*, V.3.*, V.4.*
        [3.1.4]     CygWIN / GCC V.2.*, V.3.*
        [3.1.5]     MinGW / GCC V.3.*
        [3.1.6]     LCC-WIN32 V.3.*
        [3.1.7]     Visual C++ 2002, 2003, 2005
        [3.1.8]     Borland C V.4.*, V.5.*
    [3.2]       DECUS cpp бƤ
    [3.3]       noconfig.H, configed.H, system.H
    [3.4]       system.c
    [3.5]       lib.c
    [3.6]       ɸإå
    [3.7]       makefile MCPP Ȥäꥳѥ
    [3.8]       MCPP 򥳥ѥǤ
    [3.9]       ѥ뤹ϤȥåȤν
    [3.10]      бƤʤ
    [3.11]      Stand-alone ǤΥѥ
ƽϤ˰ܿˡܺ
    [4.1]       noconfig.H, configed.H, system.H 
        [4.1.1]     PART 1  åȥƥ
            [4.1.1.1]   ޥ
            [4.1.1.2]   Include ǥ쥯ȥ
            [4.1.1.3]   ֹνϷ¾
            [4.1.1.4]   Ϥθͤ˱
            [4.1.1.5]   Multi-byte character
            [4.1.1.6]   åȤȥۥȤ˶̤
        [4.1.2]     PART 2  ۥȥƥ
        [4.1.3]     PART 3  MCPP ưͤ
            [4.1.3.1]   Ƽư⡼
            [4.1.3.2]   ư⡼ɤκλ
            [4.1.3.3]   Translation limits λ
    [4.2]       system.c
    [4.3]       lib.c
    [4.extra]   malloc()
ХȰܿ
    [5.1]       Хɤ
    [5.2]       malloc() ϢΥХå
    [5.3]       Х
    [5.4]       ܿ
    [5.5]       GCC ʳνϤǤ configure ξ
    [5.6]       ǡäƤаܿƤߤޤ
    [5.7]       ڥåȤˤ¾νϤΥƥ
    [5.8]       Τո
MCPP ĹƻΤ
    [6.1]       ۣǯ
    [6.2]       V.2.3 
    [6.3]       ̤Ƨեȥ¤ȡפ˺


ס

  MCPP  Martin Minow  DECUS cpp 򸵤 kmatsuiʾ ˤŪ
ľåץץåǤMCPP Ȥ̾ Matsui cpp Ȥ̣
Ǥϥ󶡤ΤǡƽϤǻȤˤϡνϤ˹
ƥ˼㴳ѹäǥѥ뤷ơMCPP μ¹ԥץ
ɬפޤ
  ΥɥȤϥƽϤ˰ܿˡƤޤǤ
ä¹ԥץưͤˤĤƤϡmcpp-manual.txt Ȥޥ˥
򻲾ȤƤ
  ΥɥȤϤ٤ free software Ȥ󶡤ޤ
  MCPP ϼΤ褦ħäƤޤʤ [1.1] - [1.2]  mcpp-manual.
txt ȽʣƤˡ

    [1.1]       ϣӤϤФʤ portable ʥ

  Linux, FreeBSD, Windows ¿ΣϣӤ򥵥ݡȤƤ portable ʥ
ץåǤꡢΥ Standard C (ANSI/ISO/JIS C) νϤ
 Standard C++ νϤǤХѥǤ빭 portability
äƤ롣饤֥ؿϸŵŪʤΤȤäƤʤ
  ƽϤ˰ܿ뤿ˤϡ¿ξ硢إåեΤĤΥ
ؤƥѥ뤹ǤࡣǰξǤ⡢system.c
Ȥե˿Խ­٤Ǥ롣
  Multi-byte characterʴˤνܤ EUC-JP, shift-JIS, ISO2022-
JP GB-2312Ѥ Big-5ڹ KSC-5601 (KSX 1001) б
롣UTF-8 Ȥ롣Shift-JIS  Big-5 ξ硢ѥΤ
ǧʤϤǤϡMCPP 䤦

    [1.2]       Τ Standard C ⡼ɤ˲äƤ¾γƼ⡼ɤ

  Standard C ư⡼ɤΤۤˡK&R 1st. Υ⡼ɤ "Reiser"
model cpp Υ⡼ɤ⤢ꡢˤϼ post-Standard ͤΥ⡼ɤޤǤ
롣C++ ΥץץåȤư¹Իץ⤢롣
  Standard C ⡼ɤϴ¸¿ΥץץåȰäơʤ˼
ƤĤǤ롣C90, C95, C99, C++98 Τ٤ƤбƤ롣
Standard C ץץ reference model ȤʤΤܻؤƺäƤ롣
εʤΥСϼ¹Իץǻꤹ뤳ȤǤ롣*1
  ۤˤĤͭѤʳĥǽäƤ롣ޥŸ #if 
ɾȥ졼 #pragma MCPP debug ⤢롣إåե
"pre-preprocess" ƤȤǤ롣
  ĤͭѤʼ¹ԻץƤ롣˥󥰤Υ٥
ꤹ륪ץ䡢include directory ꤹ륪ץǤ롣
  ˤɤʴְ㤤äƤMCPP ˽긫ʥå
ФꤻΤǤ狼䤹ǥåФŬڤʽ򤹤롣
ܿȤʤˤĤƤٹȯ롣
  ⵡǽǤʤ顢ɥŪŪ

  ܺ٤ʥɥȤ°Ƥ롣

  MCPP η򶯤Ƶ󤲤С®٤٤ȤǤGCC V.3 / cc1 
٤ȣܤ餤λ֤ޤBorland C 5.5 / cpp Ʊ
餤®٤ǡإåե pre-preprocess εǽȤȤ⤦®
ʤΤǡä٤ۤǤϤޤΤǤ뤳ȡportable ʥ
Ǥ뤳ȡʤǤư뤳Τˤϡ٤ν
֤Ϥ򤨤ʤȹͤƤޤ

  ʤץץå Standard C ٤ƥȤ뤿θڥåȤ
"Validation Suite for Standard C Preprocessing"β⤪Ӥ
ȤäƥƥȤƼץץåκ cpp-test.txt  MCPP ȤȤ
˸Ƥޤ򸫤ȡStandard C פȾΤ¸Υץ
åˤ¿꤬뤫狼ޤ*2

  *1 øεʤȤƤ ISO/IEC 9899:1990 (JIS X 3010-1993) ĹȤ
    Ƥ1999 ǯˤ ISO/IEC 9899:1999 򤵤줿Ǥ
     C90Ԥ C99 ȸƤ֡Ԥ ANSI X3.159-1989 ܹԤΤ
    Τǡ̤ˤ ANSI C ޤ C89 ȸƤФ뤳Ȥ⤢롣ޤISO/IEC
    9899:1990 + Amendment 1995  C95 ȸƤ֤Ȥ롣C++ εʤ ISO
    /IEC 14882:1998 ӤǤǤ ISO/IEC 14882:2003 ǡ
    򤳤Ǥ C++98 ȸƤ֡
  *2  cpp  V.2.2 ޤǤñ cpp ȸƤǤ̤ cpp ʶ
    路ΤǡV.2.3  MCPP ȸƤ֤ȤˤΥɥȤǤ
    V.2.2 ޤǤΥС MCPP ȸƤ֡ޤΥɥȤ̾
    V.2.2 ޤǤ cpp.doc ȤƤV.2.3  porting.txt ѹ
     V.2.5  mcpp-porting.txt ѹ伫Ȥ̾⡢V.2.
    2 ޤǤ Psycho ȤƤV.2.3  kmatsui ѹ


򡡡

    [2.1]  DECUS cpp  Martin Minow ˤäƺ졢1984/05  usenet /
net.sources ǸޤDECUS ȤΤϡDEC Users' Society Ȥ
 DEC ҤΥԥ塼Υ桼롼פǤDECUS cpp  DEC 
PDP-11 / RT11, PDP-11 / RSX, VAX / VMS, VAX / ULTRIX Υƥ
ΣøϤΤ˽񤫤줿åץץåǤܿɤ
ƤΤǡ¾Υƥ˰ܿ뤳ȤŪưפǡꥸʥǤ
⤹Ǥ DEC ʳΤĤ UNIX ƥбƤ褦Ǥ
    [2.2]  䤬 MCPP νȯȤΤϡC Users' Group եǥ #
243 ǤΥˤ뽤򸫤ȡԤˤǽ
85/06 ȤʤäƤޤθ塢ԤС󥢥åפ򤷤ƤΤɤ
Τޤ
    [2.3]  θ 88/12 ޤǤ˲ͤˤä MS-DOS ΤĤν
ˤܿޤCUG ΥǥäƤΤϤΥСǤ
    [2.4]  ftp.oreilly.com/pub/examples/imake/DECUS-cpp.tar.gz ˤ⥽
ꡢ time-stamp  93/02 ȤʤäƤޤºݤƤ CUG 
ΤŤ85/01 ΤΤǤʤ˴ޤޤƤ Martin Minow 
README ˤȡΥץ public domain ȤʤäƤޤʤ
README Τ 84 ޤ 85 ǯΤΤȻפˡ
    [2.5]  89/04  Gigo ˤä OS-9/6x09  Microware C ˰ܿ
Τ NIFTY-SERVE / FOS9 / lib 2 ϿƤޤ
    [2.6]  MCPP V.2 ϡ䤬򸵤Ū˽ľΤǤܿ
򤵤˸夵Standard C ˴б뤿ᡢե
ʬλѤ¿Υޥɲäؿѿɲáʬ䡦񤭴
̾˹ԤäƤޤ̤⥪ꥸʥǤΣܤˤʤäƤޤ
ɥȤȸڥåȤϤ٤ơ䤬ޤä񤤤ΤǤ
  Ϥ free software ȤƸޤ伫Ȥ DECUS Ȥϲδ
⤢ޤ
  ʤꥸʥǤˤǿդƤޤ󤬡MCPP 椹
ϡ DECUS cpp ȸƤ֤Ȥˤޤ
    [2.7]  Standard C ΥޥŸμˡˤĤƤϡE. Ream  MS-
DOS  PDS Ǥ CPP V.5.3 (1989/08, CUG #319) Υ⻲ͤˤ
ޤΤۤGCC / cpp ư䡢J. Roskind  JRCPP Υɥ
Ȥ⤤ĤμƤޤ
    [2.8]  MCPP V.2.0 ϸڥå V.1.0 ȤȤ 1998/08  NIFTY SERVE
/ FC / LIB 2 Ǹ졢٥ҤΥȤˤžܤޤ
    [2.9]  MCPP V.2.1 ϡV.2.0  C99 1998/08 draft б뤿ν
äΤǤڥå V.1.1 ȤȤ 1998/09  NIFTY SERVE /
FC / LIB 2 ӥ٥ҤΥȤƱ˥ץɤޤ
    [2.10] MCPP V.2.2  V.2.1  1998/07 ˷ޤä C++ Standard (ISO/
IEC 14882:1998) б update ΤǤڥå V.1.2 ȤȤ
 1998/11  NIFTY SERVE / FC / LIB 2 ӥ٥ҤΥȤƱ
ץɤޤ
    [2.11] MCPP V.2.3  V.2.2  C99 б update  Linux
/ GCC 2.95, GCC 3.2 ؤΰܿɲäơGCC / cpp Ȥθߴ夵
ΤǤޤ¹ԻץɲäѹޤV.2.3 
ϥɥȤαѸǤޤMCPP °븡ڥåȤˤϡ
GCC / testsuite ΰȤƼưŪ˥ƥȤ¹Ԥ뤳ȤΤǤ edition
ɲäޤ
    [2.12] MCPP  V.2.3 γȯǡڥå V.1.3 ȤȤˡ
ʵ(IPA) ʿǯ١̤Ƨեȥ¤ȡפ˿ ͵
ץȥޥ͡ˤäƺ򤵤졢2002/07 - 2003/02 δ֤ IPA 
ȿУͤνΤȤ˳ȯʤޤѸǥɥ
⤳ΥץȤǡͭ²ҡϥˤ
˻䤬ȥƥäƤǤäΤǤΥץ
 cvs repository  ftp site Ѱդ졢V.2.3 Ϥ 2002/08 
pre-release 1 2002/12  pre-release 2 2003/02 ˥꡼Ǥ
ȯޤθ塢2003/03  V.2.3 patch 1 ФƤޤ*
    [2.13] MCPP Ϥʿǯ٤ˤ̤Ƨեȥ¤ȡפ˰
  PM ˤäƷ³ƺ򤵤졢2003/06 - 2004/02 δ֤ IPA λ
ȰϣУͤνΤȤ V.2.4 ؤ update Ȥʤޤ
ơ2003/11 ˤ V.2.4 prerelease ȯޤΥС
 Visual C++ 2003 ؤΰܿɲä졢ޤMCPP  make ư
configure ץȤޤʤMCPP ϤޤΤʥ饤
ɽ򤷤ƤޤǤλ BSD Υ饤ɽ
򤹤褦ˤʤޤˡ2004/02 ˤϥ꡼Ǥȯޤ
ΥСǤ multi-byte character νĥޤޤ
ǥɥȤϥܸǤ˹碌 update 
ޤ
    [2.14] 2004/03 ˤ MCPP V.2.4.1 ꡼ޤϺƵŪ
ޥŸˡΤǤ
    [2.15] 2005/03 ˤ MCPP V.2.5 ꡼ޤΥС
ǤϡPOST_STANDARD ȤѥΥ⡼ɤ STANDARD ⡼ɤˤμ
ԻץΰĤȤƵۼ졢OLD_PREPROCESSOR Ȥѥ
 PRE_STANDARD ⡼ɤμ¹ԻץȤƵۼޤƵ
ŪޥŸˡϺƽƴʤΤȤʤޤޤGCC V.3.3,
3.4 бǡ16 ӥåȥƥǤνϤ˴ؤɥȤ
¿ޤ
    [2.16] 2006/07 ˤ MCPP V.2.6 ꡼ޤΥС
ǤϡSTANDARD ⡼ɤ PRE_STANDARD ⡼ɤĤμ¹ԥץˤޤ
ޤstand-alone-build λͤϽϤ˰¸ʤΤ˲
ޤĤνϤοСؤбɲä줿ǡ
pre-C90 λͤνϤ˰ܿ뤿ϺޤMS-DOS 
ѥؤΰܿޤν񤭴ʤΤˤʤ
ϥɲäνϤäƤ⡢ʽ񤭴ȯ
ߤǤ
    [2.17] 2006/08 ˤ MCPP V.2.6.1 ꡼ޤΥС
ǤϡMinGW ؤΰܿɲäޤΤۤХȤĤ
Ūɤޤ

  * ̤Ƨեȥ¤ȡ(Exploratory Software Project) γפ
    ΤȤΤ뤳ȤǤ롣

        http://www.ipa.go.jp/jinzai/esp/

    MCPP V.2.3  V.2.5 ޤǤϼΤȤ֤Ƥ

        http://www.m17n.org/mcpp/

    2006/04 ˼ΤȤ˰ܤä

        http://mcpp.sourceforge.net/

    cpp V.2.2 ϥ٥ҤΥȤμΤȤˤ롣dos/prog/c Ȥ
    ǥ쥯ȥƤ뤬MS-DOS ѤǤϤʤ UNIX,
    WIN32/MS-DOS бƤ롣

        http://download.vector.co.jp/pack/dos/prog/c/cpp22src.lzh
        http://download.vector.co.jp/pack/dos/prog/c/cpp22bin.lzh
        http://download.vector.co.jp/pack/dos/prog/c/cpp12tst.lzh

    http://download.vector.co.jp/  ftp://ftp.vector.co.jp/ ǤƱ
    Ǥ롣

    Υ֥եΥƥȥեϡVector ΤΤ
    DOS/Windows Ϥ˹碌ơԥɤ [CR]+[LF] shift-JIS
     encode Ƥ롣SourceForge ΤΤ V.2.5 ޤǤ UNIX Ϥ˹
    Ʋԥɤ [LF] EUC-JP Ǥ롣V.2.6  [CR]+[LF]
    / shift-JIS  zip Ǥ [LF] / EUC-JP  tar.gz ǤΣΥ
    ֥ե֤褦ˤ


ƽϤ˰ܿˡס

  MCPP ΥϣܤΥإåեȣܤ *.c ե뤫ʤäƤ
ϣӤϤ˰¸ʬ configed.H, noconfig.H, system.H,
system.c ΣܤΥˤޤȤƤޤconfiged.H  noconfig.H Ȥ
Ʊ˻Ȥ뤳ȤϤʤɬɤ餫Ȥޤޤ饤֥
ؿΰΣäˤ륽 lib.c ˤޤäơMCPP 򲿤餫
νϤǻȤˤϡ˹碌ƤΥեѹäɬ
פޤ

  MCPP ˤϣ build ޤĤ stand-alone-build ǡ
ϤΩñΤưΤǤ¹Իץʤɤλͤϰǡ
ϰ¸ʬϤޤ󡣤ϥѥ뤵̤ФΤǤñ
ǤˤĤƤ [3.11] ǽҤ٤ޤ
  ⤦ĤϽϤΥץץåؤƻȤ compiler-specific-build
ǤϤȤ˻ͤۤʤޤʲ [3.1] - [3.10] ǤϤ
compiler-specific-build ޤGCC ǡסVisual C ѡɽ
ƤΤϤ٤ơ줾 GCC-specific-build, Visual C-specific-build
ΤȤǤ

  MCPP 򥳥ѥ뤹ˤϣĤˡޤĤ configure 
ץȤ¹Ԥơconfig.h Ȥإåե Makefile ư
ˡǤȤñ make; make install ȤǤߤޤconfiged.H
ȤإåեϤξ˻Ȥޤconfigure  UNIX 
Υƥ CygWIN, MinGW ǤȤޤ
  ⤦ĤϳƽѤκʬեȤäƥإåեѹä
ɬפʤ餵˥إåեԽǡνѤ makefile 
Ȥä make ˡǤnoconfig.H ȤإåեϤξ˻
ޤʬե makefile  noconfig Ȥǥ쥯ȥˤ
Configure λȤ륷ƥǤ⡢إåեľܡԽ뤳Ȥ
٤򤹤뤳ȤǤޤʬեϤǤ˰ܿߤν
ѤΤΤޤ
  ξϤǤϺʬեȤˡˤĤޤConfigure ˤĤ
 INSTALL 򸫤Ƥ

    [3.1]       ܿߤν

  伫ȤưȤΤǤýϤϼΤΤǡΤˤ MCPP 
ܿƤޤʤΥ򥳥ѥǤ줿ץ
åư뤳ȤǧƤޤ CPU  x86 Ϥ
äƤޤ*

    FreeBSD 5.3                 GCC V.3.4.2
    VineLinux 3.2               GCC V.2.95.3, V.3.2, V.3.3.2, V.3.4.3
    openSUSE Linux 10.0         GCC V.4.0.2
    CygWIN 1.3.10               GCC V.2.95.3
    CygWIN 1.5.18               GCC V.3.4.4
    MinGW (MSYS 1.0.11)         GCC V.3.4.5
    WIN32                       Visual C++ 2003, 2005
    WIN32                       Borland C++ V.4.0J, V.5.5J
    WIN32                       LCC-Win32 V.3.2, V.3.8

  νϤ MCPP 򥳥ѥ뤹뤿νϴñǡnoconfig.H
οĤΥޥѹǤ
  noconfig ǥ쥯ȥ *.dif Ȥե FreeBSD 5.3 / GCC 3.4
Ѥ noconfig.H ƽѤ˽뺹ʬեǤVisual C++ 2005
ˤȤȡsrc ǥ쥯ȥ

    patch -c < ..\noconfig\vc2005.dif

Ȥȡޤpatch  UNIX ɸŪʥޥɤǡWindows 
ܿƤޤpatch ȤʤƤ⡢ʬե򸫤ƥǥǽ
Ƥ⤫ޤޤ
  Include ǥ쥯ȥλʤɤϡʬեˤ뽤Ȥ̤ˡ桼
ʬΥƥ˹碌ƽʤФʤޤ
  ƽ򥳥ѥ뤹뤿γƽѤ makefile ź
դƤޤ[3.7] ȡˡ

    copy ..\noconfig\visualc.mak Makefile

Ȥ src ǥ쥯ȥ˥ԡޤ
  ʲκȤ src ǥ쥯ȥǹԤޤȤäǤʤ¤ꡢ
noconfig.H νǤ

  * ΤۤMCPP V.2.2 ޤǤϼΤΤ򥵥ݡȤƤθ塢
    ϤνϤȤʤʤäV.2.3 ǤϥȥɥȤ
    ĤƤV.2.4 ǤϤ

        MS-DOS                          Turbo C V.2.0
        OS-9/6x09 level 2               Microware C

      V.2.5 ǤϼνϤ˴ؤɥȤ

        GO32 / DJGPP V.1.12-M4          GCC V.2.7.1
        MS-DOS                          LSI C-86 V.3.3 

      V.2.6 ǤϾΣĤνϤ򥽡˼ν
    Ϥ˴ؤɥȤȥ

        MS-DOS / Borland C 4.0
        Plan 9 / pcc

        [3.1.1]     ɤνϤǤɬפ

  ʲΤɤνϤǤ⡢compiler-specific-build 뤿ˤϡ

#define COMPILER        STAND_ALONE

ȤʤäƤԤ

#define COMPILER        MSC

ȡνϤɽޥѹޤơ

#define VERSION_MSG     "GCC 3.4"

ȤԤ򼡤Τ褦Ŭ񤭴ޤ

#define VERSION_MSG     "Visual C 2005"

  COMPILER  make ΥץǾ񤭤뤳ȤǤޤ㤨С

    nmake COMPILER=MSC
    nmake COMPILER=MSC install

Ȥޤʬե noconfig.H 񤭴ϡcompiler-
specific-build Τ⤽νѤ˽񤭴ΤǡCOMPILER
Ͻ񤭴ɬפϤޤmake  COMPILER ꤹ compiler-
specific-build 졢ꤷʤ stand-alone-build ޤ

  ޤǥեȤ include directory ꤬ noconfig.H ΤΤȰۤ
ϡ C_INCLUDE_DIR1, C_INCLUDE_DIR2 Ȥޥ˽񤤤Ƥ
ޤC Ȱۤʤ C++ ͭ include directory ϡ
CPLUS_INCLUDE_DIR1, CPLUS_INCLUDE_DIR2, CPLUS_INCLUDE_DIR3 ˽񤭤ޤ
ʤΥǥ쥯ȥϼ¹Ի˴Ķѿ -I ץǻꤹ뤳Ȥ
Ǥˡnoconfig.H ꤹΤϽϸͭ include directory Ǥ
  Include directory ϤΤۤsystem.c ǤꤵƤޤUNIX Ǹ
 system.c ꤵΤϤ OS-specific ʤΡ̾ /usr/
includeˤȤ site-specific ʤΡ̾ /usr/local/includeˤ
Windows Ǥ system.c Ǥ include directory ϲꤵޤ
Windows Ǥ noconfig.H ǤǥեȤǤ include directory ꤵ
ʤΤǡʬǽ񤯤ޤϴĶѿ INCLUDE, CPLUS_INCLUDE ǻꤹ
ɬפޤ
  ޤɬפʤ CPU_STD1, CPU_STD2 Ȥ߹ߥޥ̾ѹ
ޤ

  Multi-byte character  encoding ϥǥեȤǤϡUNIX ϤǤ EUC-JP
Windows Ǥ shift-JIS ȤƤޤɬפʤ MBCHAR Ȥޥ
¾ encoding ѹޤMulti-byte character encoding ϼ¹
˴Ķѿץ#pragma ѹ뤳ȤǤޤ
  ϤˤäƤ shift-JIS  Big5  encoding бƤʤᡢ
multi-byte character  '\\' Ʊ 0x5c ͤΥХȤ
tokenization ǥ顼ˤʤ뤳ȤޤϤǤ MCPP 
üʽ򤷤ƥѥη٤䤤ޤˤĤƤ [4.1.1.5]
򸫤Ƥ
  źդ makefile ˤĤƤϡϤΥХʥ֤Ƥǥ쥯ȥ
ɬפ˱ƽ񤭴ޤ

  GCC V.3, V.4 Ǥϥץץѥ (cc1, cc1plus) ˵ۼ
ޤäΤǡGCC-specific-build  MCPP Ȥˤϡgcc, g++ θƤӽФ
 shell-script ֤ơmcpp => cc1, mcpp => cc1plus νǼ¹
褦ˤʤФʤޤźդ makefile Ǥϡ

    make COMPILER=GNUC
    make COMPILER=GNUC install

Ȥȡ줬ưŪꤵޤܺ٤ˤĤƤϡmcpp-manual.txt [3.
9.7] 򸫤Ƥ

        [3.1.2]     FreeBSD / GCC V.2.*, V.3.*, V.4.*

   FreeBSD 5.3  GCC (GNU C) V.3.4.* ǥѥ뤷 stand-
alone-build  MCPP ֤ˤʤäƤޤFreeBSD 5.3 / GCC V.3.
4.* Ѥ compiler-specific-build ˤϡ

#define COMPILER        STAND_ALONE

ȤʤäƤԤ

#define COMPILER        GNUC

Ȥơѥ뤹ФǤǤ
  GCC ¾ΥСǤСVERSION_MSG Ȥޥ

#define COMPILER_EXT_VAL    "3"
#define COMPILER_EXT2_VAL   "4"
#define COMPILER_CPLUS_VAL  "3"

ȤʤäƤȤΥСֹѹޤCOMPILER_EXT_VAL  GCC
 major version number COMPILER_EXT2_VAL  minor version number 
񤭤ޤCOMPILER_CPLUS_VAL  __GNUG__ ޥͤǡCOMPILER_EXT_VAL
Ʊˤʤޤ

  FreeBSD ΥС 5.* ǤʤС

#define SYSTEM_EXT_VAL  "5"     /* V.4.*: 4, V.5.*: 5   */

ͤѹޤ
   include directory  FreeBSD 5.3 ɸȰäƤϡ

#define CPLUS_INCLUDE_DIR1  "/usr/include/c++/3.4"
#define CPLUS_INCLUDE_DIR2  "/usr/include/c++/3.4/backward"

ȤʤäƤǥ쥯ȥѹޤCPLUS_INCLUDE_DIR3, C_INCLUDE_DIR1
ɬפ⤷ޤ

  GCC V.2.7-2.95 ǤмΥޥ 199409L ѹޤ

#define STDC_VERSION        0L

  ¾ UNIX  OS Ǥ⥳ѥ餬 GCC ǤСΥСɽ䡢
include ǥ쥯ȥꡢϣӸͭȤ߹ߥޥꡢѤ
ǤΤǤϤʤǤ礦[4.1.1] ȡˡ

        [3.1.3]     Linux / GCC V.2.*, V.3.*, V.4.*

  Linux / GCC ǤϤޤ

#define SYSTEM      SYS_FREEBSD



#define SYSTEM      SYS_LINUX

ѹ

#define COMPILER_SP3_VAL    "int"



#define COMPILER_SP3_VAL    "long int"

ѹޤ
  ơFreeBSD ξƱ褦ˡCOMPILER, VERSION_MSG,
COMPILER_EXT_VAL, COMPILER_EXT2_VAL, COMPILER_CPLUS_VAL,
CPLUS_INCLUDE_DIR1, CPLUS_INCLUDE_DIR2, C_INCLUDE_DIR1 Υޥͤ
ѹޤ
  GCC 2.* Ǥ STDC_VERSION ͤѹޤ
  include directory 

    echo '' | gcc -xc -E -v -
    echo '' | g++ -xc++ -E -v -

ȤƳΤƤꤷƤ

  noconfig ǥ쥯ȥ linux_gcc2953.dif, linux_gcc32.dif,
linux_gcc332.dif, linux_gcc343.dif FreeBSD / GCC V.3.4 ѤΥ
VineLinux 3.* / GCC V.2.95.3, V.3.2, V.3.3.2, V.3.4.3 Ѥ˽뺹ʬ
Ǥlinux_gcc402.dif  openSUSE Linux / GCC V.4.0.2 ѤΤΤ
줾 compiler-specific-build ǤϤ COMPILER ѹޤ
Distribution ɸ GCC ɲå󥹥ȡ뤷 GCC Ȥ include
directory ʤۤʤդƤ
  ʤglibc  getopt()  POSIX ɸΤΤȤϻͤۤʤΤǡ
Ȥ鷺ˡlib.c ΤΤȤäƤnoconfig.H  Linux Ǥϥǥե
Ȥ glibc ȤƤȽǤޤ

        [3.1.4]     CygWIN V.1.* / GCC V.2.*, 3.*

  CygWIN V.1.3.10 / GCC V.2.95.3 Ǥ noconfig.H  cyg1310.dif ˤ
ѹäޤCygWIN V.1.5.18 / GCC V.3.4.4 Ǥ cyg1518.dif 
ޤ
   CYGWIN_ROOT_DIRECTORY ȤޥʬδĶ˹碌ƽ
ޤ CygWIN ¸ߤ Windows Υǥ쥯ȥ򼡤η
ΤǤ

    #define CYGWIN_ROOT_DIRECTORY   "c:/pub/compilers/cygwin"

path-list ʸʸϴطޤ

  ¾ version Ǥ⡢VERSION_MSG, CYGWIN_ROOT_DIRECTORY, include
directory Υޥѹ뤳ȤбǤǤ礦

  CygWIN  Windows ΥƥǤUNIX Υե륷ƥबߥ
졼ȤƤΤǡMCPP Ǥ UNIX ϥƥ GCC ȤۤƱͤ˰
Include directories  UNIX ϤƱͤȤ߹ޤޤ

        [3.1.5]     MinGW / GCC V.3.*

  MinGW / GCC V.3.4.5 Ǥ noconfig.H  mingw345.dif Τ褦ѹä
ޤ
   MSYS_ROOT_DIRECTORY, MINGW_DIRECTORY ȤĤΥޥʬ
Ķ˹碌ƽޤϼΤ褦ˡ줾 /, /mingw ǥ쥯
ȥ Windows ΰ֤ΤǤ

    #define MSYS_ROOT_DIRECTORY "C:/Program Files/MSYS/1.0"
    #define MINGW_DIRECTORY     "C:/Program Files/MinGW"

path-list ʸʸϴطޤ
  ¾ version Ǥ⡢Υޥ VERSION_MSG, include directory 
ޥѹ뤳ȤбǤǤ礦Include directory Υޥ
 "C:/dir/mingw/include" ȤХѥǤ⡢"/mingw/include" Ȥ
MinGW Υǥ쥯ȥǤ⤫ޤޤ

  MinGW Ǥ symbolic link ݡȤƤʤΤǡgcc  GCC-
specific-build  MCPP ưΤ symbolic link Ȥޤ󡣤ξ塢
MinGW / gcc ϤȤ cc1 Ȥ̾Ǥ shell-script εưϵݤޤ
ǡMCPP ΥѥǤ cc1.exe Ȥ¹ԥץơ
椫 mcpp,exe ޤ GCC  cc1.exe, cc1plus.exe ƤӽФޤ
Τᡢmake ǤϼΤ褦 mcpp, cc1 ΣĤΥåȤꤹɬפ
ޤ

    make COMPILER=GNUC mcpp cc1

  MinGW  GCC-specific-build Ǥ include directories  MCPP ꤷ
ޤstand-alone-build ǤꤵʤΤǡĶѿ INCLUDE,
CPLUS_INCLUDE ǻꤹɬפޤ

        [3.1.6]     LCC-WIN32 V.3.*

  LCC-WIN32 V.3.2, V.3.8 ǤϤ줾 lcc32.dif, lcc38.dif Τ褦ѹ
äޤ
  ¾ version Ǥ VERSION_MSG ޥѹޤ
  LCC-WIN32  long long ˤϤĤƤϥХäƻȤޤǤ
ʤȤ V.3.2 (2003/08) ʹߤǤϤȻȤ褦ˤʤäƤޤ

        [3.1.7]     Visual C++ 2002, 2003, 2005

  Visual C++ 2005, 2003, 2002 ǤϤ줾 vc2005.dif, vc2003.dif,
vc2002.dif Τ褦ѹäޤcompiler-specific-build 
 COMPILER ޥ񤭴뤫nmake -DCOMPILER=MSC ץǾ
ޤ
  Visual C ¾ΥСǤϡVERSION_MSG ޥѹۤ
_MSC_VER  _MSC_FULL_VER ȤȤ߹ߥޥͤ򤽤줾
COMPILER_EXT_VAL, COMPILER_EXT2_VAL ȤޥѤ뤳Ȥб
ޤ

        [3.1.8]     Borland C++ V.4.*, V.5.*

  Borland C V.4.0, V.5.5 / bcc32 ǤϤ줾 bc40.dif, bc55.dif Τ褦
ѹäޤ
  Borland C/C++ ̤ΥСǤ VERSION_MSG Τۤ__TURBOC__,
__BORLANDC__, __BCPLUSPLUS__ ȤȤ߹ߥޥͤ򤽤줾 noconfig.
H  COMPILER_STD2_VAL, COMPILER_EXT_VAL, COMPILER_CPLUS_VAL Ȥޥ
Ѥ뤳Ȥǡбޤ[4.1.1.1] ȡˡDigraphs μ
ƤСǤСHAVE_DIGRAPHS ѹޤ
__STDC_VERSION__ μƤСǤСSTDC_VERSION 
ѹޤ
  ޤBorland C 4.* ޤǤΥСǤϡ

#define SEARCH_INIT         CURRENT

Ȥޤ

    [3.2]       DECUS cpp бƤ

  PDP-11  RT-11 / DECUS C, RSX / DECUS CVAX  VMS / VAX-11 C
PDP-11 / UNIX, VAX / ULTRIX βΣ (pcc ?) ˤ DECUS cpp б
褦ǤMS-DOS  Microsoft C, Lattice C ΤʤŤǤˤб
Ƥ褦ǤϤˤ⤦פȻפ졢ޤ伫Ȥƥ
󥹤ǤʤΤǡޤ

    [3.3]       noconfig.H, configed.H, system.H

  system.H  HAVE_CONFIG_H Ȥޥ 1 Ƥ configed.
H  include Ǥʤ noconfig.H  include ޤconfiged.H,
noconfig.H ˤ MCPP  PART 1  PART 2 Ȥʬꡢsystem.
H ˤ PART 3 ޤ
  ΥեˤϡƽϤ˰ܿɬפʤĤΥޥ
ƤޤޤܿƤʤϤ˰ܿˤϡPART 1 ˿
ʤԤ­ޤ
  PART 1 ϣϣӤ target Ϥ˰¸ǡPART 2  host Ϥ
¸ PART 3  MCPP ưͤǤ
  configed.H, noconfig.H ǤϥåȽϤȥۥȽϤȤƱǤ
ȲꤷƤޤۤʤ PART 2 Խɬפޤ
  ǥեȤȰ㤦ǰܿϡΥեΤɬ
ܤ̤Ƥ

    [3.4]       system.c

  configed.H (noconfig.H), system.H ΥޥǤϵۼǤʤϣӤ
Ϥκۤϡsystem.c ǵۼƤޤ̤νϤ˰ܿˤϡ
˿ԤΥ­ȤɬפˤʤǤ礦
  Υե˵ҤƤΤϡMCPP ưΥץusage ʸ
include ǥ쥯ȥꡢإåե䥽ե򥪡ץ󤹤Σ
ӸͭΥǥ쥯ȥѥΰ#pragma νϸͭγĥǥ쥯
ƥ֤νǤۤȤɤ target OS  target ϤǤ

    [3.5]       lib.c

  饤֥ؿΤStandard C ˤʤ getopt(), stpcpy() Σäˤ
򤳤˽񤤤ƤޤMCPP  getcwd() ȤUNIX ϤǤ
readlink() ȤޤΣĤ OS ˰¸ؿǤ portable 
񤯤ȤǤʤΤǡlib.c ˤϴޤƤޤ󡣤ΣĤ Standard C
ˤϤޤ󤬡POSIX ǤϵꤵƤޤMCPP λȤؿϤ
ΣĤǤʤϤϤʤǤ礦*
  MCPP V.2.5 ޤǤ fgets(), memmove(), memcmp(), memcpy(), strstr(),
strcspn() ΥѰդƤޤδؿɬפʽϤϤ
ʤȻפΤǡޤ
  饤֥ؿϤ⡢Ϥˤä̯˰㤦Τͤ˰¸
ȤϤƤʤΤǡɤνϤΤΤǤХʤפ

  lib.c  xyz ȤؿȤˤϡnoconfig.H (configed.H)  PART 2
ˤ HOST_HAVE_XYZ Ȥޥ FALSE ޤ

  * MinGW Ǥ˸¤ä spawnv() Ȥ롣

    [3.6]       ɸإå

  MCPP ΥǤ stdio.h, ctype.h, errno.h, stdlib.h, string.h,
stddef.h, time.h ̵ include ƤޤUNIX ϤΥƥǤ
unistd.h  include ޤʤϤϤޤʤǤ礦

    [3.7]       makefile  MCPP Ȥäꥳѥ

  noconfig ǥ쥯ȥˤ *.mak ϸ̤νѤ makefile Ǥ
٤꤬Ǥޤmake ΤΤϳƽϤ°ΤΡޤϤΥ
ƥɸŪʤΤꤷƤޤVisual C Ǥ make ǤϤʤ nmake 
Ȥޤ
  ޤϤ xyz ȤȡFreeBSD / GCC ʳǤ

    patch -c < ../noconfig/xyz.dif

Ȥ noconfig.H ޤˡnoconfig.H  COMPILER 
VERSION_MSG Ȥޥ񤭴ޤ˼ʬΥƥ˹碌
noconfig.H  C_INCLUDE_DIR? ΥޥޤơѤ
noconfig/xyz.mak  Makefile ˥ԡǥ쥯ȥʬΥ
ƥ˹碌ƽǡ

    make
    make install
    make clean

ȤƤ
  ¾νϤǤϡ򻲹ͤɬפ makefile 񤤤Ƥ
ΰ¸طñǡ

    main.c, control.c, eval.c, expand.c, support.c, system.c, mbchar.c
         system.H, internal.H ˰¸
    lib.c  configed.H (noconfig.H) ˰¸
    system.H  configed.H (noconfig.H) ˰¸

ȤطˤʤäƤޤsystem.H  internal.H  include ɬ
פޤ
  åϥƥλȤʬ˼ʬ餤ɬפǤNMACWORK,
NEXP, RESCAN_LIMIT  system.H Ƥޥˡ

    NMACWORK + (NEXP * 30) + (sizeof (int) * 100)
        + (sizeof (char *) * 12 * RESCAN_LIMIT)

  Windows Τ褦˥磻ɥɤ shellʥޥɥץåˤŸ
ƥǤϡMCPP ǤŸʤ褦˥ѥ뤷Ƥۤ
Ǥ-o ץ󤬻ꤵʤ¤ꡢ裲ϥեλȤ
ʤΤǡˡ

  MCPP ȤȤä MCPP ꥳѥ뤹ˤϡϤΥץץå
Τ٤ˤμ¹ԥץ򤪤ޤ㤨 GCC V.2.95 ǤС
° cpp0  cpp0_gnuc ȤǤ rename Ƥλ˻Ȥ
 cpp0 ˥󥯤ΤɤǤ礦ʤȤץץå
mcpp Ȥȡ

    ln -sf mcpp cpp0

ȤޤWindows ǤϻȤΤ cpp32.exe ˥ԡޤ*
  MCPP ¹ԥץ̾

    make NAME=mcpp

Ȥƻꤹ뤳ȤǤޤƱȤ BC make Ǥ make
-DNAME=mcpp Ȥ롣UCB make Ǥ -D դƤդʤƤɤGNU
make Ǥ -D դƤϤʤˡ
  źդ makefile Ǥ freebsd.mak, linux.mak ʳ make install ǤϤ
ޤϤʤΤǡäƤ°Υץץåϡ
make install ǾäƤޤȤΤʤ褦ˡ餫̾Υե
ԡƤƤ
  Visual C, Borland C Τ褦ʣѥѥ MCPP Ȥäƥꥳѥ
뤹ϡMCPP νϥե򥳥ѥͿ륽եȤ
ޤ㤨 main.c ȤץץΤ main.i Ȥä
̾ǽϤơ cl  bcc32 ˥ѥ뤵ˡ

  MCPP Ȥäƥꥳѥ뤹ϡإåե "pre-preprocess"
εǽȤȡץץ֤ṳ̂ޤźդ makefile 
ȤϡUCB make, GNU make, MS nmake Ǥϡ

    make PREPROCESSED=1

BC make Ǥ

    make -DPREPROCESSED=1

ȤȡưŪ˥إåե pre-preprocess ǥץץ
줫饳ѥ뤷ޤLCC-Win32  make Ǥ if ʸˤʬ
ʤΤǡmakefile ƥꥳѥ뤹ɬפޤ
Ƥ makefile ΤΤ˥ȤȤƽ񤤤Ƥޤ

  UCB make, GNU make, MS nmake ǤϡMALLOC=KMMALLOC Ȥץ
դ make ȡ䤬񤤤 malloc() 󥯤ޤˤĤƤ
[4.extra] 򸫤ƤBC make ǤƱȤ -DKMMALLOC Ȥץ
ǻꤷޤLCC-Win32 make ǻ malloc() 󥯤뤿ˤϡ
makefile ɬפޤ

  * FreeBSD Ǥ cpp0, cc1 ֤ɸΥǥ쥯ȥ /usr/libexec Ǥ
    롣
    Linux Ǥ /usr/lib/gcc-lib/i686-redhat-linux/3.3.2 ȤäҤɤ
    ǥ쥯ȥˤʤäƤ롣Linux / GCC Ǥ distribution 䤽
    version ˱ makefile ΤΥǥ쥯ȥλ񤭴ɬפ
    롣Include directory ⤤ΤǡΤʤФʤʤ
    ޤLinux  FreeBSD Ǥ /usr/bin/cpp ȤΤ뤬
    ºݤˤ cpp0 ޤ cc1 ƤӽФgcc  cpp0 ޤ cc1 Ƥӽ
    
    ʤmcpp-manual.txt [3.9.5], [3.9.7] ⻲ȤΤȡGCC 3.*, 4.* 
    ϥץץѥ (cc1, cc1plus) ˵ۼƤޤäΤǡ
    MCPP Ȥˤ gcc, g++ θƤӽФ shell-script ֤ɬ
    롣

    [3.8]       MCPP 򥳥ѥǤ

  ƽϤ˰ܿ뤿ˤϤĤ꤬ɬפǤMCPP Υ
ѥ뤹뤳ȼΤϡC90 (ANSI C) λͤƤϤǤ
нʬǤޤץץåƱͤǤ*
  C++ Ǥ⥳ѥǤޤC++ Ǥ뤫ɤϡ#ifdef __cplusplus
ȽǤƤˡμǥѥ뤷ޤ

  1.  lib.c ʳ *.c  *.cc 뤤 *.cpp  rename 롣
  2.  make 롣MCPP Ȥä "pre-preprocess"  cpp  -+ 
ץդ롣

  źդ *.mak ǤϡϤˤä make  CPLUS=1 ޤ -DCPLUS=1 
ץդƵưޤ
C++ ǥѥ뤷ƤåȤϲ⤢ޤ

  char դǤʤǤ⤫ޤޤ
  ư黻פǤ

  ΥϽϤ̯ʺ˱ƶʤ褦˽񤤤Ƥޤä
⡢ºݤ˳ƽϤǥѥ뤹뤿ˤϡˤνϤΥХ
ɬפޤϤäƤߤʤȲФƤ뤫狼ޤ󡣻䤬
ܿĤνϤǤ⡢ХǤ뤳ȤΤ᤽βˡ򸫤Ĥ
ޤǤˤʤλ֤äƤޤäȤ󤫤ޤ

  * MCPP V.2.5 ޤǤ K&R 1st. νϤǤ⥳ѥǤ褦ˤƤ
    ǤˤɬפϤʤʤäƤȻפΤǡV.2.6  C90
    Ȥ褦˲᤿ȼäƥΥɥ
    Ȥ

    [3.9]       ѥ뤹ϤȥåȤν

  MCPP Υ򥳥ѥ뤹ϡʥۥȡˤȡˤä
 MCPP μ¹ԥץȤϡʥåȡˤȤϡɬƱǤ
ɬפϤޤ󡣤줬äƤϡnoconfig.H (configed.H) 
SYSTEM, COMPILER ǥåȤꤷHOST_SYSTEM, HOST_COMPILER ϥۥ
ȤꤷޤޤPART 1 ˤϥåѤΤΤǡPART 2
ˤΤϥۥѤǤsystem.c ϼȤƥåѤΤΤ
lib.c ϥۥѤǥѥ뤷ޤ

  ۥȤȥåȤδطˤϡΤ褦¤ޤ
  ۥȽϤϥåȽϤƱϣӾΤΤǤ뤫ޤϥ
ѥǤ뤳ȤɬפǤ
  ۥȽϤ long (unsigned long) ϥåȽϤΤ
ϤƤϤޤ󡣤 Standard C ǵꤵƤǤ⤢
C99 Ǥ long long (unsigned long long) ˤĤƱȤޤ

  ʤǸۥȤȥåȤȤΤϡѥΤ
ϴطޤ󡣥ѥ뤹ΤϥѥΤλŻǡץ
åϸ§ȤƤˤϴΤޤMCPP ֥ѥˡ
ܿϡΥѥ餬ǸåȽϤǤ
ȽϤȤƤϥѥǤʤΤȤȤˤʤϤǤ
MCPP ֥ѥǡץѥ뤹ϡΥѥ
ۥȽϤǡѥΥåȤåȽϤȤʤ

  MCPP ǤϡMCPP 򥳥ѥ뤹ۥȽϤʸåȤȤ
ȤåȽϤʸåȤȤϤȤ ASCII ǤȲꤷƤ
ѥΥۥȤȥåȤʸåȤˤĤƤƱͤǤ

    [3.10]      бƤʤ

  MCPP бƤʤΤϡüʸåȤĽϤü CPU 

  EBCDIC ˤбƤޤ
  ޤ黻Ǥʤ CPU ˤ⡢бƤޤ󡣣
ʤϡ#if ǥСեȯˡʤ뤫⤷


    [3.11]      Stand-alone ǤΥѥ

  MCPP ϤΩñΤư stand-alone ǤȤƥѥ뤹
뤳ȤǤޤϥѥ뤵̤ФΤǴñǤStand-
alone Ǥϼ¹Իץʤɤλͤϰǡϰ¸ʬϤޤ
OS ˤ㤬Ǥinclude directory  UNIX Ϥ /usr
/include, /usr/local/include ꤵʤΤǡȤϴĶѿ -I
ץǻꤹɬפޤ*

  configure Ȥ륷ƥ GCC ǥѥ뤹ñ mcpp Υ
ȥǥ쥯ȥ

    ./configure; make; make install

ȤФߤޤξ noconfig.H ǤϤʤ configed.H Ȥإå
ե뤬Ȥޤconfigure ξܺ٤ˤĤƤ INSTALL-jp 򻲾ȤƤ


  configure λȤʤƥǤ MCPP Ǥ˰ܿƤϤǤϡ
noconfig ǥ쥯ȥˤκʬեȤä noconfig.H 
Фߤޤʳѹɬפޤmakefile  noconfig
ǥ쥯ȥˤΤ򥳥ԡƻȤޤ󥹥ȡ뤹ǥ쥯ȥ
 makefile  BINDIR Ȥѿ˽񤭤ޤơsrc ǥ쥯ȥ
make make install ޤ
  MCPP Ǥ˰ܿƤϤȥС󤬾㤦ξϡ
ޤᤤСκʬեŬѤơԽޤ

  MCPP ޤܿƤʤϤǤϡnoconfig.H ԽƿĤΥޥ
񤭴񤭲äꤷƤޤHOST_COMPILER Ŭ
ޤStand-alone ǤǤ COMPILER  STAND_ALONE SYSTEM 
 OS VERSION_MSG ŬޤåȽϤ¸ߤ
ΤǡPART 1 ˤꤹ뤳ȤϤޤ

  PART 2  MCPP 򥳥ѥ뤹ۥȽϤ Standard C λͤɤ
Ƥ뤫ɬפʴؿäƤ뤫ˤäơ꤬äƤޤ
Ǥ㤦Τ long long ȤμǤVisual C 2002, 2003, 2005 
Borland C 5.5 Ǥ __int64 ȤˤʤäƤơͤ printf() 
ɽҤ VC 2005 ʳǤ j  ll ǤϤʤ I64 ʤΤǡLL_FORM
Ȥޥ "I64" ޤMinGW Ǥ long long ޤ
printf() λҤ I64 Ǥ
  stpcpy(), getopt() ȤؿΤʤϤǤϡ줾
HOST_HAVE_STPCPY, HOST_HAVE_GETOPT  FALSE ޤ

  makefile  noconfig ǥ쥯ȥˤΤ򻲹ͤˤƽ񤤤Ƥ
[3.7] ⻲ȤΤȡˡ

  * MCPP V.2.4, V.2.5 Ǥ stand-alone ǤλͤȾüǡϤλ
    ͤбñΤΥץץåǤäV.2.6 ϽϤΩ
    λͤȤ


ƽϤ˰ܿˡܺ١

    [4.1]       noconfig.H, configed.H, system.H 

  Υإåե˵ҤƤ뤳Ȥΰ̣ϡƤɤФ
ȻפޤȤ¿񤭹ǤޤǰΤ˰ʲ
񤤤Ƥޤ
   PART 1, PART 2  noconfig.H (configed.H) ˤꡢPART 3 
system.H ˤޤ

  ޤåȥƥMCPP ܿ륷ƥˤȥۥȥƥ
MCPP 򥳥ѥ뤹륷ƥˤꤷޤ

SYSTEM
    åȽϤưϣӤꤷޤϣӤ̾Ϥľ
    Ƥޤ̾ƤʤϣӤŬƤ
COMPILER
    åȽϤꤷޤѥ̾Ϥľ
    ޤ̾ƤʤѥŬƤ
    COMPILER  STAND_ALONE ȡåȽϤ¸ߤʤ
    stand-alone Ǥ MCPP ޤξ PART 1 ¿
    ̵뤵ޤ
VERSION_MSG
    -v ץ usage() ʸɽ뤿ΥۥȽϤΥС
    ʸƥǽ񤭤ޤ
HOST_SYSTEM, HOST_COMPILER
    ۥȣϣӡۥȽϤꤷޤåȤƱϡ

    #define HOST_SYSTEM     SYSTEM
    #define HOST_COMPILER   COMPILER

    ȤƤޤ

  SYSTEM, COMPILER ̿̾ˤϰε§ޤ򸫤ۤ
狼䤹Ǥ礦ġˤʤäƤޤSYSTEM ϥ
롼ɥեΥѥꥹȤηϣɸΥ󥯥롼ɥǥ쥯ȥ
Τ뤿ˤȤƤʤΤǡޤͤɬפϤޤ

    [4.1.1]     PART 1  åȥƥ

        [4.1.1.1]   ޥ

CPU_OLD, CPU_STD1, CPU_STD2, SYSTEM_OLD, SYSTEM_STD1, SYSTEM_STD2,
SYSTEM_EXT, SYSTEM_EXT2, COMPILER_OLD, COMPILER_STD1, COMPILER_STD2,
COMPILER_EXT, COMPILER_EXT2
    MCPP  pre-define ϸͭΥޥ̾ʸƥǻ
    ꤷޤפʤΤʤǤޤ0 ĤΥȡ
    Ϥʤˡ*_OLD Τ '_' (underline) ǻϤޤʤ
    ήΥޥǡ MCPP ¹Ի -S <n> ץ <n> 
    1 ʾꤹ pre-define ޤ*_STD?, *_EXT, *_EXT2 Ǥ
    ɬ _ ǻϤޤޥ̾ꤷޤ*_STD1  __ ǻϤޤΤǡ*
    _STD2  __ ǻϤޤä __ ǽΤǤSYSTEM_EXT, SYSTEM_EXT2,
    COMPILER_STD1, COMPILER_STD2, COMPILER_EXT, COMPILER_EXT2 ǤϤΥ
    ͤ SYSTEM_EXT_VAL, SYSTEM_EXT2_VAL, COMPILER_STD1_VAL,
    COMPILER_STD2_VAL, COMPILER_EXT_VAL, COMPILER_EXT2_VAL ǻꤷޤ
     "" ǰϤʸƥǻꤷޤ0 ĤΥȡ
    Ÿޥ "" ޤꤵʤСΥޥ
     1 ˤʤޤ¾ predefined ޥCPU_*, SYSTEM_OLD,
    SYSTEM_STD1, SYSTEM_STD2, COMPILER_OLD ǻꤵΡˤϤ٤ 1
    ͤޤ
CPU_SP_OLD, CPU_SP_STD
    ϸͭüʻޥ̾ʸƥǽ񤭤ޤ
    Ϥ٤ 1 Ȥʤޤ
SYSTEM_SP_OLD, SYSTEM_SP_STD
    ϸͭüʻޥ̾ʸƥǽ񤭡
     SYSTEM_SP_OLD_VAL, SYSTEM_SP_STD_VAL ޤ
COMPILER_SP1, COMPILER_SP2, COMPILER_SP3
    ϸͭüʻޥ̾ʸƥǽ񤭡
     COMPILER_SP1_VAL, COMPILER_SP2_VAL, COMPILER_SP3_VAL ޤ
COMPILER_CPLUS, COMPILER_CPLUS_VAL
    -+ ץC++ ץץˤꤷϸͭ
    λޥ̾Ȥͤ嵭Ʊ褦ʸƥǻ
    ޤCOMPILER_CPLUS_VAL ꤷʤȡΥޥͤ 1 ˤʤ
    ޤ̾ '_' ǻϤޤΤǤʤФʤޤɬפʤ
    COMPILER_CPLUS ΤΤʤǤޤ

  Τۤ¹Իץ˱ system.c ޥ
⤢ޤGCC V.3.3 ʹߤǤ̤λޥΤǡ
Ȥ̤ mcpp_g*.h Ȥ̾ΣܤѤΥإåե뤬 MCPP Υ
󥹥ȡ˼ưŪޤ
  ʾǻ줿ޥϤ٤ -N ץ̵Ȥʤޤ

        [4.1.1.2]   Include ǥ쥯ȥ

C_INCLUDE_DIR1, C_INCLUDE_DIR2, CPLUS_INCLUDE_DIR1, CPLUS_INCLUDE_DIR2,
CPLUS_INCLUDE_DIR3
    MCPP ǥɸإåե include directory ꤷޤ
    CPLUS_INCLUDE_DIR?  C++  include directory äΤΤȰäƤ
    ˡꤷޤMCPP ư -+ ץꤹ뤳
    ȤͭȤʤˡUNIX  /usr/include, /usr/local/include 
    system.c ꤵΤǡC_INCLUDE_DIR? ˤϤʳνϸͭ
    Τꤷޤ
ENV_C_INCLUDE_DIR, ENV_CPLUS_INCLUDE_DIR
    MCPP ǥɸإåե include directory ¹Ի˴
    ѿǻꤹΤˡδĶѿ̾ޤ
    ENV_CPLUS_INCLUDE_DIR  C++  include directory ꤹĶѿ
    ̾ǤǥեȤǤϤ줾 "INCLUDE", "CPLUS_INCLUDE" 
    ޤGCC-specific-build Ǥ "C_INCLUDE_PATH",
    "CPLUS_INCLUDE_PATH" ǥեȤǤ
    ѥϤγsystem.c ꤵΡ-I ץꤵ
    Τޤʤ̤ͥˤĤƤ mcpp-manual.txt [4.2]
    򻲾ȡˡ
ENV_SEP
    δĶѿʣΥѥ񤯻 separator ʸǽ񤭤ޤ
    /usr/local/abc/include:/usr/local/xyz/include Ƚ񤯻 ':' 
    C:BC55/INCLUDE;C:BC55/LOCAL/INCLUDE Ƚ񤯻 ';' Ǥ
SEARCH_INIT
    åȽϤ include ե򥵡Υ롼񤭤ޤ
    #include "../dir/header.h" Ȥäǥ쥯ƥ֤ˡ
    include ǥ쥯ȥ򥵡ˤɤΥǥ쥯ȥ򥵡Τ
    Ȥ롼Ǥȥǥ쥯ȥ꤫Хѥ򥵡
    ϤǤ CURRENT Ȥեinclude ˤΤǥ쥯ȥ
    Хѥ򥵡ϤǤ SOURCE ȤޤξԤȹ
    碌Ǥ (CURRENT & SOURCE) Ȥޤ

        [4.1.1.3]   ֹνϷ¾

LINE_PREFIX
    MCPP  compiler-proper ˥ե̾ȹֹ
    ޤ

    #line 123 "fname"

    ȤäΥηǥեȤȤʤäƤޤ¾ηȤ
    ϤǤϡ "#line " ʬ֤ sequence ʸƥ
    ǽ񤤤Ƥޤ

    # 123 "fname"

    Ȥʤ "# " ɤǤʤȼηʤ餽˹
    ޤʾˤäƤ main.c  sharp() ˽­ʤ
    Фʤʤ⤷ʤˡ
    Visual C++ .net  Borland C Τ褦ʣѥѥʤ MCPP
    ȤϡȤ߹ߥץץå˽ϤϤȤˤʤΤǡMCPP
    νϤϣäΥˤʤäƤʤФʤޤ󡣤äơֹ
    ϤϣܤηǤʤФʤޤ

EMFILE
    <errno.h>  too many open files (for the process) ̣ errno
    ͤɽޥ EMFILE ǤʤϡEMFILE 򤽤Υޥ̾
    ޤʤ<errno.h> Τ˽񤭲äƤ⤫ޤʤˡ
ONE_PASS
    åȽϤץץåʬΥƤʤ֥ѥ
    ѥפǤФ TRUE ˡǤʤ FALSE 
     TRUE Ȥȡ#pragma MCPP put_defines (#put_defines) 
    ϡϤλޥϤ٤ƥȤǰϤǽϤޤ
    ѥǤ MCPP νϤ򤳤ͿȺ٥ץץ뤳
    ȤˤʤΤǡ򤱤뤿Ǥ
    GCC V.3, V.4 ϥѥѥȤޤΩ
    ץåȤȤǤΤǡΥޥ FALSE ȤƤ
    
FNAME_FOLD
    Windows Τ褦˥ե̾ʸȾʸ̤ʤϣӤǤϤ
     TRUE Ǥʤ FALSE Ȥޤ

        [4.1.1.4]   Ϥθͤ˱

EXPAND_PRAGMA
    #pragma Ԥΰ STDC ʳǤХޥŸоݤȤʤϤǤϡ
     TRUE ޤǥեȤǤ FALSE ȤƤޤVisual
    C Ǥ #pragma ԤΰϾ˥ޥŸоݤȤʤΤǡ TRUE
    ȤޤC99 Ǥ #pragma ΰޥŸоݤȤʤ뤫ɤ
    implementation-defined ǡC90 ǤϥޥŸʤΤʤΤ
    MCPP  Visual C Ѥ˸¤äƤ C99 ǤʤƤޥŸ
    оݤȤޤʰ STDC ޤ MCPP ǻϤޤʤ¤ˡ

HAVE_DIGRAPHS
    Digraphs Ƥ TRUEǤʤ FALSE Ȥ
    ޤ
STDC
    åȽϤλޥ __STDC__ Υǥեͤޤ
    __STDC__ Ƥʤ 0 Ȥޤ
STDC_VERSION
    åȽϤλޥ __STDC_VERSION__ Υǥեͤ
    ޤ__STDC_VERSION__ Ƥʤ 0L Ȥޤ

CHARBIT, UCHARMAX, LONGMAX, ULONGMAX
    åȽϤ <limits.h>  CHAR_BIT, UCHAR_MAX, LONG_MAX,
    ULONG_MAX ͤ񤭤ޤ<limits.h> ʤƤϴñǤ

        [4.1.1.5]   Multi-byte character

  MBCHAR Ȥޥ multi-byte character  encoding ꤹ
ǤMCPP Ǥϲο encoding ٤Ʊ˼ޤMBCHAR
ϥǥեȤ encoding ꤹǡ¹Ի encoding Ķѿ
ץ#pragma ѹ뤳ȤǤޤʻȤˤĤƤ mcpp-
manual.txt  [2.3], [2.8], [3.4] 򻲾ȡˡ

MBCHAR
    åȤ multi-byte characterܸǤϴˤ encoding μ
    ޤ

        EUC_JP  :   ܤ extended UNIX code (UJIS)
        SJIS    :   ܤ shift-JIS (MS-Kanji)
        GB2312  :    EUC-like  GB-2312ʴλ
        BIGFIVE :   Ѥ Big5λ
        KSC5601 :   ڹ EUC-like  KSC-5601 (KSX 1001)
        ISO2022_JP  :   ISO-2022-JP1 Ȥݵʤܸ
        UTF8    :   unicode  encoding ΣǤ UTF-8

    ΣĤϤ shift-states ʤʸХȤ
     encoding Ǥʤmulti-byte character, wide character 
    encoding ХȤǤˤ⤫餺wchar_t ХȤηˤ
    äƤϤ⤢ޤץץå wchar_t ηˤϴΤ
    ޤ󡣥Ǥ multi-byte character  wide character Х
    ȤƤΤǡ˽äƽ򤷤ޤ
    ISO-2022-*  shift-states  encoding ǤUTF-8 ϣХȤ
    unicode 򣱥ХȤʤХȤ encode ΤǤϣХ
    Ȥˤʤޤ
    MBCHAR  0 硢multi-byte character ν򤷤ʤΤ
    ǥեȤλͤˤʤǡĶѿץ#pragma Ǽ¹Ի
    ѹޤ

SJIS_IS_ESCAPE_FREE
    ѥΤ shift-JIS ν򤹤 TRUE Ȥʤ
     FALSE Ȥޤ
    Shift-JIS ǤϴΣХܤ '\\' Ʊ 0x5c ͤˤʤ뤳Ȥ
    ޤѥΤ shift-JIS ǧʤϡ escape
    sequence ȲᤷƤޤtokenization ǥ顼ˤʤޤ
    SJIS_IS_ESCAPE_FREE  FALSE ȤȡMCPP 䤤ޤʤ
    ǽϤλˡʸƥޤʸ shift-JIS 
    裲ХȤ 0x5c Ǥäϡ 0x5c ΥХȤ⤦
    äޤˤäơѸǤΥѥ shift-JIS б
    뤳ȤǤޤ
BIGFIVE_IS_ESCAPE_FREE
    ƱͤˡѥΤ Big 5 ν򤹤Ϥ TRUE Ȥ
    ʤ FALSE Ȥޤ
IS02022_JP_IS_ESCAPE_FREE
    ƱͤˡѥΤ ISO-2022-JP ν򤹤Ϥ TRUE
    Ȥʤ FALSE ȤޤIS0-2022-* Ǥ '\\' ФǤʤ
    '\''  '"' ȰפХȤиޤISO2022_JP_IS_ESCAPE_FREE
     FALSE ξ MCPP ϡ'\\', '\'', '"' ȰפХȤľ
    ٤ 0x5c ΥХȤ򣱤ޤ

  ʤmulti-byte character ˴ؤ륳ѥưϼ¹ԤδĶ
ˤäѤ礬ޤʬλȤĶ˹碌ꤷƤ
ˤĤƤϡmcpp-manual.txt  [2.8] ⻲ȤƤ

        [4.1.1.6]   åȤȥۥȤ˶̤

  ΣĤص塢PART 2 ˽񤤤ƤޤåȽϤȥۥ
Ϥηľ TRUE ȤǤʤ FALSE 
ޤ

HAVE_LONG_LONG
    long long ȤǡĽϤǤϤ TRUE Ȥޤ
    Visual C  Borland C 5.5 Τ褦ˡlong long Ϥʤ __int64 Ȥ
    Ʊη printf() ɽ뤿 length modifier 
    ѰդƤϡ TRUE Ȥޤ
HAVE_INTMAX_T
    intmax_t ȤǡƤФ TRUE Ȥޤ

LL_FORM
    νϤ long long äƤϡۥȽϤκ
    ͤ printf() ɽ뤿 length modifier ʸƥ
    ޤC99 Ǥ "j" ǤޤC99 Ǥ long long 
    length modifier  "ll" (ell-ell) ǤVisual C  2003 ޤǤ
    Borland C 5.5 Ǥ __int64 ͤɽ "I64" ȤޤMinGW 
     "I64" Ǥ

        [4.1.2]     PART 2  ۥȥƥ

  noconfig.H, configed.H ǤϥåȽϤȥۥȽϤȤƱǤ
ȲꤷƤޤۤʤ PART 2 ľɬפޤ

HOST_HAVE_GETOPT, HOST_HAVE_STPCPY
    ۥȽϤΥ饤֥ getopt(), stpcpy() Ф줾 TRUE
    ˡʤ FALSE ޤFALSE Ȥ줿ؿˤ lib.c Τ
    Ȥޤ
FILENAMEMAX
    ۥȽϤ <stdio.h>  FILENAME_MAX ͤǤFILENAME_MAX 
     BUFSIZ ȤƤƤޤޤ

  PART 1 ˤۥȤȥåȤƱȲꤷƤʬΤǡɬ
ʤ餽񤭴ޤ㤨мΤ褦˥ۥȽϤλޥ
äƤԤǤ

    #if _MSC_VER >= 1200

        [4.1.3]     PART 3  MCPP ưͤ

            [4.1.3.1]   Ƽư⡼

  system.H Ǥ MCPP ưͤꤹޥƤޤ

  MCPP ˤ mode Ȥѿꡢ줬ޥŸˡȤǥ
ƥ֡Ȥ predefined ޥץץåκȤʤưλ
ͤƤޤmode ͤˤ OLD_PREP, KR, STD, POST_STD Σ郎
ޤ
  MCPP ư⡼ɤϼ¹ԻץǻꤵޤMCPP 򥳥ѥ뤹
ˤϡΣĤΥޥˤĤƤϲꤹ뤳ȤϤޤ󡣤
ƼԤˤϣĤưͤΰ㤤򤹤뤳Ȥ
ɬפǤ

OLD_PREP
     "Reiser" model cpp ưͤǤ
KR
    C90  K&R 1st. ΥץץͤǤ
STD
     (C90, C99, C++98) ΥץץͤǤ
POST_STD
    ɮԤ˺äץץͤǡʤμӤʤ
    ñ㲽ΤǤ

  Ǥ KR  OLD_PREP 碌 pre-Standard ⡼ɡSTD 
POST_STD 碌 Standard ⡼ɤȸƤ֤Ȥˤޤƥ⡼ɤλͤ
ܺ٤ˤĤƤ mcpp-manual.txt [2.1] 򻲾ȤƤ

            [4.1.3.2]   ư⡼ɤκλ

CPLUS
    -+ ץ C++ ΥץץåȤưˡɸȤ߹
    ߥޥ __cplusplus ͤ˻ޤC++98 Ǥ 199711L
    Ǥ-V ץˤäƼ¹ԻѹǤޤ
TFLAG_INIT
    STD ⡼ɤǤ trigraph ν֤ꤷޤ-3 ץ
    ξ֤ȿžޤ TRUE ˤȡdefault  trigraph 
    ǧ졢-3 ץǵưǧޤFALSE ξϵդ
    default ǧ-3 ץǧ褦ˤʤޤ
DIGRAPHS_INIT
    Standard ⡼ɤǤ digraph ν֤ꤷޤ-2 ץ
    Ϥξ֤ȿžޤ TRUE ˤȡdefault  digraph
    ǧ졢-2 ץǵưǧޤFALSE ξϵ
     default ǧ-2 ץǧ褦ˤʤޤ
    HAVE_DIGRAPHS == FALSE νϤξ硢digraphs  MCPP ̾Υȡ
    Ѵޤ
OK_UCN
    STD ⡼  -V199901L ޤ -+ ץꤷ UCN
    (universal-character-name) ͭˤˤϡ TRUE 
    ǥեȤǤ TRUE ȤƤޤ
OK_MBIDENT
    STD ⡼  -V199901L ץꤷȤ identifier 
    multi-byte character Ȥ褦ˤˤϡ TRUE 
    ǥեȤǤ FALSE ȤƤޤ
DOLLAR_IN_NAME
     TRUE ˤȡ̻ $ Ȥ褦ˤʤޤ

expr_t, uexpr_t
    Ǥ礭η typedef ޤintmax_t, uintmax_t Ȥ
    ФˡǤʤ long long, unsigned long long 
    ĽϤǤϤˡǤʤ __int64, unsigned __int64 Ľ
    ϤǤϤˡǤʤ long, unsigned long ޤ
EXPR_MAX
    uexpr_t κͤޤ

  * UCN  C++, C99 λͤǡUnicode ʸͤ \u ޤ \U ǻϤޤ
     escape sequence ɽΤǤmcpp-manual.txt [3.7],
    cpp-test.txt [1.8], [3.5] ȡˡ

        [4.1.3.3]   Translation limits λ

RESCAN_LIMIT
    Standard ⡼ɤǤΥޥŸκθ٤ޤ
    Standard ⡼ ǤϺϾʤΤǡޤ礭ͤꤹ
    ɬפϤޤ
PRESTD_RESCAN_LIMIT
    pre-Standard ⡼ɤǤΥޥŸκθ٤ޤ
    pre-Standard ⡼ ǤϺƵŪʥޥŸˤä̵¥롼פȯ
    ޤ줬ΥߥåȤˤҤäޤ
NBUFF
    ԡʥʪԤι \ ä³ԡˤκĹ +1 
    ޤȤ a space ѴιԡʥȤˤäʣ
    Ԥˤޤ뤳Ȥ⤢ꤦˤ⤳ĹˤޤäƤʤ
    ʤޤ
NMACWORK
    ޥŸŪʥХåեΥޤʤĤ
    ΥޥŸ̡ʥޥƤӽФʣԤˤޤϡ
    Ÿ̡ˤϤΥˤޤäƤʤФʤޤ󡣤
    ϤޤĤΥޥִꥹȤŪ˵ݤκĹ
    ƤȤޤ
NWORK
    MCPP νϤĹޤ compiler-proper μ
    Ĺ+1 ۤƤϤޤ󡣤ޤNBUFF, NMACWORK ͤ
    Ƥ⤤ޤNWORK < NMACWORK ξ硢ޥŸιĹ
    ۤϡMCPP ʲιĹʬ䤷ƽϤޤʸ
    Ĺ NWORK-2 ϰϤ˼ޤäƤʤФʤޤʸ
    ƥĹȤΤϡchar ǿΤȤǤϤʤ
    ʸƥȤȡĹǤ롣ξü " ޤߡ\n 
    ХȤȿ롣磻ʸƥǤƬ L ޤˡ
IDMAX
    ̻ҤκĹޤĹ̾⥨顼ˤϤʤޤ󤬡
    Ĺڤͤޤ
NMACPARS
    ؿͥޥΰκޤ UCHARMAX 礭
    ϤǤޤ
NEXP
    #if ԤμΥåǤͥȥ٥θ٤ޤ
    ͥȥ٥뤬ľܷޤ櫓ǤϤʤΤˤϡȡ
    οΣܡ黻ҥȡοΣܤޤǻȤ롣ä
    ФǣĤȿˡ
BLK_NEST
    #if (#ifdef, #ifndef) section Υͥȥ٥θ١#if, etc. 
    ˥ͥȤǤ뤫ˤޤ
INCLUDE_NEST
    #include Υͥȥ٥θ٤ޤ#include ̵ºƵ
    å뤿ΤΤǤƱ˥ץǤեο˴ؤ OS
    ¤ĶƤƤ⤫ޤޤ
NINCLUDE
     include directory κޤ
SBSIZE
    ޥŪ hash ʬषƵݤ hash table ǿ
    ޤɬΥ٥ǤʤФʤޤ󡣥ޥο꾮
    ưˤޤ礭ۤϤ®ʤޤ

  줾礭ͤˤۤɻͤϾˤʤޤNWORK, NBUFF,
NMACWORK, SBSIZE 礭Ȥ礭ʥ򿩤ޤºݤΥ
ϥޥ̤ˤäƤƤ椭ޤʤ줾Υޥ
Ĺˤäɬץ꤬ޤ롣ޥŪʷ internal.H 
struct defbuf ˽񤤤Ƥˡ
  NMACWORK, NEXP, RESCAN_LIMIT ϥå񤷤ޤ
  ¾ΤΤϥϤۤɬפȤޤ󤬡system.H ΥǥեȤͰ
ˤƤѾΰ̣ϤۤȤɤʤǤ礦
  C90, C99 ׵᤹ translation limits κ٤ system.H κǸ
ۤ˽񤤤ƤޤC++98  translation limits 񤤤Ƥޤ
ϣäȰۤʤꡢ׵ͤǤϤޤ

    [4.2]       system.c

  ȤƥåȽϤ˴ؤ뤤ĤƤޤ

PATH_DELIM
    ϣӤ path-delimiter ƤޤPATH_DELIM  \ ȤƤϤ
    ޤʥץΤĤǡˡWindows Ǥ / ȤƤޤ桼
    ץǤϤ \ ȤޤŪˤ / Ѵ
    
OBJEXT
    Ϥ뤤륪֥ȥեҤʸƥ
    ޤUNIX νϤ "o"Windows νϤ "obj" 
     -M* ץꤷ makefile Ѱ¸طԤν
    ˻ȤΤǤ

do_options()
    MCPP ưΥץƤޤޤܿƤʤ
    Ϥ˰ܿˤϡν°Υѥɥ饤Ф˹碌ơ
    ˲Ԥ­ȤɬפǤ礦do_options() ɲäϡ
    бƼ set_opt_list(), usage() ˤ­ޤ
    do_options()  getopt() ƤӽФޤΤᡢĤΥץ
    ʸϰʤΤɤ餫˷ʤФʤޤ-P  -P-
    ȤäץλȤϸ§ȤƤǤޤʤ°
    ΥץץåȤθߴΤɬפʾϡ̵Ǥʤ
    -M ץμ򻲾ȡˡޤ-trigraphs ȤäĹץ
     t 򥪥ץʸȤ rigraphs Ȥ뤳ȤǼ
    ޤ
set_opt_list()
    MCPP Υץʸꤷޤ
usage()
    Usage ʸ񤫤Ƥޤ⡼ɤȤΥץ󤬥ե٥åȽ
    ¤٤Ƥޤ
set_sys_dirs()
    Include directory ꤷƤޤnoconfig.H (configed.H) Υޥ
    C_INCLUDE_DIR?, CPLUS_INCLUDE_DIR? ǻꤵ줿ϸͭΥǥ쥯
    ȥΤۤUNIX ϣϣӤǤ /usr/include, /usr/local/include ⤳
    ꤷƤޤnoconfig.H, configed.H Υޥ ENV_C_INCLUDE_DIR,
    ENV_CPLUS_INCLUDE_DIR 줿̾δĶѿˤ include
    directory  set_env_dirs() ꤵˡ

do_pragma()
    #pragma νƤޤMCPP Ȥʤ #pragma sub-
    directive ϤΤޤ޽Ϥ compiler-proper ϤޤMCPP Ȥ
     #pragma MCPP debug ϤƤӽФؿǽޤ
    MCPP Ȥ #pragma sub-directive ϸ§Ȥ MCPP Ȥ̾
    ǻϤޤ褦ˤƤޤMCPP ǻϤޤ #pragma ԤΤΤϽϤ
    ޤ󡣤ޤ #pragma once Ϥޤ󡣤#pragma
    __setlocale ԤϽϤޤʤǤϽϸͭγĥ directive  #
    pragma sub-directive ȤƼ뤳ȤˤʤäƤޤ
do_old()
    ʤ˹פʤ preprocessing directive #pragma sub-directive 
    ʤ #assert, #asm, #endasm, #include_next, #warning, #put_defines,
    #debug ˤɬפʾϡν򤹤ؿ­ǡ
    餽ƤӽФ褦ˤޤʤGCC ѤǤ #include_next,
    #warning  STD ⡼ ǤȤ褦ˤƤˡ

    [4.3]       lib.c

  ϤˤäƤϻäƤʤ⤷ʤ뤤ϤäƤͤ
饤֥ؿΥ˽񤤤Ƥޤ줾졢#if !
HOST_HAVE_XYZ  #endif ǰϤǤΤǡHOST_HAVE_XYZ == FALSE λ
 XYZ ؿȤޤ

    [4.extra]   malloc()

  kmmalloc -- ǥХåǽ malloc()פȤΤϡ䤬äǽ񤤤
malloc(), free(), realloc(), calloc()  portable ʥǤϥ
ΨȤȤˡǥХåΤĤͤƽ񤤤Ƥޤǥ
åѤΥ롼źդƤޤ󥯤Ƥȡפ̥Х
ҤääƤ뤳Ȥޤ*1, *2
  noconfig/*.mak  -DKMMALLOC -D_MEM_DEBUG -DXMALLOC Ȥץ
ͿƤΤϡλ malloc() ȥǥХå롼󥯤뤿
ΤǤ󥯤 MCPP EFREEP, EFREEBLK, EALLOCBLK, EFREEWRT,
ETRAILWRT Ȥ顼ֹ exit 뤳ȤС MCPP 
Х̣ޤ
  Visual C  malloc() Ϥʤ٤Τǡʤ٤ kmmalloc Ȥ
Ǥ*2
  BSD_MALLOC, DB_MALLOC, MALLOC_DBG ȤޥΤɤ줫 1 
MCPP 򥳥ѥ뤹ȡ malloc() Ȥ̤Τ줾ǥХåǽ
ä malloc() ȤޤˤƤ⡢°ΤΤǤϤʤ
malloc() Ȥˤϡѥ뤹˥饤֥äƤʤФ
ޤ󡣤ˤĤƤ kmmalloc ΥɥȤ򸫤Ƥ

  *1 kmmalloc ϼΤȤˤ롣
        http://download.vector.co.jp/pack/dos/prog/c/kmmalloc-2.5.1.lzh
  *2 CygWIN Ǥϥ饤֥ȤΩƤ¾ malloc() Ȥʤ褦ˤʤ
    ƤΤǡ malloc() ϻȤäƤʤVisual C 2005 ǤƱͤǤ
    롣


ХȰܿ𡡡

    [5.1]       Хɤ

  ץץ Standard C Ŭ򸡾ڤ뤿 Validation Suite 
MCPP Ȥä˸ƤޤStandard C ΥץץΤ٤Ƥε
򸡾ڤǤΤˤĤǤMCPP ϤȤäƥå
Ƥޤ⡢嵭Τ٤ƤνϤǥѥ뤷ƥåƤ
ޤäơХͤϤۤȤɤʤȻפޤޤ
ĤĤäƤ붲⤢ޤޤܿƤʤϤ˿ܿ
ϡϤΥХˤҤäǽ⤢ޤ
  ⤷ԲĲưȯ줿顢Ҥ𤯤κݤˤϡ
Υå򤪴ꤤޤ

  STD ⡼ɤξ硢ʬ Standard C Τ뤿ᡢޤ
Validation Suite ȤäƤߤ롣GCC / testsuite λȤ륷ƥǤϡ
ץդ configure  make check ǼưƥȤǤ롣
  ʬ MCPP ΰܿ˴ְ㤤ϤʤɤɥȤΤ롣
  ХƸ륵ץ륽Ф롣
  ХФʬ #pragma MCPP debug <args>  #pragma MCPP
end_debug ǤϤ MCPP ưȥ졼Ƥߤ롣 <args> 򤵤
䤷Ƥܺ٤˥ȥ졼Ƥߤ롣

  ⤷"Bug: ..." ȤǥåФ顢ϴְ㤤ʤ MCPP
ޤϽϤΡʤ֤ MCPP Ρ˥ХǤޤȤ㤯ʡ֥
פǤ⡢򿩤碌뤳Ȥ MCPP ˽ʤ顢ХǤ
  Standard C ⡼ɰʳΥ⡼ɤ MCPP  Validation Suite 
ϡְִ㤤פ餱ư򤷤ޤϻͤǤʤǤ˽Ϥʤ
Ϥˡɤͤ [4.1.3] 򸫤Ƥ

    [5.2]       malloc() ϢΥХå

  䤬񤤤 kmmalloc Ȥ malloc() Υ饤֥꤬ޤ[4.extra]
ȡˡ
  ⤷Τ malloc() 󥯤 MCPP  120  124ʽϤ
äƤ 2120  2124ˤΥ顼ֹ exit 뤳ȤС
ϴְ㤤ʤ MCPP ޤϽϤΡʤ֤饤֥ؿΡ˥ХǤ
  ޤƥȤ˻Ȥץ륽Τɤ

    #pragma MCPP debug memory

Ƚ񤤤ƤȡθĽꤪӽλ˥ҡץ˴ؤ󤬽Ϥ
ޤ Heap error: ... ȤåФ뤳ȤС
ְ㤤ʤ MCPP ޤϽϤΥХǤ
  ΥХȯ줿顢ץ륽γʬ #if 0  #endif
ǤϤǥƥȤ򷫤֤ХȯʬʤǤߤƤ

    [5.3]       Х

  ХˤϼΤ褦ʥǡդƤ褦ꤤޤ

  MCPP ܿϡ
  ܿˡnoconfig.H ˡ
  ХȻפΤƸǤ륵ץ륽
  ν̡

    [5.4]       ܿ

  MCPP ϤۤȤɤνϤŪñ˰ܿǤ褦˽񤤤ƤĤ
Ǥ䤬äƤϤϾǤ¾νϤؤΰܿǤϥ
ν­ɬפʤϤǤνϤؤΰܿԤƤ
ޤ򥽡˥եɥХåƤȻפޤ
  ܿϼΤ褦ʷǤꤤޤ

  ϡ
  noconfig.H (configed.H), system.H, system.c ꡣʤ٤ꥸ
ʥȤκʬե뤬ɤñʤΤʤǤġ

  ܿǤɤΤˤϡcompiler-specific-build Ǥϡ
ޤץץåؤơإåե "pre-preprocess" εǽ
ȤäƼʬȤꥳѥ뤷ƤߤΤüᤤǤ礦
   Validation Suite  STD ⡼ɤΥå򤷤ޤ
եο¿ΤǡǥХå򷫤֤ˤϼ֤ꤹޤ
ХåϤޤn_std.c 򥳥ѥ뤷ơ˥ѥ롦¹Ԥ뤫
ɤ򸫤ޤ°Υѥɥ饤ФǤ MCPP ϤˡΤʤ
ץ⤢ޤˤĤƤ mcpp-manual.txt  [2.1] 򸫤Ƥ
 MCPP ̤Ƥ饳ѥ뤹⤢ޤ
  ⤷줬ޤʤϡ n_std.t ȤץȤäơɤ
Τܤǥåޤ줬ޤä顢e_std.t, m_*.t,
unspcs.t, warns.t, misc.t åޤ"post-Standard" ⡼ɤǤ
n_post.t, e_post.t Ȥޤ
   cpp -QCz23 Ȥץդƽޤpost-Standard
⡼ɤǤ -3 ԲġˡSTDC == 0 ǥѥ뤷Ƥ -S1 -V199409L
ץդޤ-C ץǥȤϤΤǡ
̤꤫ɤ狼ޤ
  -Q ץǿǥå mcpp.err Ȥե˽Ϥ
ǡڡ㡼ɤߤޤ
  -z ץǡإåեνϤϾάޤ
  -2 -3  digraph  trigraph ͭˤʤޤ-S1 -V199409L 
__STDC__  1  __STDC_VERSION__  199409L ˤʤޤ
  C99 бΥƥȤ򤹤뤿ˤϡ-V199901L ץդ n_std99.t,
e_std99.t Υå򤷤ޤ
  Validation Suite  cpp_test.c ȤץȤȡn_*.c, i_*.c
ΥץΥƥȤưŪ˹ԤȤǤޤʤϡߤĤ
ǡܺ٤Ϥ狼ʤޤe_*.?, u_*.?, unspcs.?, warns.? Υ
ȤϴޤޤʤMCPP ȤΥƥȤ򤹤뤿ˤϡn_std.c 򥳥ѥ
ۤᤤˡ

  ʤValidation Suite  GCC  testsuite бƤޤ
ơMCPP  GCC Τɤ줫ΥС˰ܿϡGCC / testsuite 
󥹥ȡ뤵ƤСGCC Υץץå MCPP ֤ȡ
MCPP μưƥȤǤޤˤĤƤ cpp-test.txt [2.2.3], mcpp-
manual.txt [3.9.5]-[3.9.7] 򸫤Ƥ

    [5.5]       GCC ʳνϤǤ configure ξ

  MCPP  UNIX ϥƥǤ configure ץȤȤޤ
UNIX ϥƥǤ GCC ʳνϤˤĤƤϻϤޤäΤʤΤǡ
configure ǤϤĤΥץꤷƤʤФʤޤ
  ΥץǻꤹƤˤĤƤϡνϤȤäƤͤ
ΤäƤ뤫ޤĴ٤뤳ȤǤϤǤ狼ϤҶ
Configure ˼Ǥ椭Ȼפޤ
  Configure ˤĤƤ INSTALL 

    [5.6]       ǡäƤаܿƤߤޤ

  ܿޤʤϡΤ褦Τ餻
  ΥǡդƤС֤ܿǤ뤫⤷ޤ
Configure λȤĶǤϡΥǡΤΤʤʬ
configure ˤäΤ뤳ȤǤޤ
  ʤC90 (ANSI C) бƤʤϤϡMCPP V.2.6 ϰܿ
ݤ鳰ޤ

  1.  ϣӤȤΥѥꥹȤηʻ UNIX , DOS/Windows , OS-9 
Τʤˡ
  2.  Ϥ̾ȥС
  3.  ʸåȤ ASCII ǤʤФɤʸåȤ
Multi-byte characterʴˤ encoding ϥե JIS  EUC-JP 
ȤⲿShift-JIS Τ褦 <backslash> Ʊɤ multi-byte
character ˴ޤޤ encoding ξ硢ѥΤϤǧ뤫
  4.  ShellʥޥɥץåˤʸȾʸ̤뤫
  5.  ե̾ʸȾʸ϶̤뤫
  6.  ¹Իץ󡣥ѥɥ饤ФϤ륪ץ
󡣥ץץåñΤưΥץgetopt() ǼǤʤ
ΤԲġˡ
  7.  ץץåʬΥƤϤȤ⤤ѥ
ѥ餫
  8.  νϤλޥȤ͡C++ λϤɤʤ뤫ʥѥ
ɥ饤Ф -D ץǥץץåϤޥȡץ
åȤޥȤ̤뤳ȡˡ
  9.  long long Ϥ뤫long long 硢printf() Ǥ long
long  length modifier ϲlong long ʤƤƱη

  10.  <limits.h> ʤ顢CHAR_BIT, UCHAR_MAX, LONG_MAX, ULONG_MAX
͡<limits.h> ʤФΣĤ͡ʣХȤӥåȤʤ
system.H ΥǥեͤƱϤˡ
  11.  <stdio.h>  FILENAME_MAX Ф͡
  12.  #pragma ԤΰϥޥŸоݤȤʤ뤫
  13.  Include directory ꤹĶѿˤϤɤ̾Ȥ
ѿʣΥѥ򵭽Ҥ separator ˤϲȤ
  14.  ̾Ȥ include directory#include ǥإåե򥵡
ε§
  15.  ɬפʴؿǡ饤̵֥Τ뤫
  16.  ѥΤ digraph ǧ뤫
  17.  ̻Ҥ $ Ȥ
  18.  #asm, #endasm Ϥ뤫ǤϤޤ줿֥åΥѥ
ؤμϤϤɤ¾εʳ directive ˤϤɤʤΤ

  19.  ץץåǽ٤ #pragma sub-directive ˤϲ뤫
  20.  ѥΤĹϤɤΤ餤ޤǤValidation
Suite ˤ test-l/l_37_8.c 򥳥ѥ뤹Ȥ狼ˡ
  21.  ѥΤǤϡ̻ҤϲХȤޤǼ̤뤫
  22.  ѥ塢Ρ֥֥ȥեפҤϲ
UNIX νϤ .o  Windows νϤ .obj Ρˡ
  23.   t_line.c Ȥץץץå̡̤ñ
ΥץץåȤޤϥץǥץץνϤꤹ
ˡϹֹȥե̾ξ򥳥ѥΤϤˡ򸫤뤿
ΤΤǤ롣<stdio.h> ƤĹΤǡ򥫥åȤƺǽΣ
ԤȺǸΣԤнʬǤ롣
  ˡ#line 1000 줿̤ #line 1000 "t_line.c" Ȥʤ餺 #
1000 "t_line.c" Ȥ¾ηˤʤϤǤϡʬ #line 1000
"t_line.c" ȽؤƥѥΤϤơǧǤ뤫ɤ
򸫤#line 1000 "t_line.c" ǥ顼ˤʤʤ error line; ιԤ
顼åФϤǤ뤬λ˹ֹ椬ɤФ뤫ˡ

/* t_line.c */
#include    <stdio.h>

#line 1000

    error line;

main( void)
{
    return  0;
}

  ۥȽϤȥåȽϤ㤦ϤˤĤƾ嵭Υǡ
СȤʤǤ礦
  ¤٤Ƥߤȡå٤Ȥ֤󤿤󤢤ޤ͡
¿νϤǤϰܿߤνϤȶ̤¿Ǥ礦顢
ưΰܿǤФۤɤμ֤ǤϤʤϤǤŪ֤
Τϼ¹Իץ #pragma˵ʳͤμǤ
ư褦ˤʤäƤ顢ˤäƤ椯ȤǤޤͣݤ
ΤϡϤΥХˤҤääǤ

    [5.7]       ڥåȤˤ¾νϤΥƥ

  䤬äƤϤΥץץåθڥåȤǥƥȤ̤ϡ
cpp-test.txt [5] ˤޤȤƤޤ
  ¾νϤˤĤƥƥȤ̤Τ餻ܤ¿Τ
ʤμ֤Ǥ
  cpp_test.c ˤƥȤǤм֤ϤʤΤǡǤ⤪
ޤGCC ξϡڥåȤˤ뼫ưƥȤǤޤ

    [5.8]       Τո

  ХΤۤˤ⡢MCPP λȤꡢǥåMCPP Υ
Validation Suite Standard C ᡢɥȤνʤɤˤĤ
Ƥո򤪴󤻤
  ̣ǺäץץåǤV.2.0 ޤǤǤ⣶ǯȾ⤫ƶŤ
˶ŤäϫǤŤĤǤˤǤɤΤˤȻפäƤޤ
åץץåˤĤƤϡλäƤʤϤؤΰܿȥƥȰʳϡ
äựΤ뤳ȤϤۤȤɤ٤ƤäĤǤ¿Ȥ꤬Ĥ
ƤС줿Ȼפޤ
  Martin Minow ΥϤȤƤ⤭줤ʡΤʤ狼䤹Τǡ
ɤǤˤȤäƤϤ֤ٶˤʤޤ
  Τ˶̣ĿͤϤʤ¤ƤȻפޤ¿Υ
ȤȾԤƤޤ
  ոȾ

    http://mcpp.sourceforge.net/

 "Open Discussion Forum" ޤϥ᡼Ǥꤤޤ


MCPP ĹƻΤꡡ

    [6.1]       ۣǯ

  1992/01  DECUS cpp 򤤤ˤϡĹˤʤȤ̴
פޤǤ٤ߤˤ礳äȥС󥢥åפƤߤ褦Ȼפ
äΤǤ
  ϤơɤޤʤȥȤ狼ꡢ餤
ɤߤޤɤߤΤ륽äǤ⤢ޤˤĤ
ͤ C90 б˥С󥢥åפޤޤǤṲ̄

  ǻϼʬ C90 ΥץץͤΤˤΤäƤʤ
Ȥ˵դޤP. J. Plauger & Jim Brodie "Standard C" (1989) 
Ȥfunction-like ޥŸˡϡҤä֤
ΤǤʤˮϤƤˡǵʽäơץ
ץ˴ؤʸϤ򤯤֤ɤߤޤη̡C90 Υץץ
ŪʤΤȤ¿ǰۤʤäƤ뤳Ȥ狼ޤ#, ## 
Ҥɲä줿ȤϡΤۤΰʬˤʤäΤǤ
  Ȥ function-like ޥŸ롼ˤϤʤƬǺޤޤE.
Ream  cpp Υ򻲹ͤˣֹͤơC90 ѥޥŸ롼
񤭤ޤ䤬ץΥ르ꥺǤʤ˰̿ͤ
ϡˤˤʤȤǤ1992/04 ΤȤǤ
  ơƽۤơ٤ cpp ϤޤȻפäΤǤ
Ȥ줫餵ˣǯޤꤿäƤޤޤȤäƤ⡢
֤ˤϤۤƬǺޤϤʤäΤǤˤ⤫餺֤Ϥ
󤫤ޤͤͤ˰Ƥơcpp ˽椷ʤʤ
⤢ޤǤϤޤ󡣤δ֤ˤäΤϼ
褦ʤȤǤ

  ͤ򤵤Τˤ롣Standard ⡼ɤǤϵʤ˴б롣
  Standard C Υ⡼ɤ濴˥ץ๽¤ǡ¤ƹ롣
  Portability 夲뤿ᡢΥѤ롣
  ǥХå򤹤롣ϤΥХн褹롣
  ƥȥץहʤ Validation Suite 롣
  ¾νϤΥƥȤ򤹤롣
  ɥȤ񤯡
  1997/07 ˤϿѥäᡢƻȤ WindowsNT/95, X
Window System ȤΥեȤΥ󥹥ȡȽɤ줿Ƥ뤦
 C99-1997/11 draft ФơؤбɬפȤʤä

  Ǥ֤ΤäΤϥɥȤǤȤ˸ȾΣǯ餤ϥ
򤤤ä֤ϤۤξǡɥȽ񤭤ȤȾƤ
ޤѤʬ̤ˤʤäƤޤޤ֤ä
Τ̤¿ФǤϤޤ󡣥ɥȤ񤤤Ƥȡͤ
ΤʤȤȽФƤΤǤΤӤ˵ʽɤ֤
򾯤Ĥޤ򤤤ä֤ϾʤƤ⡢Ͼʤ
ޤ󡣵ʽץץǤϤʤΤ ANSI C 
Rationale ޤƤ褯ɤǤߤޤϥץץå뤳Ȥ̤
 C90 ٶ򤷤褦ʤΤǤˤϤ̤ơC90 ε
Τİ뤳ȤǤޤ
  ƥȥץϽϴñʥץܤ񤤤ǤȤ
񤤤 cpp ƥȤ뤿Ӥ˰ճʥХĤΤǤǡC90
ץץƥȤ Validation Suite 񤯤Ȥˤޤ
ơValadation Suite 񤯤Ȥ̤ơC90 餫
ˤʤäƤޤC90 Ե§ʬбΤϡʬˤȤäƤϤ鷺
路ФǤޤ̣ΤʤȤǤ̣ΤʬΤ
Ϥ뤫¿äȤϳΤǤ
  κȤ̤ƻ䤬ؤΤϡΤ褦ʤȤǤ

  ץλͤϡܺ٤ʥɥȤ񤭽ޤǳꤷʤ
  ץΥǥХåϡͤƥȤ륵ץ뤬ޤǽ
ʤ

  ιͤϴŪʤΤǤΤȤϴǤϤޤ椫
ʤΤ¿ץ㳰ǤϤޤ󤬡ˤϴפ
̣ʬ⤢ޤϤϤΰĤǤ礦
  ̣鲿ǯ⤫ŰŪˤ뤳ȤǤȤޤˤ
⣶ǯȾĹޤʤ˻֤򤫤ƴʥץäơ
ä줬ȤΤȤ䤬ä³Ƥޤ̣Ǻץ
ȤƤϡΤ餤Ϥθ٤ʤΤǤ礦
  MCPP Ϥ⤦äƤޤäΤǡƥʥ󥹤򤷤Ƥ
ǤäǤ鳧󡢥ȡ𡢰ܿ򤪴ꤤޤ

    [6.2]       V.2.3 

  V.2.0 塢 V.2.1, V.2.2, V.2.3  update 򷫤֤
C99 ˾ǧ줿 ISO / C++ бꡢбϤ
ꡢХȤäȤΤƤǤ
  V.2.2 ޤǤϴñ update ǤƤޤV.2.2  V.2.0 飳
äƤޤ󡣤ȤV.2.3  V.2.2 飴ǯޤ⤿äƤޤ
ޤοդ¿˻ˤʤꡢ֤ȤʤʤäΤʸǤ2000
/07  60 ФˤʤäơŻ򽵣˸餷Ƥ顢餫֤Ȥ
ˤʤꡢcpp ޤ
  V.2.3 ϻ֤Ǥʤ֤ŪäƤޤGCC V.2.9x ˼
ƤߤȤGCC / cpp ȤθߴݤΤˤʤäʤФ
ʤȤ狼äǤ¿Υץɲäĥͤ
ޤޤΥ顼򥦥˥󥰤˳ʲꡢȯ륦
󥰤ǥեȤΥ˥󥰥饹Ϥꤷơʤˤ¤
¤Ƥޤ
  ѹ¿ϸΤΤǤꡢڤΤǤϤޤǤ
Ȥ C90  "traditional" ʻͤΰ C99 λͤξΩʤ
ФʤʤȤΤϡϤʤϤܰդʤȤǤ줬ߤ
ץ󥽡μ¾ǤСˤٹ碌ΤϤ򤨤ޤ
  ʤˤ¤Ȥǡ¾νѤǤ⡢°Υץ
å֤ƻȤˤϻȤ䤹ʤäȻפޤ

    [6.3]       ̤Ƨեȥ¤ȡפ˺

  V.2.3 ؤ update ǡMCPP  Validation Suite Ͼ
ȶ (IPA) ʿǯ١̤Ƨեȥ¤ȡפȤΤ
򤵤ޤޤޤλȤΤȤΤäΤǱ礷ƤߤȤ
 ͵ץȥޥ͡㤬򤷤Ƥ줿ΤǤ 2002/07 
 2003/02 ޤǤ IPA λȿУͤνΤȤˡȯʤ
뤳ȤˤʤޤɥȤα⡢ϥ뤬Ƥ뤳
Ȥˤʤޤ
  Ūեȥʤ⡢֤򤫤Υ饤ե
Τ褦ˤʤäƤޤäΤǤδ٤ˤϼޤ˽
뵡񤬤ʤǰʻפ򤷤Ƥޤε񤬤ĤͿ줿ΤǤ
ϤΥץȤԤ뤿ᡢŻ򽵣˸餷ޤ
  䤬ΥץȤǤ뤳ȤȤƹͤΤϡΤ褦ʤȤǤ

  ѸǤΥɥȤ롣ȤäơMCPP ȸڥåȤ
Ūɾξ˽ФƤ椯ýϤȾȤʤäƤ븽Ǥϡ
ѸǥɥȤ¸ߤɾڤΤɬܤǤ롣
  ܿоݤ򹭤롣ޤбƤϤοС
бۤΤμפʽϤؤΰܿʤ롣

  ˿ PM 鼡Ƥޤ

  GCC 3.x ˤܿˤ testsuite ǻθڥåȤѤ
褦ˤ롣
  ȯ򥪡ץʷǿʤƤ椯

  伫Ȥ⤳ϤҤꤿȤǤΤǡǷײɲäޤ
  ȤηײٱٱŤͤޤޤǥå
ޤޤȤ򤹤뤿Ӥ˻ȤäȤΤʤեȥ
ȤäơΤӤ˻֤ޤGCC 򥽡饳ѥ뤷
ΤƤǤϤĤΥȥ֥˸ޤ̤Υɥ
Ȥι̤αΥåȽˤ⡢ʤλ֤ޤ
ξ塢Ȥ֤ޤȯޤץȤϻΤν
Ϥؤбײΰǰ̤Ȥʤޤ
  ϤޤǰĤη򿼤äƤ椯褦ʤȤƤʤäΤǡ
򾯤褦ȤȤҤɤ֤äƤޤΤǤޥ奢ץ
ޤ򷡤겼ˤϡ򤷤ʤФǤ뤳ȤǤϤ
ޤ󡣤̤˽Фˤϡ򤤤餫ʤФ
ʤΤǤ
  򹭤ǡϿ PM νޤơĤ̤и
եȥȯȤΤ˿뤳ȤǤޤʬ
ʸϤʤ줿ʸäƤΤ⡢Ѥ줷ȤǤ
֤ɤΤ϶줷ȤǤƤϤɤ⿷ǳڤȤǤ

  ̤Ƨեȥ¤ȡפϤǤޤǤϤޤǤʿ
ǯ٤ˤ⡢ ץȥޥ͡㤬 MCPP ³ץ
ȤȤƺ򤷤Ƥ줿ΤǤơǯ٤Ѥ߻ĤβȤ
ơˤȤäƤ̤иΰΤĤβ˼ȤळȤȤʤޤ
  ΣǯΥѥ˥ȥ֥뤬ȯϡɥ OS 
upgrade ǤˤĤΥȥ֥˸ޤ̤иΥ
ȥνˤ֤פȯϤϤ٤쵤̣Ǥäౡ
ŪˤʤäƤ֤ץȤͤ˶ŤΤ¹
ưˤưʤäƤȤ⡢ۤμǤ 2004 ǯ 2
˻ˡϣУͤɸ̵ΤʤȤꤷƤ
ǡƤˤäȲ˼ȤळȤǤޤ
  Visual C++ ؤΰܿconfigure ץȤκ¿ͤ multi-byte
character encoding ؤбβã뤳ȤǤޤޤ
ɤȤΩʤʤԤȤƤϤΤ
ȤߤޤܸǤȱѸǤΥɥȤιȤ֤Τ
Ȥ⡢ϥζϤã뤳ȤǤޤ
  ̤ˤäơϰϣУͤ鲿ȡ֥ѡꥨפȤɾ
뤳ȤǤޤμϤˤȤäƤϲʬɾǤĹǯˤ
 MCPP Ѥ߽ŤͤǧƤΤȻפѴǤޤ

  ǯ᤯ˤ錄̤ƧեȥפΥץȤˤäơMCPP 
ʼ C/C++ ץץå˻ž夬äĤǤǯΥޥ
ץޤȤϤʤ褯äȼʬǤǼƤޤ

  ̤ƧեȥΥץȤäƤ⡢MCPP βɺȤ³
ƤޤޤĤβ꤬ĤäƤޤβã
MCPP ڤ뤿ˡ¤˼Ȥߤ³Ƥ椯ĤǤ

                                                                   [eof]
