                         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 pre-release 1     2002/08     Updated according to C99 Standard.
            Added porting to Linux / GNU C, CYGWIN and LCC-WIN32.
            Augmented GNU C-compatible features.
                                                                kmatsui
V.2.3 pre-release 2     2002/12     Added porting to GNU C 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


ܼ


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

ƽϤ˰ܿˡ
    [3.1]       ܿߤν
        [3.1.1]     ̤
        [3.1.2]     FreeBSD / GNU C V.2.*
        [3.1.3]     Linux / GNU C V.2.*
        [3.1.4]     FreeBSD, Linux / GNU C V.3.*
        [3.1.5]     CygWIN / GNU C V.2.*
        [3.1.6]     DJGPP V.1.*
        [3.1.7]     LCC-WIN32 V.3.*
        [3.1.8]     Visual C++ .net
        [3.1.9]     Borland C V.4.*, V.5.*
        [3.1.10]    LSI C-86 V.3.3 
            [3.1.10.1]  LSI C-86 Ѥ cpp  Borland C ǥѥ
        [3.1.11]    Plan 9 ed.4 / pcc
    [3.2]       DECUS cpp бƤ
    [3.3]       noconfig.H, configed.H, system.H
    [3.4]       system.c, mbchar.c
    [3.5]       lib.c
    [3.6]       ɸإå
    [3.7]       makefile MCPP Ȥäꥳѥ
        [3.7.1]     Plan 9 / pcc ǤΥѥ
    [3.8]       MCPP 򥳥ѥǤ
    [3.9]       ѥ뤹ϤȥåȤν
    [3.10]      бƤʤ
    [3.11]      MS-DOS Υǥ
ƽϤ˰ܿˡܺ
    [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]   üʻ
            [4.1.3.4]   Translation limits λ
    [4.2]       system.c
    [4.3]       mbchar.c
    [4.4]       lib.c
    [4.extra]   malloc()
ХȰܿ
    [5.1]       Хɤ
    [5.2]       malloc() ϢΥХå
    [5.3]       Х
    [5.4]       ܿ
    [5.5]       GNU C ʳνϤǤ 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 μ¹ԥץ
ɬפޤ*
  ΥɥȤϥƽϤ˰ܿˡƤޤǤ
ä¹ԥץưͤˤĤƤϡmanual.txt Ȥޥ˥奢
򻲾ȤƤ
  ΥɥȤϤ٤ free software Ȥ󶡤ޤ
  MCPP ϼΤ褦ħäƤޤʤ [1.1]  [1.2]  manual.txt
ȽʣƤˡ

  * MCPP μ¹ԥץϳƽϤΥץץåִƻȤΤ
    롣äơ¹ԥץ̾ϤνϤΥץץå
    ̾ˤʤ롣¿νϤǤϤ cpp Ǥ롣

    [1.1]       ϣӤϤФʤ portable ʥ

  GNU/Linux, DOS/Windows ¿ΣϣӤ򥵥ݡȤƤ porbable ʥ
ץåǤꡢΥ Standard C (ANSI/ISO C) νϤϤ
ΤȡC++ νϤǤ⡢K&R 1st. νϤǤ⽽ʬѥǤ
 portability äƤ롣
  饤֥ؿϸŵŪʤΤȤäƤʤΥ饤֥ؿˤ
äˤ륽źդƤ롣Standard C νϤʤᡢ뤤Ͻ
Ϥ Standard C ˽򤷤Ƥʤʬ뤿 Standard C Υץץ
åѥǤʤʤɤȤäϵʤ
  ƽϤ˰ܿ뤿ˤϡ¿ξ硢إåեΤĤΥ
ؤƥѥ뤹ǤࡣǰξǤ⡢system.c
Ȥե˿Խ­٤Ǥ롣
  MCPP Υ֥Ȥϥ󤷤ʤưΤǡɥ쥹֤
 16 ӥåȥƥǤ¤Ϥ뤬˻Ȥ롣
  Multi-byte characterʴˤνܤ EUC-JP, shift-JIS
GB-2312Ѥ Big-5ڹ KSC-5601 (KSX 1001) бƤ롣32 
åȰʾΥƥǤ ISO-2022-JP, UTF-8 Ȥ롣Shift-JIS  Big-5
ξ硢ѥΤǧʤϤǤϡMCPP 䤦

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

  MCPP Ȥ򥳥ѥ뤹˥إåե system.H Υޥѹ
뤳ȤǡƼư⡼ɤΥץץåǤ롣
   Standard C Υ⡼ɤ⤢뤬K&R 1st. Υ⡼ɡ
 "Reiser" model cpp Υ⡼Ƽ cpp ֥Ȥ뤳Ȥ
롣ˤϼ post-Standard ⡼ɤޤǤ롣ޤStandard C ⡼
 C++ ΥץץåȤư¹ԻץäƤ롣
  Standard C ⡼ɤϴ¸¿ΥץץåȰäơʤ˼
ƤĤǤ롣ISO/IEC 9899:1990 Ӥ Corrigendum 1:1994,
Amendment 1:1995 бƤ롣C99 (ISO/IEC 9899:1999) ˤбƤ
롣Standard C ץץ reference model ȤʤΤܻؤƺä
롣
  ѥΤ Standard C бƤʤƤ⡢ץץåб
ǤΤϤ٤ƼƤ롣ܤʸƥϢ򤷤ʤ
ѥΤΤˡMCPP ˤ褦ˤ뤳ȤǤ롣
  ۤˤĤͭѤʳĥǽäƤ롣ޥŸ #if 
ɾȥ졼 #pragma __debug_cpp ⤢롣إåե
"pre-preprocess" ƤȤǤ롣
  ʾγƼ֥⡼ɡפϼ¹ԻǤϤʤMCPP Υѥ˻ꤹ
ˤʤäƤ롣 MCPP Υޤ뤿ȡѻʼ¹Իץ
򤱤뤿Ǥ롣
  ĤͭѤʼ¹ԻץƤ롣˥󥰤Υ
٥ꤹ륪ץ䡢include directory ꤹ륪ץǤ
롣
  ˤɤʴְ㤤äƤ MCPP ˽긫ʥå
ФꤻΤǤ狼䤹ǥåФŬڤʽ򤹤롣
ܿȤʤˤĤƤٹȯ롣
  ܺ٤ʥɥȤ°Ƥ롣

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

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

  øεʤȤƤϽ 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 ȸƤ֤Ȥޤ

  *  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.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]  䤬С󥢥åפθˤΤϡ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) Υ⻲ͤˤ
ޤΤۤGNU C / 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
/ GNU C 2, GNU C 3 ؤΰܿɲäơGNU C / cpp Ȥθߴ夵
ΤǤޤ¹Իץɲäѹޤ㴳
ХեåȥɥȤɲáäƤޤV.2.3 Ǥϥ
ȤαѸǤޤMCPP °븡ڥåȤˤϡGNU C
/ 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++ .net ؤΰܿɲä졢ޤMCPP  make ư
configure ץȤޤʤMCPP ϤޤΤʥ饤
ɽ򤷤ƤޤǤλ BSD Υ饤ɽ
򤹤褦ˤʤޤˡ2004/02 ˤϥ꡼Ǥȯޤ
ΥСǤ multi-byte character νĥ졢Plan 9 / pcc
ˤܿޤޤѸǥɥȤϥ
ܸǤ˹碌 update ޤ
    [2.14] 2004/03 ˤ MCPP V.2.4.1 ꡼ޤϺƵŪ
ޥŸˡΤǤ

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

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

    ʤȶ (IPA)  2004/01 Ωˡ͡
    ʵ (IPA) ˲Ȥ줿

    MCPP ΥӥɥȤȸڥåȤϳȯ revision 
    ơ CVS repository ֤Ƥ롣 tar-ball 
    download Ǥ롣

        http://cvs.m17n.org/cgi-bin/viewcvs/?cvsroot=matsui-cpp

    ΤȤ anonymous ftp Ǥ롣

        ftp://ftp.m17n.org/pub/mcpp/

    ޤΤȤˤϰ web page 롣

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

    cpp V.2.2 Ӹڥå V.1.2 ϥ٥ҤΥȤμΤȤ
    롣PACK for WIN GOLDפȤ CD-ROM ˤϿƤ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/ ǤƱ
    Ǥ롣

    ǤϼΤȤˤ⤢ʤϲ closed ʥեǤˡ

        @nifty / FC / lib 2

    Υ֥եΥƥȥեϡNIFTY 
    Vector ΤΤ DOS/Windows Ϥ˹碌ơԥɤ [CR]+[LF]
     shift-JIS  encode Ƥ롣m17n.org ΤΤ UNIX Ϥ˹碌
    Ʋԥɤ [LF] EUC-JP Ǥ롣¾ΣϣӤǻȤѴ
    ɬפǤ롣
    ۺ convf ȤġȤȡե礷Ѵԡ
    ΤǴñǤʥХʥեϼưŪȽ̵̤Ѵǥԡ
    롣Time-stamp  mode ¸ˡMCPP Υѥå
     multi-byte character encoding ƥȤ뤿Υե
    ޤޤƤΤǡ encoding ѴƤϤʤޤե
    ԥɤѴư祳ԡ doc ǥ쥯ȥ
    ԥɤȴ encoding Ѵƾ񤭥ԡΤɤ
    Convf ΤΤ MCPP ܿΤƱϤбƤ롣
    ե DOS/Windows ¾ΣϣӤ˻äƤϡMS-DOS 
    Windows95 ǲहʸȾʸζ̤ʤʤäƤޤΤǡ
    ֥եΤޤްܤƤ顢षѴ뤳ȡConvf ϼ
    Ȥˤ롣

        http://download.vector.co.jp/pack/dos/util/text/conv/code/
                                                        convf-1.8.lzh


ƽϤ˰ܿˡס

  MCPP V.2.4 ΥϣܤΥإåեȣܤ *.c ե뤫ʤ
ƤޤϣӤϤ˰¸ʬ configed.H, noconfig.H, system.H,
system.c ΣܤΥˤޤȤƤޤޤ饤֥ؿΰ
äˤ륽 lib.c ˤޤäơMCPP 򲿤餫νϤǻ
ˤϡ˹碌ƤΥեѹäɬפޤ
  MCPP 򥳥ѥ뤹ˤϣĤˡޤĤ configure 
ץȤ¹Ԥơconfig.h Ȥإåե Makefile ư
ˡǤȤñ make; make install ȤǤߤޤconfiged.H
ȤإåեϤξ˻Ȥޤconfigure  UNIX 
Υƥ CygWIN ǤȤޤ
  ⤦ĤϳƽѤκʬեȤäƥإåեѹä
ɬפʤ餵˥إåեԽǡνѤ makefile 
Ȥä make ˡǤnoconfig.H ȤإåեϤξ˻
ޤʬե makefile  noconfig Ȥǥ쥯ȥˤ
Configure λȤ륷ƥǤ⡢إåեľܡԽ뤳Ȥ
٤򤹤뤳ȤǤޤʬեϤǤ˰ܿߤν
ѤΤΤޤ

    [3.1]       ܿߤν

  ǤϺʬեȤˡˤĤޤConfigure ˤĤ
 README 򸫤Ƥ

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

    FreeBSD 4.7                     GNU C V.2.95.4, V.3.2R
    Vine Linux 2.6 (kernel 2.4.19)  GNU C V.2.95.3, V.3.2R
    CygWIN 1.3.10                   GNU C V.2.95.3
    GO32 / DJGPP V.1.12-M4          GNU C V.2.7.1
    WIN32                           LCC-WIN32 V.3.2
    WIN32                           Visual C++ .net 2003
    WIN32, MS-DOS                   Borland C++ V.4.02J, V.5.5J
    MS-DOS                          LSI C-86 V.3.3 
    Plan 9 ed.4                     pcc

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

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

  νϤ Standard C ⡼ɤΥץץå뤿νϤ
ƴñǡnoconfig.H, system.H οĤΥޥѹǤ
system.c ѹɬפޤ
  noconfig ǥ쥯ȥ *.dif Ȥե FreeBSD 4.7 / GNU C 2.
95.4 Ѥ noconfig.H, system.H ƽѤ˽뺹ʬեǤ
Visual C++ .net 2003 ˤȤȡsrc ǥ쥯ȥ

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

Ȥȡޤpatch  UNIX ɸŪʥޥɤǡDJGPP, MS-
DOS ˤܿƤޤMS-DOS 5.0 ɸդƤ patch ȤϤޤ
ʪǤ
  Include ǥ쥯ȥλʤɤϡʬեˤ뽤Ȥ̤ˡ桼
ʬΥƥ˹碌ƽʤФʤޤ
  ƽ򥳥ѥ뤹뤿γƽѤ makefile ź
դƤޤ[3.7] ȡˡ

    copy ..\noconfig\visualc.mak Makefile

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

        [3.1.1]     ̤

  ʲΤɤνϤǤ⡢ǥեȤ include directory 
C_INCLUDE_DIR1, C_INCLUDE_DIR2 Ȥޥ˽񤤤ƤޤC++ 
include directory  C ΤΤȰäƤϡ
CPLUS_INCLUDE_DIR1, CPLUS_INCLUDE_DIR2 ˽񤭤ޤʤϼ¹Ի˴Ķ
ѿ -I ץǻꤹ뤳ȤǤˡ
  Include directory ϤΤۤsystem.c ǤꤵƤޤUNIX Ǹ
 system.c ꤵΤϤ OS-specific ʤΡ̾ /usr/
includeˤȤ site-specific ʤΡ̾ /usr/local/includeˤ
DOS/Windows ϤΣϣӤ˴ؤƤϡsystem.c Ǥ include directory ϲ
ꤵޤ
  ޤɬפʤ CPU_STD1, CPU_STD2 Ȥ߹ߥޥ̾ѹޤ
  Multi-byte character  encoding ϥǥեȤǤϡUNIX ϤǤ EUC-JP
DOS/Windows ϤǤ shift-JISPlan 9 Ǥ UTF-8 ȤƤޤɬפʤ
MBCHAR Ȥޥ񤭴¾ encoding ѹޤ32 ӥåȰʾ
ΥƥǤ multi-byte character encoding ϼ¹Ի˴Ķѿץ
#pragma ѹ뤳ȤǤޤ
  ϤˤäƤ shift-JIS  Big5  encoding бƤʤᡢ
multi-byte character  '\\' Ʊ 0x5c ͤΥХȤ
tokenization ǥ顼ˤʤ뤳ȤޤϤǤ MCPP 
üʽ򤷤ƥѥη٤䤤ޤˤĤƤ [4.1.1.5]
򸫤Ƥ
  źդ makefile ˤĤƤϡϤΥХʥ֤Ƥǥ쥯ȥ
ɬפ˱ƽ񤭴ޤ

        [3.1.2]     FreeBSD / GNU C V.2.*

   FreeBSD 4.7  GNU C V.2.95.4 ǥѥ뤷 FreeBSD 4.7
Ѥ cpp ֤ˤʤäƤޤΤޤޥѥ뤹ФǤ
Ǥ
  GNU C V.2.* ¾ΥСǤСsystem.H 

#define VERSION_MSG     \
    "GNU C compiled by GNU C 2.95"



#define COMPILER_EX2_VAL    "95"

ȤʤäƤȤΥСֹѹޤԤ GNU C  minor
version number 񤭤ޤ
  FreeBSD ΥС 4.* ǤʤС

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

ͤѹޤ
   FreeBSD ΥС GNU C ΥС˹碌ơ

#define C_INCLUDE_DIR1  \
    "/usr/lib/gcc-lib/i386-unknown-freebsd4.7/2.95.4/include"

ȤʤäƤǥ쥯ȥѹޤ
  GNU C V.2.6.* ǤС

#if     COMPILER_FAMILY == GNUC

ǻϤޤ֥å

#define HAVE_DIGRAPHS       TRUE

ȤȤ

#define HAVE_DIGRAPHS       FALSE

Ȥ

#define STDC_VERSION        199409L

ȤʤäƤȤ

#define STDC_VERSION        0L

Ȥޤ
  ¾ UNIX Ǥ⥳ѥ餬 GNU C ǤСΥСɽ䡢
include ǥ쥯ȥꡢϣӸͭȤ߹ߥޥꡢѤ
ǤΤǤϤʤǤ礦[4.1.1] ȡˡ
  GNU C  GNU C Ȥμ¹ԥץ configuration ˤ
ơshift-JIS  ISO-2022-JP  multi-byte character encoding Ǥ
ΤȤǤʤΤȤޤǤʤ MCPP η٤䤤
ޤˤĤƤ [4.1.1.5] 򸫤Ƥ

        [3.1.3]     Linux / GNU C V.2.*

  Linux ˤ¿ package distribution 褦Ǥźդ
linux_gcc2953.dif  Vine Linux 2.6 (x86) ˰ܿ뤿ΤΤǤ
distribution  kernel 2.4.19  GNU C V.2.95.3, glibc 2.2.4 ȤäƤ
ޤ
  ʤglibc  getopt()  POSIX ɸΤΤȤϻͤۤʤΤǡ
Ȥ鷺ˡlib.c ΤΤȤäƤnoconfig.H  Linux Ǥϥǥե
Ȥ glibc ȤƤȽǤޤ
  Linux ¾ version  distribution Ǥϡlinux_gcc2953.dif ŬѤ
ǡ VERSION_MSG, C_INCLUDE_DIR?, CPLUS_INCLUDE_DIR?,
COMPILER_EX2_VAL Υޥ񤭴ФΤǤϤʤȻפޤ
makefile νɬסˡ
  ΤۤMCPP μ¹ԻˤϴĶѿɬפǤˤĤƤ
manual.txt 򻲾ȤƤ

        [3.1.4]     FreeBSD, Linux / GNU C V.3.*

  GNU C V.2.* Ѥ GNU C V.3.2 ѤѹˤϡΤ褦ˤ
Υޥޤ

#define VERSION_MSG     \
    "GNU C compiled by GNU C 3.2"

#define COMPILER_EXT_VAL    "3"
#define COMPILER_EX2_VAL    "2"
#define COMPILER_CPLUS_VAL  "3"

#define HAVE_INTMAX_T       TRUE
#define STDC_VERSION        0L

  Linux ǤϤ˼Υޥѹޤ

#define CPLUS_INCLUDE_DIR1  "/usr/include/g++-3"

  ޤƥɸ GNU C Ȥ̤ΥС򥤥󥹥ȡ뤷
ϤΥСͭ include ǥ쥯ȥ꤬̤˺Ǥ礦顢
Υǥ쥯ȥ򼡤Υޥǻꤷޤ

#define CPLUS_INCLUDE_DIR2  \
  "/usr/local/gcc-3.2/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/c++/3.2"
#define C_INCLUDE_DIR1      \
  "/usr/local/gcc-3.2/lib/gcc-lib/i686-pc-linux-gnu/3.2/include"

  GNU C V.3.x ¾ΥСǤϡCOMPILER_EX2_VAL ͤ x ˹碌

  źդ linux_gcc32.dif  FreeBSD / GNU C V.2.95.4 ѤΥ Linux
/ GNU C V.3.2 Ѥ˽뺹ʬեǤ
  GNU C V.3 Ǥϥץץѥ (cc1, cc1plus) ˵ۼƤ
äΤǡMCPP Ȥˤϡgcc, g++ θƤӽФ shell-script ֤
ơcpp0 => cc1, cpp0 => cc1plus νǼ¹Ԥ褦ˤʤФʤ
ޤ󡣤ˡˤĤƤϡmanual.txt [3.9.7] 򸫤Ƥ

        [3.1.5]     CygWIN V.1.* / GNU C 2.*

  CygWIN V.1.3.10 / GNU C V.2.95.3 Ǥ noconfig.H  cyg1310.dif ˤ
褦ѹäޤ
  ¾ version ǤϡVERSION_MSG, C_INCLUDE_DIR1, CPLUS_INCLUDE_DIR1,
COMPILER_EXT_VAL, COMPILER_EX2_VAL, COMPILER_SP3_VAL Υޥѹ
뤳ȤбǤǤ礦GNU C 3.* ˤĤƤϡ[3.1.4] 򻲾ȤƤ


        [3.1.6]     DJGPP V.1.*

  DJGPP V.1.12 / GNU C V.2.7.* Ǥ noconfig.H  djg112m4.dif Τ褦
ѹäޤ
  GNU C  V.2.* ̥СǤСVERSION_MSG 
COMPILER_EX2_VAL ޥΥСֹѤޤV.2.6.* ޤǤǤС
HAVE_DIGRAPHS  FALSE ˡSTDC_VERSION  0L ˤƤޤDJGPP V.2.
* Ǥ COMPILER_STD2_VAL Ȥޥ "1"  "2" ѹޤ
  Shift-JIS бƤʤСǤС

#define SJIS_IS_ESCAPE_FREE     TRUE



#define SJIS_IS_ESCAPE_FREE     FALSE

Ȥޤ
  ʤDJGPP ؤΰܿǤ noconfig.H Υޥ C_INCLUDE_DIR?,
CPLUS_INCLUDE_DIR? 򤷤Ƥޤ󡣤ꡢ桼Ķѿ
C_INCLUDE_PATH, CPLUS_INCLUDE_PATH 򥻥åȤ뤳Ȥǡ¹Ի include
ǥ쥯ȥ꤬ꤵ褦ˤƤޤɤˡǤ⤫ޤʤΤǡ
ʬλȤ䤹褦ꤷƤʾܺ٤ [4.1.1.2]ˡ

        [3.1.7]     LCC-WIN32 V.3.*

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

        [3.1.8]     Visual C++ .net

  Visual C++ .net 2003 Ǥ vc2003.dif Τ褦ѹäޤ
  Visual C ¾ΥСǤϡVERSION_MSG ޥѹۤ
_MSC_VER ȤȤ߹ߥޥͤ COMPILER_EXT_VAL Ȥޥ
Ѥ뤳Ȥǡޤ_M_IX86 ȤȤ߹ߥޥͤ
COMPILER_SP2_VAL ȤޥѤ뤳Ȥбޤޤ
Visual C ϾʤȤ V.6.0 ʹߤϥץץå c1.dll, c1xx.dll Ȥ
ѥ˵ۼ줿褦ǤץץåΩƤС
Ǥ ONE_PASS Ȥޥ FALSE Ȥޤ[4.1.1.3] ȡˡ

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

  Borland C V.5.5 / bcc32 Ǥ bc55_w32.dif Τ褦ѹäޤ
  Borland C V.4.0 / bcc / large memory model Ǥ bc40_16l.dif Τ褦
ѹäޤ
  Borland C, C++, Turbo C++ ̤ΥСǤ VERSION_MSG Τۤ
__TURBOC__, __BORLANDC__, __BCPLUSPLUS__ ȤȤ߹ߥޥͤ򤽤
 noconfig.H  COMPILER_STD2_VAL, COMPILER_EXT_VAL,
COMPILER_CPLUS_VAL ȤޥѤ뤳Ȥǡбޤ[4.1.
1.1] ȡˡDigraphs  __STDC_VERSION__ μƤСǤ
СHAVE_DIGRAPHS, STDC_VERSION ѹޤ[3.1.1], [3.1.2]
ȡˡ
  Borland C 4.* ޤǤΥСǤϡ

#define SEARCH_INIT     CURRENT

Ȥޤ
  ޤWIN32  (bcc32) ǤϤʤ MS-DOS  (bcc) ξ

#define SYSTEM              SYS_WIN32

ǤϤʤ

#define SYSTEM              SYS_MSDOS

Ȥޤ

        [3.1.10]    LSI C-86 V.3.3

  LSI C-86 V.3.3 ˰ܿˤϡlsic33.dif Τ褦ѹä LSI C-
86 ǥѥ뤷ޤå 8KB ʾꤷƤlcc
-k'-s 2000' Ȥˡ

            [3.1.10.1]  LSI C-86 Ѥ cpp  Borland C ǥѥ

  ޤܿŪνϤ MCPP 򥳥ѥ뤹ϤȤɬ餺
ƱǤʤƤɤΤǡ㤨 Borland C Ѥ MCPP  LSI C-86 ǥ
뤷Ƥ⤫ޤޤ󡣤ξϤΤۤɥѥȤˤ
ޤդ LSI C-86 Ѥ MCPP  Borland C ǥѥ뤹뤳Ȥ
ޤLSI C-86 Ǥ small model Ǥ¾ΥѥȤä
large model  WIN32 ǥѥ뤹СMCPP  tranlation limits 
Ǥޤ

  LSI C-86 V.3.3 Ѥ MCPP  Borland C V.5.5 (bcc32) ǥѥ뤹
ϡnoconfig.H ǤϼΤ褦ˤޤ

#define SYSTEM              SYS_MSDOS
#define COMPILER            LSIC
#define HOST_SYSTEM         SYS_WIN32
#define HOST_COMPILER       BORLANDC
#define VERSION_MSG     \
    "LSI C-86 compiled by Borland C V.5.5"

  noconfig.H  PART 2  Borland Chost-compilerѤˤƤޤ
  źդ lsi_bc55.dif  LSI C-86  MCPP  Borland C V.5.5 
ѥ뤹뤿򤹤뺹ʬեǤ

  դ Borland C Ѥ MCPP  LSI C-86 V.3.3 ǥѥ뤹ϡ

#define SYSTEM              SYS_WIN32
#define COMPILER            BORLANDC
#define HOST_SYSTEM         SYS_MSDOS
#define HOST_COMPILER       LSIC
#define VERSION_MSG     \
    "Borland C compiled by LSI C-86 V.3.3"

#define STDC_VERSION        0L

ȤPART 2  LSI Chost-compilerѤˤƤޤѥ
뤹 -D__BORLANDC__ Ȥץɲäޤ

        [3.1.11]    Plan 9 ed.4 / pcc

  Plan 9 Ǥ plan9r4.dif ѹäƥѥ뤷ޤ
  plan9r4.dif ¾ *.dif ȤϷäƤޤPlan 9 ˤ diff Ϥ
ޤpatch ޤ󡣤ǡplan9r4.dif ˤ diff -c ǤϤʤ
diff -e ˤ뺹ʬ񤭽Фơθ

    w

ȤιԤ񤭲äƤޤäơȤäƥ
񤭴ˤϡΤ褦ˤޤ

    ed noconfig.H < ../noconfig/plan9r4.dif

  Plan 9 ǤΥѥ¾ΥƥȤϤʤäƤޤˤĤ
Ƥ [3.7.1] 򸫤Ƥ

    [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 ˤ PART 1  PART 2 Ȥʬꡢsystem.H ˤ PART 3
ޤ
  ΥեˤϡƽϤ˰ܿɬפʤĤΥޥ
ƤޤޤܿƤʤϤ˰ܿˤϡPART 1 ˿
ʤԤ­ޤޤStandard C ʳΥ⡼ɤ MCPP 
ˤϡPART 3 ˤĤΥޥؤޤ
  PART 1 ϣϣӤ target Ϥ˰¸ǡPART 2  host Ϥ
¸ PART 3  MCPP ưͤǤ
  ǥեȤȰ㤦ǰܿϡΥեΤɬ
ܤ̤Ƥ

    [3.4]       system.c, mbchar.c

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

  V.2.4-release  mbchar.c Ȥե뤬ɲäޤ
ˤ multi-byte character Υ롼ʸפΥơ֥뤬
̤ multi-byte character encoding ϡ˽
롼ʸסơ֥­ޤ

    [3.5]       lib.c

  饤֥ؿΤStandard C ˤʤ getopt(), stpcpy() Σäˤ
򤳤˽񤤤Ƥޤޤmemmove(), memcmp(), memcpy(),
strstr(), strcspn()  Standard C ˤϤޤŤϤǤϤʤ
⤢ΤǡåѰդޤϡ֥åž̿
 CPU ǤϡΣĤ stpcpy() ϥ֥ǽľۤɤˡ
  getopt()  glibc ΤΤʳĥܤƤƤäƤäʤ
ǡΤΤȤäƤ
  memmove() ϤʤΤ memcpy()  memmove() λͤäƤ
⤢ޤʸŤ BSD ϤνϤΤ褦Ǥˡξ noconfig.H
ޤϥƥ strings.h 

    #define memmove( dst, src, size)    memcpy( dst, src, size)

Ƚ񤤤ƤФߤޤ
  fgets() ϤɤνϤˤ⤢ΤǤλͤ Standard C Ȥϰ
äƤ礬ΤǡåܤƤޤ°ΤΤǤ
ѾʤǤ礦Standard C ǤϡХȤɤޤʤ EOF Ȥʤ
ϥХåեˤϲ񤭹ޤʤȤˤʤäƤΤǤʤäľ
ɤԤХåե¸ˡ'\0' 񤭹ǤޤΤ
ޤLSI C, MWC09ˡ fgets() Ǥϥե뤬 <backslash>
<newline> ǽäƤ <newline> ʤǽäƤοǥ
åԹ礬ФǤ
  fgets() ʳΥ饤֥ؿϤ⡢Ϥˤä̯˰㤦
ͤ˰¸ȤϤƤʤΤǡɤνϤΤΤǤХ
פǤ礦
  MCPP ǻȤäƤؿϤդ줿ΤФǤޤ㤨 #if 
Ǥɾˤ strtoul()  atol() Ȥ鷺ǤäƤޤ
strtoul() ϸŤϤˤϤʤatol() Ǥ out of range Υå
ʤǤ
  lib.c  xyz ȤؿȤˤϡnoconfig.H (configed.H)  PART 2
ˤ HOST_HAVE_XYZ Ȥޥ FALSE ޤconfiged.H Ǥ
åȽϤȥۥȽϤȤƱǤȲꤷƤޤۤʤ
 PART 2 Խɬפޤ

    [3.6]       ɸإå

  MCPP ΥǤ stdio.h, ctype.h, errno.h ̵ include Ƥ
ޤʤϤϤޤʤǤ礦Υإåեɬ
 Standard C ε˽äƤɬפϤޤstdlib.h, string.h,
stddef.h, time.h  Standard C ǵꤵƤΤǤŤϤ
ϤʤΤǡξɬפʴؿޥľܻȤ褦
noconfig.H (configed.H)  PART 2 ˽񤤤ƤޤƱǽδؿ̾
äƤΤȤθƤޤ
  ʬ #if 1  #else  #endif, #if 0  #else  #endif ǰ
ǤΤǡɬפ˱Ƥ 1  0 դˤƤ
  configed.H ǤϥåȽϤȤäƤΤǡۥȽϤ
äƤϡPART 2 Խޤ

    [3.7]       makefile  MCPP Ȥäꥳѥ

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

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

Ȥ noconfig.H, system.H ޤ˼ʬΥƥ˹碌
noconfig.H  C_INCLUDE_DIR? Υޥ򥨥ǥǽޤơ
Ѥ noconfig/xyz.mak  Makefile ˥ԡǥ쥯ȥ
ʬΥƥ˹碌ƽǡ

    make
    make install
    make clean

ȤƤ
  lsic33.mak ˤϡBorland C  MCPP  LSI C-86 ǥѥ뤹
⥳Ȥ˽񤤤Ƥޤ
  ޤborlandc.mak ˤ LSI C-86  MCPP  Borland C ǥѥ뤹
񤤤Ƥޤ
  ¾νϤǤϡ򻲹ͤɬפ makefile 񤤤Ƥ
ΰ¸طñǡ

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

ȤطˤʤäƤޤsystem.H  internal.H  include ɬ
פޤ
  åϥƥλȤʬ NMACWORK + (NEXP * 30) + (sizeof
(int) * 100) ɲäƤMODE >= STANDARD ǤϤ (sizeof
(char *) * 12 * RESCAN_LIMIT) ɲäޤNMACWORK, NEXP, RESCAN_LIMIT
 system.H Ƥޥˡ
  MS-DOS Τ褦˥磻ɥɤ shellʥޥɥץåˤŸ
ƥǤϡMCPP ǤŸʤ褦˥ѥ뤷Ƥۤ
Ǥ-o ץ󤬻ꤵʤ¤ꡢ裲ϥեλȤ
ʤΤǡˡ

  MCPP ȤȤä MCPP ꥳѥ뤹ˤϡϤ cpp Τ٤
ˤμ¹ԥץ򤪤ޤ㤨 FreeBSD, Linux, CygWIN Ǥ
С° cpp0  cpp0_gnuc ȤǤ rename MCPP  cpp_std 
ȤƤޤ¾Υ⡼ɤΥץץå⤽줾 cpp_poststd,
cpp_prestd, cpp_old ȤƤλ˻ȤΤ cpp0 ˥󥯤
ɤǤ礦ʤȤץץå cpp_std Ȥȡ

    ln -sf cpp_std cpp0

ȤޤDOS/Windows ǤϻȤΤ cpp.exe ˥ԡޤ*
  ξϽᤫ顢

    make NAME=cpp_std

ȤС rename ʤƤߤޤƱȤ TC, BC make Ǥ make
-DNAME=cpp_std Ȥ롣UCB make Ǥ -D դƤդʤƤɤGNU
make Ǥ -D դƤϤʤˡ
  źդ makefile Ǥ freebsd.mak, linux.mak, cygwin.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, LSI C-86 Ǥ make Ǥ if ʸˤʬ
ǤʤΤǡmakefile ƥꥳѥ뤹ɬפޤ
Ƥ makefile ΤΤ˽񤤤Ƥޤ

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

  * FreeBSD Ǥ cpp ֤ǥ쥯ȥ /usr/libexec Ǥ롣manual.
    txt [2.1] 򻲾ȤΤȡ
    Vine Linux 2.6 (i386) Ǥ /usr/lib/gcc-lib/i386-redhat-linux/2.95.3
    ȤҤɤǥ쥯ȥˤʤäƤ롣Linux / GNU C Ǥ
    distribution 䤽 version ˱ makefile ΤΥǥ쥯ȥλ
    񤭴ɬפ롣Include directory ⤤ΤǡĶ
    ѿ C_INCLUDE_PATH? ɬפʾ礬롣
    ޤGNU C 2.95  3.2 Ǥ cpp Τۤ cpp0 ꡢgcc Ƥ
    ФΤ cpp0 ΤۤǤ롣
    ʤmanual.txt [3.9.5], [3.9.7] ⻲ȤΤȡGNU C V.3 Ǥϥץ
    ѥ (cc1, cc1plus) ˵ۼƤޤäΤǡMCPP 
    Ȥˤ gcc, g++ θƤӽФ shell-script ֤ɬפ롣

        [3.7.1]     Plan 9 / pcc ǤΥѥ

  Plan 9 ˤ Dennis Ritchie ν񤤤ץץå Ken Thompson ν
ѥ餬ޤѥϥץץǽ¢ΤǤ
ʤ#if Ƥʤˡ
  ѥ顦ɥ饤Фˤ cc  pcc ΣĤޤCc ϥץץ
ƤӽФ˥ѥƤӽФΤǤPcc ʤ portable cc
for ANSI & POSIX environment ϥץץåƤӽФƤ饳ѥ
ƤӽФΤǤInclude directory ⤳ξԤǰۤʤäƤޤ
  MCPP Υˤ #if ȤƤΤǡpcc ǤʤȥѥǤ
󡣤ΤϡMCPP  pcc ǥѥ뤷 Ritchie  cpp 
֤ƻȤˡǤ
  Plan 9 ǤϤޤmake  mk Ȥ̾ΥޥɤȤʤäƤꡢmakefile
 mkfile Ȥ̾ˤΤǤmkfile ν񼰤¾ make ȤϤ
ʤäƤơPlan 9 ѤΤΤȤʤäƤޤޤif, else ϻȤ
ΤǡѥλѤ mkfile 񤭴ɬפޤ

  MCPP 򥳥ѥ뤹ˤ MCPP  src ǥ쥯ȥǡnoconfig.H  [3.
1.11] ˤ褦ˡѹäǡ

    cp ../noconfig/plan9.mk mkfile
    mk
    mk install
    mk clean

Ȥޤȡcpp_std Ȥ̾μ¹ԥץब /$objtype/bin/ 
쥯ȥ˥ԡΤǡ

    cp /$objtype/bin/cpp /$objtype/bin/cpp_ritchie

Ȥ Ritchie cpp ¸ǡ

    cp /$objtype/bin/cpp_std /$objtype/bin/cpp

Ȥޤ$objtype ȤĶѿ CPU  x86 ξ 386 ȤʤΤǡ
ľ 386 ȥפФߤޤ

  MCPP  "pre-preprocess" ǽȤä MCPP ꥳѥ뤹ˤϡ
mkfile 

    PREPROCESSED=0

ȤԤ

    PREPROCESSED=1

Ƚ񤭴ǡ

    mk preprocessed

Ȥޤmk install ʲϾ嵭ƱͤǤ

    [3.8]       MCPP 򥳥ѥǤ

  ƽϤ˰ܿ뤿ˤϤĤ꤬ɬפǤMCPP Υ
ѥ뤹뤳ȼΤϡK&R 1st. λͤƤϤǤн
ʬǤޤΤ˸СK&R 1st.  Standard 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 դǤʤǤ⤫ޤޤ
  ư黻פǤ

  ץץåƱͤǡɤ Reiser model cpp MCPP
 OLD_PREPROCESSOR ⡼ɤ˶ᤤˤǤĤǤ#if  int 
ȤʤΤ䡢ɾʤꤤʤΤǤפǤ礦
MCPP ȤȤäƥꥳѥ뤹⡢MCPP μ¹ԥץ system.
H Ǥɤ⡼ɤ򤷤ΤǤ⤫ޤޤʤɸ
إåΥ⡼ɤ MCPP λʤͤȤƤä̤Ǥ
ˡDECUS cpp ǤϰդޥλȤʤץץåб륳
ɤޤǤޤˤϺޤ

  ΥϽϤ̯ʺ˱ƶʤ褦˽񤤤Ƥޤ
Standard C ǿߤ줿ǽϻȤäƤޤStandard C ˴б
ץץåΥ portable ˽񤯤ˤϡˡΤɬ
ΤǤ*
  äȤ⡢ºݤ˳ƽϤǥѥ뤹뤿ˤϡˤνϤΥ
򤹤ɬפޤϤäƤߤʤȲФƤ뤫狼ޤ
󡣻䤬ܿĤνϤǤ⡢ХǤ뤳ȤΤ᤽βˡ
򸫤ĤޤǤˤʤλ֤äƤޤäȤ󤫤ޤ

  * printf() Ǥ long long  length modifier εҤˤʸ
    ƥϢȤ Standard C λͤȤäƤ롣Length modifier
    Ϥˤäưۤʤ뤿ᡢˡȤ뤷ʤΤǤ롣ơ
    long long ĽϤʸƥϢ뤬ǤʤȤȤϤ
    ϤǤ롣

    [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) ˤĤƱȤޤ

  ʤǸۥȤȥåȤȤΤϡѥΤ
ϴطޤ󡣥ѥ뤹ΤϥѥΤλŻǡץ
åϸ§ȤƤˤϴΤޤCpp ֥ѥˡװ
ϡΥѥ餬ǸåȽϤǤۥ
ȽϤȤƤϥѥǤʤΤȤȤˤʤϤǤCpp
֥ѥǡץѥ뤹ϡΥѥ餬ۥ
ȽϤǡѥΥåȤåȽϤȤʤޤ
  UNIX ư DOS/Windows ѥץΥϤ MCPP 
褦ʾϡnoconfig.H  PART 1  MBCHAR  EUC_JP ǤϤʤ SJIS 
ޤʤmulti-byte character encoding λϥåȤΤ
˹碌ޤ
  MCPP ǤϡMCPP 򥳥ѥ뤹ۥȽϤʸåȤȤ
ȤåȽϤʸåȤȤϤȤ ASCII ǤȲꤷƤ
ѥΥۥȤȥåȤʸåȤˤĤƤƱͤǤ
⤷ξԤʸåȤۤʤϡmbchar.c  type_*[] ɬפʤ
noconfig.H  ALERT, VT 򥿡åȽϤΤ˹碌ʸƥ
Ϣ MCPP ǤϤʤ褦ˤСCONCAT_STRINGS  FALSE Ȥ
ɤΤǤϤʤȻפޤʸƥʸ numeric
escape sequence ʳʸϥѥΥѥΤѴ
ܤʸƥϢ⤷ƤΤǤСˡ ASCII ʳʸ
åȤ⥯ѥȤΤȤäȤʤΤǡ褯狼


    [3.10]      бƤʤ

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

  EBCDIC ˤбƤޤEBCDIC  mbchar.c  type_*[] Ȥʸ
פΥơ֥ؤбǤΤǤϤʤȻפޤ
ΤȤˤϥƥȤĶޤ
  ޤ黻Ǥʤ CPU ˤ⡢бƤޤ󡣣
ʤϡ#if ǥСեȯˡʤ뤫⤷


    [3.11]      MS-DOS Υǥ

  MCPP  MS-DOS νϤ˰ܿϡǥˤä
translation limits ȥ®٤ۤʤΤǡŪ˱Ŭʥ
ǥ򤹤ɬפޤ
  ץνˤ small data memory model Ǥ⤹ߤޤ
ޥɴİʾ⤢äꡢ1 KB ʾ˵ڤĹʥޥ
äꡢĹĥޥͥȤƸƤӽФꤹ絬Ϥʤ
̤ʥ򥳥ѥ뤹ɬפʤ顢large data ǥǥ
ѥ뤷ƤƤsmall data ǥǥѥ뤷 cpp ٤
䡢®٤٤ʤ뤬ˡ
  MCPP ǽȤˤ large code ǥǥѥ뤹ɬפ
ޤLSI C-86 ǤΤ褦ʥ⡼ǥξϡsystem.H 
OK_MAKE  FALSE ˤʤɤơǽΰʤ褦ˤޤ


ƽϤ˰ܿˡܺ١

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

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

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

SYSTEM
    åȽϤưϣӤꤷޤϣӤ̾Ϥľ
    Ƥޤ̾ƤʤϣӤŬƤ
COMPILER
    åȽϤꤷޤѥ̾Ϥľ
    ޤ̾ƤʤѥŬƤ
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_EX2, COMPILER_OLD, COMPILER_STD1, COMPILER_STD2,
    COMPILER_EXT, COMPILER_EX2
    MCPP  pre-define ϸͭΥޥ̾ʸƥǻ
    ꤷޤפʤΤʤǤޤ0 ĤΥȡ
    Ϥʤˡ*_OLD Τ '_' (underline) ǻϤޤʤ
    ήΥޥǡ MCPP ¹Ի -S <n> ץ <n> 
    1 ʾꤹ pre-define ޤ*_STD?, *_EXT, *_EX2 Ǥ
    ɬ _ ǻϤޤޥ̾ꤷޤ*_STD1  __ ǻϤޤΤǡ*
    _STD2  __ ǻϤޤä __ ǽΤǤSYSTEM_EXT, SYSTEM_EX2,
    COMPILER_STD1, COMPILER_STD2, COMPILER_EXT, COMPILER_EX2 ǤϤΥ
    ͤ SYSTEM_EXT_VAL, SYSTEM_EX2_VAL, COMPILER_STD1_VAL,
    COMPILER_STD2_VAL, COMPILER_EXT_VAL, COMPILER_EX2_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 ΤΤʤǤޤ

  ʾΥޥϤ٤ -N ץ̵Ȥʤޤ

        [4.1.1.2]   Include ǥ쥯ȥ

C_INCLUDE_DIR1, C_INCLUDE_DIR2, CPLUS_INCLUDE_DIR1, CPLUS_INCLUDE_DIR2
    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" 
    ޤGNU C ˼ "C_INCLUDE_PATH",
    "CPLUS_INCLUDE_PATH" ǥեȤǤ
    ѥϤγsystem.c ꤵΡ-I ץꤵ
    Τޤʤ̤ͥˤĤƤ manual.txt [4.2] 
    ȡˡ
ENV_SEP
    δĶѿʣΥѥ񤯻 separator ʸǽ񤭤ޤ
    /usr/local/abc/include:/usr/local/xyz/include Ƚ񤯻 ':' 
    C:DJ112/INCLUDE;C:DJ112/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"

    Ȥʤ "# " ɤǤʤȼηʤ餽˹
    ޤʾˤäƤ system.c  sharp() ˽­ʤ
    Фʤʤ⤷ʤˡ
    ϤˤäƤϡGNU C Τ褦ˡ°ץץåνϤϣܤ
    ǤϤʤcompiler-proper ϣܤηǧ礬ޤ
    ̤ˤϡܤΤۤäΥƱǰΤǹޤ
    ȸޤCompiler-proper ǧСƱϣӾǤ cpp
    ϽϤäƤ⣱ĤǤ­뤯餤Ǥ
    ¹Իץ󤬰㤦Ȥ꤬ΤǡºݤˤϤñ
    ǤϤޤ󡣤ޤGNU  tool ˤ GNU C / cpp ͭνϷ
    򤢤ƤˤƤΤ⤢ΤǡGNU C ǤϤ̵ۤ
    ǤGNU C ѤǤϤǥեȤˤƤˡ
    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 __put_defines (#put_defines) Ǥϡ
    ϤλޥϤ٤ƥȤǰϤǽϤޤѥ
    ѥǤ MCPP νϤ򤳤ͿȺ٥ץץ뤳Ȥ
    ʤΤǡ򤱤뤿Ǥ
    GNU C V.3 ϥѥѥȸޤΩץץ
    åȤȤǤΤǡΥޥ FALSE ȤƤޤ
FNAME_FOLD
    ե̾ʸȾʸ̤ʤϣӤǤϤ TRUE 
    Ǥʤ FALSE Ȥޤ
FOLD_CASE
    ޥɥ饤󤫤饪ץꤷʸȾʸ̤
    ץץåϤϣӤǤϤ FALSE Ȥ̤ʤϣ
    Ǥ TRUE ȤޤʸԤϸߤɤϣӤΤΤʤˡ

        [4.1.1.4]   Ϥθͤ˱

HAVE_PRAGMA
    #pragma ǧ compiler-proper ǤФ TRUE Ȥ
    ʤ FALSE Ȥޤ
EXPAND_PRAGMA
    MODE >= STANDARD  -S1 -V199901L ץꤷ #pragma
    Ԥΰ STDC ʳǤХޥŸоݤȤʤϤǤϡ
    TRUE ޤǥեȤǤ FALSE ȤƤޤVisual C Ǥ
    #pragma ԤΰϾ˥ޥŸоݤȤʤΤǡ TRUE Ȥ
    MCPP  Visual C ѤǤ⡢C99  #pragma ΰ STDC 
    ϤޤʤޥŸоݤȤޤ

HAVE_DIGRAPHS
    Digraphs Ƥ TRUEǤʤ FALSE Ȥ
    ޤ
CAN_CONCAT_STRINGS
    ܤʸƥ뤬ѥˤäϢ뤵ϤǤϡ
     TRUE Ȥޤ
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 ͤ񤭤ޤunsigned long ΤʤϤǤ ULONGMAX 
    LONG_MAX ͤȤޤ<limits.h> ʤƤϴñǤ

HAVE_C_BACKSLASH_A
    åȽϤΥѥΤ '\a', '\v' Ȥ escape sequence
    ǧϤ TRUE ˤǤʤ FALSE ˤޤ

        [4.1.1.5]   Multi-byte character

  MBCHAR Ȥޥ multi-byte character  encoding ꤹ
Ǥ16 ӥåȥƥǤϡꤵ줿 encoding Ȥޤ
32 ӥåȰʾΥƥǤϡο encoding ٤Ʊ
˼ޤMBCHAR ϥǥեȤ encoding ꤹǡ¹Ի
 encoding Ķѿץ#pragma ѹ뤳ȤǤޤʻ
ˤĤƤ manual.txt  [2.3], [2.8], [3.4] 򻲾ȡˡ

MBCHAR
    åȤ multi-byte character ʤܸǤϴ encoding
    μޤ
    16 ӥåȥƥ 32 ӥåȰʾΥƥΤɤǤǤ
    encoding ϼ̤Ǥ
        EUC_JP  :   ܤ extended UNIX code (UJIS)
        SJIS    :   ܤ shift-JIS (MS-Kanji)
        GB2312  :    EUC-like  GB-2312ʴλ
        BIGFIVE :   Ѥ Big Fiveλ
        KSC5601 :   ڹ EUC-like  KSC-5601 (KSX 1001)
    Ϥ shift-states ʤʸХȤ
    encoding Ǥʤmulti-byte character, wide character 
    encoding ХȤǤˤ⤫餺wchar_t ХȤηˤ
    äƤϤ⤢ޤץץå wchar_t ηˤϴΤ
    ޤ󡣥Ǥ multi-byte character  wide character Х
    ȤƤΤǡ˽äƽ򤷤ޤ
    32 ӥåȰʾΥƥǤϼ encoding Ǥޤ
        ISO2022_JP  :   ISO-2022-JP1 Ȥݵʤܸ
        UTF8    :   unicode  encoding ΣǤ UTF-8
    ISO-2022-*  shift-states  encoding ǤUTF-8 ϣХȤ
    unicode 򣱥ХȤʤХȤ encode ΤǤϣХ
    Ȥˤʤޤ
    MBCHAR  0 硢16 ӥåȥƥǤ multi-byte
    character νϼޤ󤬡32 ӥåȰʾΥƥǤ
    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 Five ν򤹤Ϥ 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 ˴ؤ륳ѥưϼ¹ԤδĶ
ˤäѤ礬ޤʬλȤĶ˹碌ꤷƤ
ˤĤƤϡmanual.txt  [2.8] ⻲ȤƤ

        [4.1.1.6]   åȤȥۥȤ˶̤

  ΣĤص塢PART 1 ˽񤤤ƤޤåȽϤȥۥ
Ϥηľ TRUE ȤǤʤ FALSE 
ޤHAVE_LDBL ϸҤ OK_SIZE  TRUE ξȤΤǤ

HAVE_UNSIGNED_LONG
    unsigned long ȤǡĽϤǤϤ TRUE Ȥޤ
HAVE_LONG_LONG
    long long ȤǡĽϤǤϤ TRUE Ȥޤ
    Visual C  Borland C 5.5 Τ褦ˡlong long Ϥʤ __int64 Ȥ
    Ʊη printf() ɽ뤿 length modifier 
    ѰդƤϡ TRUE Ȥޤ
HAVE_LONG_DOUBLE
    long double ȤǡĽϤǤϤ 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, Borland C 5.5 Ǥ
    __int64 ͤɽ "I64" Ȥޤ

        [4.1.2]     PART 2  ۥȥƥ

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

PROTO
    Compiler-proper ؿΥץȥΤǤΤǤФ
    TRUE ȤǤʤ FALSE Ȥޤ
HOST_HAVE_GETENV
    Ϥ getenv() ȤؿäƤФ TRUE ȤǤ
     FALSE ȤޤåȤΣϣӤĶѿäƤ
    ɬפޤ
HOST_HAVE_GETOPT, HOST_HAVE_STPCPY, HOST_HAVE_MEMMOVE, HOST_HAVE_MEMCPY,
    HOST_HAVE_MEMCMP, HOST_HAVE_STRSTR, HOST_HAVE_STRCSPN
    ۥȽϤΥ饤֥ getopt(), stpcpy(), memmove(), memcpy(),
    memcmp(), strstr(), strcspn() Ф줾 TRUE ˡʤ
    FALSE ޤFALSE Ȥ줿ؿˤ lib.c ΤΤȤޤ
FILENAMEMAX
    ۥȽϤ <stdio.h>  FILENAME_MAX ͤǤFILENAME_MAX 
    ϡMS-DOS Ǥ 80¾ΣϣӤǤ BUFSIZ ȤƤƤޤޤ
    
HOST_HAVE_C_BACKSLASH_A
    ۥȽϤΥѥΤ '\a', '\v' Ȥ escape sequence 
    ǧʤϡ FALSE ˤޤ

  Ȥϥ饤֥ؿsize_t ηǤФ狼Ǥ
礦

        [4.1.3]     PART 3  cpp ưͤ

            [4.1.3.1]   ƼΥ⡼ɤλ

MODE
    ޥŸˡȤǥ쥯ƥ֡Ȥ predefined ޥ
    ץץåκȤʤưλͤꤷޤPRE_STANDARD,
    STANDARD, POST_STANDARD Σ郎ޤΥޥϤ줾 0,
    3, 9 ͤޤPRE_STANDARD ȤʳȤǤϡtokenization 
    ̯ʰ㤤ޤ

PRE_STANDARD
    C90 ΥץץͤǤK&R 1st. ϤǤ
STANDARD
    Standard C (C90, C99, C++98) ΥץץͤǤ
POST_STANDARD
    STANDARD ȤۤȤƱǤΤ褦ѹäƤޤ

    Trigraphs ǧʤDigraph  translation phase 1 ǡ
    ץץκǽѴƤޤToken ȤƤϰʤ
    Tokenization  token-base θ§ˤäñ㲽Ƥ
    롣 preprocessing token δ֤ token separator ȤƤ
    white space ʤϡ˼ưŪ a space ʤ
    ޥΥޥ̾ȼ '(' δ֤ˤʤˡäơ#
    黻Ҥˤʸ󲽤Ǥ⤹٤Ƥ preprocessing token δ֤ˤ a
    space äʸ󲽤뤳Ȥˤʤ롣ޤޥκ˺
    Ƥϡtoken separator ̵ͭˤʤʤ
    ؿͥޥκ˺ݤƤϡѥ᡼̾ΰ㤤ˤʤ
    #if ʸɾϤۤȤ portability ʤΤǡ
    ʤʥ顼ˤˡ
    ؿͥޥŸ˴ؤִؿ͡פǤʤԵ§ʵ򥫥åȤ
    Ƥ롣ʤƥϤΥޥִꥹȤоݤȤ
    θ sequence ϼޤʤ
    #include <stdio.h> Ȥ header name ̤̾
    ˥󥰤Фclass 2 Υ˥󥰥ץǡˡޥ
    <stdio.h> η header name Ȥȡüʾˤϥ顼Ȥʤ뤳
    Ȥ롣#include "stdio.h" η侩롣
    ޥǤϥޥִ̾ꥹȤȤδ֤ space ɬפȤ
    ꤬ C99 ɲä줿εˤϽʤtokenization κݤ˼
    ưŪ a space Τǡˡ
    UCN (universal-character-name) ǧʤޤidentifier 
     multi-byte character ǧʤ
    C++ Ǥϣ identifier  operator  operator ȤƤϰ
    ʤ
    -a (-lang-asm, -x assembler-with-cpp) ץϼǤʤ

    ϴ¸ΤɤΥץץåˤʤͤǡ䤬 Standard C ξ
    СȤƴԤñʥץץͤƤߤ
    ǤޤȤʥǤСSTANDARD Ʊ̤ˤʤϤǤ
    ޤSTANDARD Ǥϴ¸νϤȤθߴΤŶƼƤ
    뵬ʰȿλͤ POST_STANDARD ǤϼǤޤʤGNU C
    ѤǤ #include_next ϻȤʤȻ¾ MCPP ȤʤΤǡŶ
    ŤͤƼƤˡ

  MODE >= STANDARD  MODE == PRE_STANDARD Υ⡼ɤȤǤϡޤۤˤ
ޥŸˡΰ㤤¿ޤStandard C  pre-Standard Ȥΰ㤤
Ȼפäƴְ㤤ޤ󡣺Ǥ礭ʰ㤤ϡؿͥޥʰդޥ
ˤŸǡ˥ޥޤޤƤ硢MODE >= STANDARD Ǥϰ
˴ŸƤ鸵ޥִꥹΥѥ᡼֤
ФơPRE_STANDARD ǤŸ˥ѥ᡼ִƥ
Ÿ뤳ȤǤ
  ޤMODE >= STANDARD ǤľܤˤܤˤޥκƵŪŸϤޤ
PRE_STANDARD ǤϺƵŪʥޥȡŸ˥顼Ȥʤ


  ˤ \ ΰ MODE ˤäưۤʤꡢMODE >= STANDARD Ǥ tri-
graph θ塢tokenization  <backslash><newline>  sequence 
ޤMODE == PRE_STANDARD Ǥʸƥˤ #
define Ԥˤ˸¤äƤޤ

   tokenizationʥȡʬ䡢ȡڤФˤ MODE ˤ
ä̯˰㤤ޤ
  MODE >= STANDARD Ǥϡtoken base ǤưפȤ¤
tokenization ԤޤŪˤϡMODE == STANDARD ǤϡޥŸ
Ȥ space ơ token ȤΰտޤʤϢ뤬ȯ
ΤɤޤMODE == POST_STANDARD Ǥϡɤˤ٤Ƥ
preprocessing token δ֤ a space ޤMODE == PRE_STANDARD 
ŪصŪŪ tokenization ȡcharacter base ǤΥƥ
ִפˤޥŸˡκפĤƤޤ
  ˤĤƤϡcpp-test.txt  [1] 

  MODE >= STANDARD Ǥ preprocessing number Ȥͥȡ
˰ޤPRE_STANDARD Ǥϡͥȡϣäȡ󤪤
ưȡƱǤǤ 'U', 'u', 'LL',
'll'ưǤ 'F', 'f', 'L', 'l'  ȡΰȤ
ǧޤ
  磻ʸʸƥʸ MODE >= STANDARD ǤñΥ
Ȥǧޤ

  Digraph, #error, #pragma, _Pragma() operator  MODE >= STANDARD Ǥ
ȻȤޤ-S <n> ץstrict-ansi ⡼ɡˤ -+ ץ
C++ ץץåȤưˤ MODE >= STANDARD ǤȤޤ
Pre-defined ޥ __STDC__, __STDC_VERSION__  MODE >= STANDARD λ
졢PRE_STANDARD λޤ[4.1.3.2] ǽҤ٤
OK_DIGRAPHS, CONCAT_STRINGS  MODE >= STANDARD Ǥʤ TRUE ˤǤޤ

  UCN (universal-character-name)  MODE == STANDARD ǤȤޤ
  Trigraphs  MODE == STANDARD ǤǤޤ
  #if defined, #elif  PRE_STANDARD ǤϻȤޤ#include, #line 
˥ޥȤȤ PRE_STANDARD ǤϤǤޤPre-defined ޥ
__FILE__, __LINE__, __DATE__, __TIME__  PRE_STANDARD λ

  ¾ǡ#assert, #asm (#endasm), #put_defines, #debug  MODE ==
PRE_STANDARD λǤޤ󡣼˽Ҥ٤ OK_IF_JUNK, OK_SIZE,
COMMENT_INVISIBLE, STRING_FORMAL, OK_UNTERM_STRING  PRE_STANDARD Ǥ
 TRUE ǤޤOLD_PREPROCESSOR  PRE_STANDARD λ TRUE
ǤޤOLD_PREPROCESSOR Ǥ # 123 Ȥ #line 123 Ʊ
ΤȤưޤ

  ǥåν⡼ɤˤäƾäƤޤˤĤƤ
manual.txt  [5] 򸫤Ƥ

  ʾ˽Ҥ٤Ȱʳ K&R 1st.  Standard C ȰۤʤΤʵΤʤ
ȤˤĤƤϡMODE == PRE_STANDARD Ǥ C90 ε˽ޤ㤨
#if ηȤˡ

            [4.1.3.2]   ư⡼ɤκλ

OLD_PREPROCESSOR
     TRUE ˤȡCOMMENT_INVISIBLE, STRING_FORMAL, OK_IF_JUNK
     OK_UNTERM_STRING  TRUE ˤʤޤϸŤ "Reiser"
    model  cpp ˶ᤤͤǤGNU C / cpp  -traditional ץ
    Ϥ˶ᤤʤȾüǤ롣Validation Suite ź
    ƥѥץ misc.t  PART 10 ƤߤȤ狼롣¾
     -traditional  #elif  defined  Standard C ιʸȤ
    Ǥ롣Reiser model  Standard C Ȥκ򤷤ͤǤ롣
    ˤĤƤϴबʤΤǡGNU C / cpp Ǥʤ MCPP Ⱦü
    ǤϤˡ
     MODE == PRE_STANDARD λ TRUE Ǥޤ

  ΣĤ MODE == PRE_STANDARD λ TRUE ǤΤǤ

COMMENT_INVISIBLE
    Ȥ򣱸Ĥ space ǤʤĤ space Ѵޤ
    ѴϺǸνϻ˹Ԥޤ
STRING_FORMAL
    ޥִꥹʸƥޤʸꡢ
    ˤɤ줫Υѥ᡼̾ȰפʬϡΥޥθƤӽ
    κݤˤʬϡѥ᡼б֤ޤ
OK_IF_JUNK
     TRUE ˤȡ#else, #endif ιԤ˹ʤȤ񤯤ȤǤ
    ޤб #if MACRO, #ifdef MACRO  MACRO 񤤤ꤹˡ
OK_UNTERM_STRING
     TRUE ˤȡunterminated string literal, unterminated
    character constant Υ顼ȯʤʤޤʤƥ
    Ĥ "  ' ʤϡĤƤȤߤʤޤ
OK_SIZE
     TRUE ˤȡ#if, #elif Ԥ sizeof (type) Ȥޤ
     TRUE ˤ GNU C ǥѥ뤹ϡʤȤ eval.c
    ΥѥǤ -ansi, -pedantic, -pedantic-errors ץդ
    ʤǤ

CPLUS
    -+ ץ C++ ΥץץåȤưˡɸȤ߹
    ߥޥ __cplusplus ͤ˻ޤISO C++ Standard 
     199711L Ǥ-V ץˤäƼ¹ԻѹǤޤ
OK_TRIGRAPHS
    Trigraphs  TRUEǤʤ FALSE Ȥޤ
    MODE != STANDARD ǤϤɤˤƤ trigraph ϼǤޤ
    
TFLAG_INIT
    OK_TRIGRAPHS == TRUE ξ trigraph ν֤ꤷޤ
     TRUE ˤȡdefault  trigraph ǧ졢-3 ץ
    ǵưǧޤFALSE ξϵդ default ǧ-3
    ץǧ褦ˤʤޤ
OK_DIGRAPHS
    Digraphs Ϥ TRUE ޤMODE == STANDARD
    ǤϡHAVE_DIGRAPHS == FALSE νϤξ硢digraphs ϥץץ
    ν MCPP ̾ΥȡѴޤMODE == POST_STANDARD
    Ǥ digraph ϥץץκǽѴƤޤޤ
DIGRAPHS_INIT
    OK_DIGRAPHS == TRUE ξ digraph ν֤ꤷޤ
     TRUE ˤȡdefault  digraph ǧ졢-2 ץǵ
    ưǧޤFALSE ξϵդ default ǧ-2 
    ǧ褦ˤʤޤ
OK_PRAGMA_OP
     TRUE ˤȡ__STDC_VERSION__ >= 199901L λ _Pragma()
    operator ͭˤʤޤα黻Ҥ C99 ΤΤǤʻͤ
    manual.txt [3.7] 򻲾ȡˡ
     MODE >= STANDARD Ǥ TRUE ˤǤޤ
OK_UCN
    MODE == STANDARD  -S1 -V199901L ޤ -+ ץꤷ
    UCN (universal-character-name) ͭˤˤϡ TRUE 
    ޤǥեȤǤ TRUE ȤƤޤ
OK_MBIDENT
    MODE == STANDARD  -S1 -V199901L ץꤷȤ
    identifier  multi-byte character Ȥ褦ˤˤϡ
    TRUE ޤǥեȤǤ FALSE ȤƤޤ
CONCAT_STRINGS
    ܤʸƥ MCPP Ϣ뤷ޤΤɬפʺǾ¤
    escape sequence Ѵ⡢ΩäƤޤCAN_CONCAT_STRINGS
    == FALSE νϤΤΤΤǤCONCAT_STRINGS  OK_UCN
    򶦤 TRUE ȤƤ⡢UCN  multi-byte-character ؤѴϤޤ
     MODE >= STANDARD λ TRUE ˤǤޤ
    ʤϢǤϡʸκǸ夬ʤޤϣʤ escape
    sequence ǡʸƬΤޤϢ뤹Ȥ escape
    sequence ΰȤʤäƤޤΤϡԤʸ򣳥
     escape sequence ѴϢ뤹Ȥˡǡư
    򤷤ƤޤȤBorland C ˤϣ escape sequence ˴ؤ
    ̯ʥХʻͤޤMCPP ǤʸƥϢ뤬
    ΥХαƶ򤹤褦˹פƤޤ

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

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

        [4.1.3.3]   üʻ

DOLLAR_IN_NAME
     TRUE ˤȡ̻ $ Ȥ褦ˤʤޤ
TOP_SPACE
     TRUE ˤȡƬΥȤޤ white spaces ʸ§Ȥ
     a space ˰̤ǡ˽ϤޤFALSE ˤȺޤ
    äΥǤϹƬ white spaces ˤϲΰ̣ʤΤ FALSE Ǥ
    ޤʤϤʤΤǤ֥ץå֤Ȥ
    ʰȿ ѥ뤹ʤɤˤϡTRUE ǥѥ뤷Ƥ
    ȤɬפˤʤޤMCPP ðʳβθΥץץå
    ήѤˤ⡢ɬפˤʤ뤫⤷ޤMODE <= STANDARD Ǥϥ
    եȤǤ TRUE ȤƤޤPOST_STANDARD Ǥ FALSE ȤƤ
    PRE_STANDARD  #asm Ƥϡ#asm ֥åǤ
    TOP_SPACE ɤǤȹƬ white spaces Ϻ
    tokenization Ԥޤ
OK_MAKE
     TRUE ˤȡmakefile Ѱ¸طԤϤ -M* ץ
    ޤ

  ΣĤ MCPP ȤΥǥХåѤΤΤǤtokenization ޥ
Ÿ #if Ԥɾȥ졼뤳ȤǤޤ

DEBUG
     TRUE ˤȡǥХåѤΥ롼ޤ
DEBUG_EVAL
     TRUE ˤȡ#if, #elif Ԥ˴ؤǥХåѥ롼
    ޤ

        [4.1.3.4]   Translation limits λ

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

  줾礭ͤˤۤɻͤϾˤʤޤNWORK, NBUFF,
NMACWORK, SBSIZE 礭Ȥ礭ʥ򿩤ޤη̡
ɥ쥹֤ξƥǤϥޥο¤ޤΤˤϥ
οΤΤǤϤʤ줾ΥޥĹιפꡣ
Ūʷ internal.H  struct defbuf ˽񤤤Ƥˡ
NWORK  system.H  default ͤΤޤޤǡMS-DOS Υ⡼ǥǥ
ѥ뤷 MCPP ξ硢ñʥޥǤпɴĤޤǤ
ǤĹʥޥ¿ȸ٤ϤäȲǤ礦
  NMACWORK, NEXP, RESCAN_LIMIT ϥå񤷤ޤ
  ¾ΤΤϥϤۤɬפȤޤ󤬡system.H ΥǥեȤͰ
ˤƤѾΰ̣ϤۤȤɤʤǤ礦
  C90, C99 ׵᤹ translation limits κ٤ system.H κǸ
ۤ˽񤤤ƤޤC++ Standard  translation limits 񤤤Ƥ
ϣäȰۤʤꡢ׵ͤǤϤޤ

    [4.2]       system.c

  ȤƥåȽϤ˴ؤ뤤ĤƤޤ

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

do_options()
    MCPP ưΥץƤޤޤ implement 
    ʤϤ implement ˤϡν°Υѥɥ
    Ф˹碌ơ˲Ԥ­ȤɬפǤ礦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 noconfig.H (configed.H) Υޥ HAVE_PRAGMA  TRUE 
    ϤΤޤ޽Ϥ compiler-proper ϤǤʤ
    warning ȤȤ˼ΤƤޤMCPP Ȥ #pragma __debug_cpp 
    ϤƤӽФؿǽޤθΰϸ§Ȥ MCPP 
    ʤ #pragma ƱͤǤ#pragma __put_defines, #
    pragma __once ϽϤޤ󡣥إåΡ֥ץץץפεǽ
    äơϤ٥ץץΤĤ뤿Ǥmanual.
    txt  [3.1] ȡˡStandard C ǤϽϸͭγĥ directive  #
    pragma sub-directive ȤƼ뤳ȤˤʤäƤޤδؿ #
    if MODE >= STANDARD  #endif ǰϤǤޤ
do_old()
    Standard C ˹פʤ preprocessing directive #pragma sub-
    directive Ǥʤ #assert, #asm, #endasm, #include_next, #warning, #
    put_defines, #debug ˤɬפʾϡν򤹤ؿ­
    ǡ餽ƤӽФ褦ˤޤƤӽФؿ
     #if MODE == PRE_STANDARD  #endif ǰϤߤޤʤGNU C 
    Ǥ #include_next, #warning  MODE >= STANDARD ǤȤ褦ˤ
    Ƥˡ

    [4.3]   mbchar.c

  ˤ multi-byte character 롼󤬤ޤMCPP ΰܿǤ
Υե򤤤ɬפ̤ϤʤϤǤ̤ multi-
byte character encoding ϡʸפΥơ֥Ƚ
롼񤭲ä뤳Ȥˤʤޤ
  Multi-byte character Ȥߤϡ16 ӥåȥƥѤ 32 ӥåȰ
ΥƥѤȤǰäƤꡢ꡼ξʤ 16 ӥåȥƥѤϼ
Ǥ encoding ꤵƤޤ

char type[]
    16 ӥåȥƥѤʸפΥơ֥ǤʸåȤ
    ASCII Ǥ뤳ȤȤơEUC-JP, shift-JIS, KS C 5601, GB 2321-
    80, Big Five ΤΤ implement Ƥޤϥ桼ʸ
    ʳˤΥꥢޤǤޤ¾ʸåȤξϡ˽­
    ɬפޤShift-states ΤʤХ encoding ǤС
    system.H  MBCHAR Υơ֥бǤϤ
    Ǥ
short type_*[]
    32 ӥåȰʾΥƥѤʸפΥơ֥ǤΣĤΥơ
    ֥뤬ꡢ줾첼 encoding ʸפƤޤ
    ʸåȤ ASCII Ǥ뤳ȤȤƤޤ¹Ի
    ˤϤΤΤɤ줫 short * type Ȥݥ󥿤ޤ
        type_euc[]  :   EUC_JP, GB2312, KSC5601
        type_bsl[]  :   SJIS, BIGFIVE
        type_iso2022_jp[]   :   ISO2022_JP
        type_utf8[] :   UTF8
char * encoding_name[][]
    Multi-byte character encoding ̾Υơ֥Ǥ

set_encoding()
    #pragma __setlocale-m ץ󡢤ӴĶѿ LC_ALL, LC_CTYPE,
    LANG ν򤹤롼Ǥ
mb_init()
    Multi-byte character encoding ˱򤹤롼Ǥ
mb_read_*()
    Multi-byte character ɤ롼ǤΣĤꡢ¹Իˤ
    ΤΤɤ줫 mb_read Ȥؿݥ󥿤ޤ16 ӥå
    ƥǤ mb_read ɬ mb_read_2byte ˤʤޤδؿ
    줾첼 encoding  multi-byte character ѤΤΤǤ
        mb_read_2byte() :   EUC_JP, GB2312, KSC5601, SJIS, BIGFIVE
        mb_read_iso2022_jp()    :   ISO2022_JP
        mb_read_utf8()  :   UTF8
mb_eval()
    Multi-byte character, wide character ʸͤɾ롼
    Ǥ#if ɾǻȤޤ

  Multi-byte character  encoding ˤĤƤϼʸȤơ
Ĥλ򻲾Ȥޤ

    Ken Lunde "Understanding Japanese Information Processing"
            , 1993/09, first edition, O'Reilly & Associates, Inc.
    ²졦²ǻҡʸɤ
            , 1999/09, ŵؽǶ

    [4.4]       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 
Х̣ޤ
  ȤˡMS-DOS / Borland C  large data memory model ǥѥ뤹
ϡ° malloc()ʤȤ free()ˤϰ۾®٤٤Τǡ
δؿȤƤ MCPP ǤϤʤ٤򤱤ƤWIN32 /
Visual C++  malloc() ⤫ʤ٤Τǡ򤱤ȤǤ
  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.lzh
  *2 CygWIN Ǥ¾ malloc() Ȥʤ褦ˤʤäƤΤǡ
    malloc() ϻȤäƤʤ


ХȰܿ𡡡

    [5.1]       Хɤ

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

  Standard C ⡼ɤξ硢ʬ Standard C ˴ְ㤤Ϥʤ
Τ뤿ᡢޤ Validation Suite ȤäƤߤ롣GNU C /
testsuite λȤ륷ƥǤϡconfigure  make check ǼưƥȤ
Ǥ롣
  ʬ MCPP ΰܿ˴ְ㤤ϤʤɤɥȤΤ롣
  ХƸ륵ץ륽Ф롣
  ХФʬ #pragma __debug_cpp <args>  #pragma
__end_debug_cpp ǤϤ 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 __debug_cpp __memory

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

    [5.3]       Х

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

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

    [5.4]       ܿ

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

  ϡ
  noconfig.H (configed.H), system.H, system.c ꡣʤ٤ꥸ
ʥȤκʬե뤬ɤñʤΤʤʸϡʥˤǤ⡢̤¿
ФΥեݤȤǤġ

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

  ʤValidation Suite  V.1.3  GNU C  testsuite бޤ
äơMCPP  GNU C Τɤ줫ΥС˰ܿϡGNU C /
testsuite 󥹥ȡ뤵ƤСGNU C Υץץå MCPP 
ȡMCPP μưƥȤǤޤˤĤƤ cpp-test.txt [2.
2.3], manual.txt [3.9.5]-[3.9.7] 򸫤ƤޤMCPP  configure
 make check Ȥ뤳ȤǸڥåȤˤ뼫ưƥȤǤޤ

    [5.5]       GNU C ʳνϤǤ configure ξ

  MCPP V.2.4  UNIX ϥƥǤ configure Ǥ褦ˤʤޤ
UNIX ϥƥǤ GNU C ʳνϤˤĤƤϻϤޤäΤ
ʤΤǡconfigure ǤϤĤΥץꤷƤʤФʤ
ޤ
  ΥץǻꤹƤˤĤƤϡνϤȤäƤͤ
ΤäƤ뤫ޤĴ٤뤳ȤǤϤǤ狼ϤҶ
Configure ˼Ǥ椭Ȼפޤ
  Configure ˤĤƤ README.jpeuc 

    [5.6]       ǡäƤаܿƤߤޤ

  ܿޤʤϡΤ褦Τ餻
  ΥǡդƤС֤ܿǤ뤫⤷ޤ
Configure λȤĶǤϡΥǡΤΤʤʬ
configure ˤäΤ뤳ȤǤޤ

  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.  ؿΥץȥǤ뤫
  10.  unsigned long 뤫
  11.  long long, long double Ϥɤlong long 硢printf()
Ǥ long long  length modifier ϲlong long ʤƤƱ
η뤫
  12.  <limits.h> ʤ顢CHAR_BIT, UCHAR_MAX, LONG_MAX, ULONG_MAX
͡<limits.h> ʤФΣĤ͡ʣХȤӥåȤʤ
system.H ΥǥեͤƱϤˡ
  13.  <stdio.h>  FILENAME_MAX Ф͡
  14.  #pragma ̤Ϥɤ#pragma ԤΰϥޥŸо
Ȥʤ뤫
  15.  getenv() ؿ뤫Include directory ꤹĶѿˤϤ
̾ȤĶѿʣΥѥ򵭽Ҥ separator ˤϲ
Ȥ
  16.  ̾Ȥ include directory#include ǥإåե򥵡
ε§
  17.  \a, \v ϻȤ뤫
  18.  const ҤϻȤ뤫
  19.  إåե <string.h>, <stdlib.h>, <stddef.h>, <time.h> Ϥ
뤫size_t, time_t Ϥɤ
  20.  ɬפʴؿǡ饤̵֥Τ뤫
  21.  ѥΤʸƥϢ뤬Ǥ뤫
  22.  ѥΤ digraph ǧ뤫
  23.  ̻Ҥ $ Ȥ
  24.  #asm, #endasm Ϥ뤫ǤϤޤ줿֥åΥѥ
ؤμϤϤɤ¾εʳ directive ˤϤɤʤΤ

  25.  ץץåǽ٤ #pragma sub-directive ˤϲ뤫
  26.  ѥΤĹϤɤΤ餤ޤǤ     Validation
Suite ˤ test_l/l_37_8.c 򥳥ѥ뤹Ȥ狼ˡ
  27.  ѥΤǤϡ̻ҤϲХȤޤǼ̤뤫
  28.  ֤ϤɤΤ餤
  29.  ѥ塢Ρ֥֥ȥեפҤϲ
UNIX νϤ .o  MS-DOS νϤ .obj Ρˡ
  30.   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 ˤƥȤǤм֤ϤʤΤǡǤ⤪
ޤGNU C ξϡڥåȤˤ뼫ưƥȤǤޤ

    [5.8]       Τո

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


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 ϻ֤Ǥʤ֤ŪäƤޤGNU C V.2.9x ˼
ƤߤȤGNU C / cpp ȤθߴݤΤˤʤäʤ
ФʤʤȤ狼äǤץ򤤤Ĥɲäĥͤ
ޤޤΥ顼򥦥˥󥰤˳ʲꡢȯ륦
˥󥰤ǥեȤΥ˥󥰥饹Ϥꤷơʤˤ
¤¤Ƥޤ
  ѹ¿ϸΤΤǤꡢڤΤǤϤޤǤ
Ȥ C90  "traditional" ʻͤΰ C99 λͤξΩʤ
ФʤʤȤΤϡϤʤϤܰդʤȤǤ줬ߤ
ץ󥽡μ¾ǤСˤٹ碌ΤϤ򤨤ޤ
  ʤˤ¤Ȥǡ¾νѤǤ⡢°Υץ
å֤ƻȤˤϻȤ䤹ʤäȻפޤ

    [6.3]       ̤Ƨեȥ¤ȡפ˺

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

  ѸǤΥɥȤ롣ȤäơMCPP ȸڥåȤ
Ūɾξ˽ФƤ椯ýϤȾꥫȤʤäƤ븽
ǤϡѸǥɥȤ¸ߤɾڤΤɬܤǤ롣
  ޤǤϥե꡼νϤɾȰܿμоݤȤƤ
ΤμפʽϤθڥåȤˤɾȡMCPP Τؤΰܿʤ
롣
  ޤбƤϤˤĤƤ⡢꿷Сб
롣

  MCPP ñʤåץץåǤýϤΰˤ
̤ƧեȥפȤƤ̤ܶ˷礱뤭餤뤿ᡢ PM 鼡
Τ褦ʽޤ

  GNU C 3.x б롣
  GNU C 3.x  testsuite ǻθڥåȤѤǤ褦ˤ롣
  ȯ򥪡ץʷǿʤƤ椯

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

  ̤Ƨեȥ¤ȡפϤǤޤǤϤޤǤʿ
ǯ٤ˤ⡢ ץȥޥ͡㤬 MCPP ³ץ
ȤȤƺ򤷤Ƥ줿ΤǤơǯ٤Ѥ߻ĤβȤ
ơˤȤäƤ̤иΰΤĤβ˼ȤळȤȤʤޤ
  ΣǯΥѥ˥ȥ֥뤬ȯϡɥ OS 
upgrade ǤˤĤΥȥ֥˸ޤ̤иΥ
ȥνˤ֤פȯϤϤ٤쵤̣Ǥäౡ
ŪˤʤäƤ֤ץȤͤ˶ŤΤ¹
ưˤưʤäƤȤ⡢ۤμǤ(*)
ϣУͤɸ̵ΤʤȤꤷƤ줿ǡƤˤä
Ȳ˼ȤळȤǤޤ
  Visual C++ ؤΰܿPlan9 ؤΰܿconfigure ץȤκISO-
2022-JP, UTF-8 ޤ¿ͤ multi-byte character encoding ؤб
ã뤳ȤǤޤޤɤȤΩʤ
ʤԤȤƤϤΤˤȤߤޤܸǤȱѸ
ǤΥɥȤιȤ֤ΤȤ⡢ϥζϤã
뤳ȤǤޤ

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

  *  2004 ǯ 2  17 ˻

                                                                   [eof]
