3
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
4
<style> pre {color: navy} tt {color: maroon} </style>
5
<style> table {border-collapse: separate; border-spacing: 0px; empty-cells: show; background-color: #f0f0ff} </style>
6
<style> th, td {text-align: left; padding-left: 15px; padding-right: 15px} </style>
11
<h2>== How to Use MCPP ==</h2>
14
<h4>for V.2.6.2 (2006/11)<br>
15
���� �� (kmatsui@t3.rim.or.jp)</p>
20
<h4><dl><dt><a name="toc.1" href="#1">1. ����</a>
21
<dd><a name="toc.1.1" href="#1.1">1.1. �ϣӤ�����Ϥ����Фʤ� portable �ʥ�����</a>
22
<dd><a name="toc.1.2" href="#1.2">1.2. ���Τ� Standard C �⡼�ɤ˲ä��Ƥ���¾�γƼ�⡼�ɤ�</a>
23
<dd><a name="toc.1.3" href="#1.3">1.3. ���Υޥ˥奢���ɽ��ˡ</a>
26
<dt><a name="toc.2" href="#2">2. ��ư���Υ��ץ����ȴĶ�����</a>
27
<dd><a name="toc.2.1" href="#2.1">2.1. <b>mcpp</b> �¹ԥץ������Σ�����Υӥ�ɤȣ��Ĥ�ư��⡼��</a>
28
<dd><a name="toc.2.2" href="#2.2">2.2. ��ư���Υ��ץ����λ���ˡ</a>
29
<dd><a name="toc.2.3" href="#2.3">2.3. ���̤Υ��ץ����</a>
30
<dd><a name="toc.2.4" href="#2.4">2.4. <b>mcpp</b> ��ư��⡼�ɤˤ�륪�ץ����</a>
31
<dd><a name="toc.2.5" href="#2.5">2.5. ����ν����ϰʳ��ν����Ϥ˶��̤Υ��ץ����</a>
32
<dd><a name="toc.2.6" href="#2.6">2.6. �����Ϥ��ȤΥ��ץ����</a>
33
<dd><a name="toc.2.7" href="#2.7">2.7. �Ķ��ѿ�</a>
34
<dd><a name="toc.2.8" href="#2.8">2.8. Multi-byte character �� encoding</a>
35
<dd><a name="toc.2.9" href="#2.9">2.9. ���ѥ�����ѥ���� <b>mcpp</b> ��Ȥ��ˤ�</a>
36
<dd><dl><dt><a name="toc.2.10" href="#2.10">2.10. ���糫ȯ�Ķ��� <b>mcpp</b> ��Ȥ��ˤ�</a>
37
<dd><a name="toc.2.10.1" href="#2.10.1">2.10.1. Visual C++ �� IDE �� <b>mcpp</b> ��Ȥ��ˤ�</a></dl>
39
<dt><a name="toc.3" href="#3">3. ��ĥ��ǽ�ȸߴ���</a>
40
<dd><dl><dt><a name="toc.3.1" href="#3.1">3.1. #pragma MCPP put_defines, #pragma MCPP preprocess ��</a>
41
<dd><a name="toc.3.1.1" href="#3.1.1">3.1.1. �إå��ե������ pre-preprocess</a></dl>
42
<dd><dl><dt><a name="toc.3.2" href="#3.2">3.2. #pragma once</a>
43
<dd><a name="toc.3.2.1" href="#3.2.1">3.2.1. �إå��ե������ #pragma once �����ġ���</a></dl>
44
<dd><a name="toc.3.3" href="#3.3">3.3. #pragma MCPP warning, #include_next, #warning</a>
45
<dd><a name="toc.3.4" href="#3.4">3.4. #pragma MCPP push_macro, #pragma __setlocale ��</a>
46
<dd><dl><dt><a name="toc.3.5" href="#3.5">3.5. #pragma MCPP debug, #pragma MCPP end_debug, #debug, #end_debug</a>
47
<dd><a name="toc.3.5.1" href="#3.5.1">3.5.1. #pragma MCPP debug path, #debug path</a>
48
<dd><a name="toc.3.5.2" href="#3.5.2">3.5.2. #pragma MCPP debug token, #debug token</a>
49
<dd><a name="toc.3.5.3" href="#3.5.3">3.5.3. #pragma MCPP debug expand, #debug expand</a>
50
<dd><a name="toc.3.5.4" href="#3.5.4">3.5.4. #pragma MCPP debug if, #debug if</a>
51
<dd><a name="toc.3.5.5" href="#3.5.5">3.5.5. #pragma MCPP debug expression, #debug expression</a>
52
<dd><a name="toc.3.5.6" href="#3.5.6">3.5.6. #pragma MCPP debug getc, #debug getc</a>
53
<dd><a name="toc.3.5.7" href="#3.5.7">3.5.7. #pragma MCPP debug memory, #debug memory</a></dl>
54
<dd><a name="toc.3.6" href="#3.6">3.6. #assert, #asm, #endasm</a>
55
<dd><a name="toc.3.7" href="#3.7">3.7. C99 �ο���ǽ��_Pragma() �黻�ҡ����Ѱ����ޥ�������</a>
56
<dd><a name="toc.3.8" href="#3.8">3.8. Borland C �� asm ʸ����¾���ü�ʹ�ʸ</a>
57
<dd><dl><dt><a name="toc.3.9" href="#3.9">3.9. GCC �Ȥθߴ���</a>
58
<dd><a name="toc.3.9.1" href="#3.9.1">3.9.1. FreeBSD 2 / kernel �������Υץ�ץ�����</a>
59
<dd><a name="toc.3.9.2" href="#3.9.2">3.9.2. FreeBSD 2 / libc �������Υץ�ץ�����</a>
60
<dd><a name="toc.3.9.3" href="#3.9.3">3.9.3. GCC 2 / cpp �λ��ͤ�����</a>
61
<dd><a name="toc.3.9.4" href="#3.9.4">3.9.4. Linux / glibc 2.1 �������Υץ�ץ�����</a>
62
<dd><dl><dt><a name="toc.3.9.5" href="#3.9.5">3.9.5. GCC 2 �� <b>mcpp</b> ��Ȥ��ˤ�</a>
63
<dd><a name="toc.3.9.5.1" href="#3.9.5.1">3.9.5.1. <b>mcpp</b> �Υ������˥���������ˤ�</a></dl>
64
<dd><a name="toc.3.9.6" href="#3.9.6">3.9.6. GCC 3.2 �������Υץ�ץ�����</a>
65
<dd><a name="toc.3.9.7" href="#3.9.7">3.9.7. GCC 3, 4 �� <b>mcpp</b> ��Ȥ��ˤ�</a>
66
<dd><a name="toc.3.9.8" href="#3.9.8">3.9.8. Linux �� stddef.h, limits.h, #include_next ������</a></dl>
67
<dd><dl><dt><a name="toc.3.10" href="#3.10">3.10. Visual C++ �Υ����ƥ�إå�������</a>
68
<dd><a name="toc.3.10.1" href="#3.10.1">3.10.1. �����Ȥ���������ޥ��� ?</a></dl>
70
<dt><a name="toc.4" href="#4">4. ������������</a>
71
<dd><a name="toc.4.1" href="#4.1">4.1. ����� status ��</a>
72
<dd><a name="toc.4.2" href="#4.2">4.2. Include directory �Υ������ѥ�</a>
73
<dd><a name="toc.4.3" href="#4.3">4.3. Header name �ι���ˡ</a>
74
<dd><a name="toc.4.4" href="#4.4">4.4. #if ����ɾ��</a>
75
<dd><a name="toc.4.5" href="#4.5">4.5. #if ���Ǥ�ʸ�������ɾ��</a>
76
<dd><a name="toc.4.6" href="#4.6">4.6. #if sizeof (type)</a>
77
<dd><a name="toc.4.7" href="#4.7">4.7. White-space sequence ���</a>
78
<dd><a name="toc.4.8" href="#4.8">4.8. <b>mcpp</b> �¹ԥץ������Υǥե���Ȥλ���</a>
81
<dt><a name="toc.5" href="#5">5. ���ǥ�å�����</a>
82
<dd><a name="toc.5.1" href="#5.1">5.1. ���ǥ�å������η���</a>
83
<dd><a name="toc.5.2" href="#5.2">5.2. Translation limits</a>
84
<dd><dl><dt><a name="toc.5.3" href="#5.3">5.3. Fatal error</a>
85
<dd><a name="toc.5.3.1" href="#5.3.1">5.3.1. <b>mcpp</b> ���ȤΥХ�</a>
86
<dd><a name="toc.5.3.2" href="#5.3.2">5.3.2. ʪ��Ū���顼</a>
87
<dd><a name="toc.5.3.3" href="#5.3.3">5.3.3. Translation limits �������Хåե��Υ��顼</a>
88
<dd><a name="toc.5.3.4" href="#5.3.4">5.3.4. #pragma MCPP preprocessed �˴ؤ��륨�顼</a></dl>
89
<dd><dl><dt><a name="toc.5.4" href="#5.4">5.4. Error</a>
90
<dd><a name="toc.5.4.1" href="#5.4.1">5.4.1. ʸ���ȥȡ�����˴ؤ��륨�顼</a>
91
<dd><a name="toc.5.4.2" href="#5.4.2">5.4.2. ���뤷�ʤ��������ե�����Υ��顼</a>
92
<dd><a name="toc.5.4.3" href="#5.4.3">5.4.3. Preprocessing group �����б��ط��Υ��顼</a>
93
<dd><a name="toc.5.4.4" href="#5.4.4">5.4.4. �ǥ��쥯�ƥ��ֹԤ�ñ��ʹ�ʸ���顼</a>
94
<dd><a name="toc.5.4.5" href="#5.4.5">5.4.5. #if ���ι�ʸ���顼��</a>
95
<dd><a name="toc.5.4.6" href="#5.4.6">5.4.6. #if ����ɾ���˴ؤ��륨�顼</a>
96
<dd><a name="toc.5.4.7" href="#5.4.7">5.4.7. #define �Υ��顼</a>
97
<dd><a name="toc.5.4.8" href="#5.4.8">5.4.8. #undef �Υ��顼</a>
98
<dd><a name="toc.5.4.9" href="#5.4.9">5.4.9. �ޥ���Ÿ���Υ��顼</a>
99
<dd><a name="toc.5.4.10" href="#5.4.10">5.4.10. #error, #assert</a>
100
<dd><a name="toc.5.4.11" href="#5.4.11">5.4.11. #include ���</a>
101
<dd><a name="toc.5.4.12" href="#5.4.12">5.4.12. ����¾�Υ��顼</a></dl>
102
<dd><dl><dt><a name="toc.5.5" href="#5.5">5.5. Warning (class 1)</a>
103
<dd><a name="toc.5.5.1" href="#5.5.1">5.5.1. ʸ�����ȡ�����ӥ����Ȥ˴ؤ��륦�����˥�</a>
104
<dd><a name="toc.5.5.2" href="#5.5.2">5.5.2. ���뤷�ʤ��������ե�����Υ������˥�</a>
105
<dd><a name="toc.5.5.3" href="#5.5.3">5.5.3. �ǥ��쥯�ƥ��ֹԤ˴ؤ���Ƽ�Υ������˥�</a>
106
<dd><a name="toc.5.5.4" href="#5.5.4">5.5.4. #if ���˴ؤ��륦�����˥�</a>
107
<dd><a name="toc.5.5.5" href="#5.5.5">5.5.5. �ޥ���Ÿ���˴ؤ��륦�����˥�</a>
108
<dd><a name="toc.5.5.6" href="#5.5.6">5.5.6. ���ֹ�˴ؤ��륦�����˥�</a>
109
<dd><a name="toc.5.5.7" href="#5.5.7">5.5.7. #pragma MCPP warning, #warning</a></dl>
110
<dd><a name="toc.5.6" href="#5.6">5.6. Warning (class 2)</a>
111
<dd><a name="toc.5.7" href="#5.7">5.7. Warning (class 4)</a>
112
<dd><a name="toc.5.8" href="#5.8">5.8. Warning (class 8)</a>
113
<dd><a name="toc.5.9" href="#5.9">5.9. Warning (class 16)</a>
114
<dd><a name="toc.5.10" href="#5.10">5.10. ���ǥ�å���������</a>
117
<dt><a name="toc.6" href="#6">6. �������</a>
121
<h1><a name="1" href="#toc.1">1. ����</a></h1>
122
<p><b>mcpp</b> �� Martin Minow �� DECUS cpp �� kmatsui�ʾ���
123
��ˤ�����Ū�˽�ľ�����åץ�ץ����å��Ǥ���<b>mcpp</b> �Ȥ���̾���� Matsui cpp �Ȥ�����̣�Ǥ�������ϥ������������Τǡ��ƽ����ϤǻȤ��ˤϤ��ν����Ϥ˹�碌�ƥ������˼㴳���ѹ���ä�����ǥ���ѥ��뤷�� <b>mcpp</b> �μ¹ԥץ���������ɬ�פ�����ޤ���</p>
124
<p>���Υޥ˥奢��Ǥϡ����Ǥ�����ν����Ϥ˰ܿ����줿�¹ԥץ������λ��ͤ��������Ƥ��ޤ�������˾ܺ٤��Τꤿ���͡����������鲿�餫�ν����Ϥ˰ܿ����Ƥߤ����ͤϡ��������� mcpp-porting.html �Ȥ����ɥ�����ȤȤ��Ƥ���������<br>
125
�����Υ��������ɥ�����ȤϤ��٤� free software �Ȥ������ޤ���<br>
126
�ޥ˥奢������Ƥ��������ˡ��ޤ� <b>mcpp</b> ����ħ��Ҳ𤷤Ƥ����ޤ���</p>
129
<h2><a name="1.1" href="#toc.1.1">1.1. �ϣӤ�����Ϥ����Фʤ� portable �ʥ�����</a></h2>
130
<p>Linux, FreeBSD, Windows ����¿���ΣϣӤݡ��Ȥ��Ƥ��� portable �ʥץ�ץ����å��Ǥ��ꡢ���Υ������� Standard C (ANSI/ISO/JIS C) �ν����Ϥޤ��� Standard C++ �ν����ϤǤ�������Х���ѥ���Ǥ��빭�� portability ����äƤ��ޤ����饤�֥��ؿ��ϸ�ŵŪ�ʤ�Τ����ȤäƤ��ޤ���<br>
131
�ƽ����Ϥ˰ܿ����뤿��ˤϡ�¿���ξ�硢�إå��ե�������Τ����Ĥ��Υޥ����������ؤ��ƥ���ѥ��뤹������Ǥ��ߤޤ����ǰ��ξ��Ǥ⥽�����ե�����˿����Խ������٤Ǥ���</p>
132
<p>Multi-byte character�ʴ����ˤν��������ܤ� EUC-JP, shift-JIS, ISO2022-JP������ GB-2312�����Ѥ� Big-5���ڹ�� KSC-5601 (KSX 1001) ���б����Ƥ��ꡢUTF-8 ��Ȥ��ޤ���Shift-JIS, ISO2022-JP, Big-5 �ξ�硢����ѥ������Τ�������ǧ�����ʤ������ϤǤϡ�<b>mcpp</b> ��������䤤�ޤ���</p>
135
<h2><a name="1.2" href="#toc.1.2">1.2. ���Τ� Standard C �⡼�ɤ˲ä��Ƥ���¾�γƼ�⡼�ɤ�</a></h2>
136
<p>Standard C ����ư��⡼�ɤΤۤ��ˡ�K&R 1st. �Υ⡼�ɤ� "Reiser" model cpp �Υ⡼�ɤ⤢�ꡢ����ˤϼ��� post-Standard ���ͤΥ⡼�ɤޤǤ���ޤ���C++ �Υץ�ץ����å��Ȥ���ư���¹Ի����ץ����⤢��ޤ���<br>
137
Standard C �⡼�ɤϴ�¸��¿���Υץ�ץ����å��Ȱ�äơ����ʤ����˼������Ƥ���Ĥ��Ǥ���C90, C95, C99, C++98 �Τ��٤Ƥ��б����Ƥ��ޤ���Standard C �ץ�ץ������� reference model �Ȥʤ��Τ��ܻؤ��ƺ�äƤ���ޤ��������ε��ʤΥС������ϼ¹Ի����ץ����ǻ��ꤹ�뤳�Ȥ��Ǥ��ޤ���*1</p>
138
<p>�ۤ��ˤ����Ĥ���ͭ�Ѥʳ�ĥ��ǽ����äƤ��ޤ����ޥ�����Ÿ�������� #if ����ɾ��������ȥ졼������ #pragma MCPP debug �⤢��ޤ����إå��ե������ "pre-preprocess" ���Ƥ������Ȥ�Ǥ��ޤ���<br>
139
�����Ĥ���ͭ�Ѥʼ¹Ի����ץ����������Ƥ��ޤ����������˥Υ�٥����ꤹ�륪�ץ����䡢include directory ����ꤹ�륪�ץ�������Ǥ���<br>
140
�������ˤɤ�ʴְ㤤�����äƤ� <b>mcpp</b> ��˽�������긫������ʥ�å�������Ф����ꤻ�������ΤǤ狼��䤹�����ǥ�å�������Ф���Ŭ�ڤʽ����ޤ����ܿ��������Ȥʤ����ˤĤ��Ƥ�ٹ��ȯ���ޤ���<br>
141
���ʼ��Ǥ���ʤ��顢�����ɥ����������Ū�������������������Ū���ʤ��Ƥ��ߤޤ���<br>
142
�ܺ٤ʥɥ�����Ȥ���°���Ƥ��ޤ���</p>
143
<p><b>mcpp</b> �η������Ƶ�С�
144
®�٤�����٤����ȤǤ���GCC V.3 / cc1 ����٤�ȣ��ܤ��餤�λ��֤�������ޤ�����������Borland C 5.5 / cpp ��Ʊ�����餤��®�٤ǡ��إå��ե������ pre-preprocess �ε�ǽ��Ȥ��Ȥ⤦����®���ʤ�Τǡ��ä��٤��ۤ��ǤϤ���ޤ������ΤǤ��뤳�ȡ�portable �ʥ������Ǥ��뤳�ȡ����ʤ�����Ǥ�ư��뤳�����Τ���ˤϡ��������٤ν������֤Ϥ��ʤ��ȹͤ��Ƥ��ޤ���</p>
145
<p>�ʤ����ץ�ץ����å��� Standard C ����٤�ƥ��Ȥ��뤿��θ��ڥ��åȤǤ��� "Validation Suite for Standard C Preprocessing"�����β��⤪��Ӥ����Ȥäƥƥ��Ȥ����Ƽ�ץ�ץ����å��κ����� cpp-test.html �� <b>mcpp</b> �ȤȤ�˸������Ƥ��ޤ��������ȡ���Standard C ���פȾΤ����¸�Υץ�ץ����å��ˤ�����¿�������꤬���뤫���狼��ޤ���</p>
146
<p><b>mcpp</b> �� V.2.3 �γ�ȯ������ǡ����ڥ��å� V.1.3 �ȤȤ�ˡ����������ʵ���(IPA) ��ʿ������ǯ�١�̤Ƨ���եȥ�������¤���ȡפ˿��� ͵���ץ��������ȥޥ͡�����ˤ�äƺ��졢2002/07 - 2003/02 �δ֤� IPA �λ�����ȿ����Уͤν����Τ�Ȥ˳�ȯ���ʤ���ޤ������Ѹ��ǥɥ�����Ȥ⤳�Υץ��������Ȥ���ǡ�ͭ�²�ҡ��ϥ�������������������������˻䤬�����ȥƥ�����������ä��ƤǤ������ä���ΤǤ���*2<br>
147
<b>mcpp</b> �Ϥ����ʿ������ǯ�٤ˤ��̤Ƨ���եȥ�������¤���ȡפ˰����� �� PM �ˤ�äƷ�³���ƺ��졢V.2.4 �ؤ� update ��Ȥ��ʤ���ޤ�����<br>
148
���θ�� <b>mcpp</b> �ȸ��ڥ��åȤϤ���˲��ɤκ�Ȥ�³�����Ƥ��ޤ���</p>
150
<p>*1 �ø���ε��ʤȤ��Ƥ� ISO/IEC 9899:1990 (JIS X 3010-1993)
151
��Ĺ���Ȥ��Ƥ�������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 �ȸƤ֡�</p>
152
<p>*2 ��̤Ƨ���եȥ�������¤���ȡ�(Exploratory Software Project) �γ��פϼ��ΤȤ������Τ뤳�Ȥ��Ǥ��롣</p>
154
<p><a href="http://www.ipa.go.jp/jinzai/esp/"> http://www.ipa.go.jp/jinzai/esp/</a></p>
156
<p><b>mcpp</b> V.2.3 �ʹߤΥ���������ӥɥ�����Ȥȸ��ڥ��å� V.1.3 �ʹߤϼ��ΤȤ������֤��Ƥ�������</p>
158
<p><a href="http://www.m17n.org/mcpp/"> http://www.m17n.org/mcpp/</a></p>
160
<p>2006/04 �˼��ΤȤ����˰ܤä���</p>
162
<p><a href="http://mcpp.sourceforge.net/"> http://mcpp.sourceforge.net/</a></p>
164
<p><b>mcpp</b> �θŤ��С������Ǥ��� cpp
165
V.2.2 ����Ӹ��ڥ��å� V.1.2 �ϥ٥������ҤΥ����Ȥμ��ΤȤ����ˤ��롣dos/prog/c �Ȥ����ǥ��쥯�ȥ��������Ƥ��뤬��MS-DOS ���ѤǤϤʤ����������� UNIX, WIN32/MS-DOS �����б����Ƥ��롣</p>
167
<p><a href="http://download.vector.co.jp/pack/dos/prog/c/cpp22src.lzh"> http://download.vector.co.jp/pack/dos/prog/c/cpp22src.lzh</a><br>
168
<a href="http://download.vector.co.jp/pack/dos/prog/c/cpp22bin.lzh"> http://download.vector.co.jp/pack/dos/prog/c/cpp22bin.lzh</a><br>
169
<a href="http://download.vector.co.jp/pack/dos/prog/c/cpp12tst.lzh"> http://download.vector.co.jp/pack/dos/prog/c/cpp12tst.lzh</a></p>
171
<p>http://download.vector.co.jp/ �� ftp://ftp.vector.co.jp/ �Ǥ�Ʊ���褦�Ǥ��롣</p>
172
<p>�����Υ��������֥ե�������Υƥ����ȥե�����ϡ�Vector �Τ�Τ� 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 �ǤΣ�����Υ��������֥ե�������֤��褦�ˤ�����</p>
175
<h2><a name="1.3" href="#toc.1.3">1.3. ���Υޥ˥奢���ɽ��ˡ</a></h2>
176
<p>���Υޥ˥奢��Ϥ��ĤƤϥƥ����ȥե�����Ǥ�������V.2.6.2 ����� html �ե�������Ѥ��ޤ�����<br>
177
���Υޥ˥奢��Ǥϼ��Τ褦�˥ե���Ȥ�Ȥ�ʬ���Ƥ��ޤ���</p>
179
<li><tt style="color:navy">source</tt>:<br>
180
<tt style="color:navy">����</tt>�������ե���Ȥϡ�
181
�����������ɤ����Ҥ���ӥ��ޥ�ɥ饤������Ϥ��Τ˻Ȥ��ޤ���<br>
182
<li><tt>__STDC__</tt>:<br>
183
<tt style="color:maroon">���꿧</tt>�������ե���Ȥϡ�ɸ���������ޥ�������Ӳ��餫�Υޥ������Τ˻Ȥ��ޤ���<br>
185
<i>Italic</i> �ե���Ȥ� <b>mcpp</b> �� system.H �Ȥ����������ե��������������ޥ�����ɽ���ޤ������Υޥ˥奢��ǤϤ�����̾���� <b>mcpp</b> �μ�������ɽ�����뤿��˻Ȥ��ޤ��������Υޥ����� <b>mcpp</b> ��ѥ��뤹����˻Ȥ�������ǡ�<b>mcpp</b> �μ¹ԥץ������ˤ�¸�ߤ��Ƥ��ʤ����Ȥ����դ��Ƥ���������<br>
189
<h1><a name="2" href="#toc.2">2. ��ư���Υ��ץ����ȴĶ�����</a></h1>
191
<h2><a name="2.1" href="#toc.2.1">2.1. <b>mcpp</b> �¹ԥץ������Σ�����Υӥ�ɤȣ��Ĥ�ư��⡼��</a></h2>
192
<p><b>mcpp</b> �ˤϡ��ɤν����ϡʥ���ѥ���ˤ������Ω����ñ�Ȥ�ư�� <b>compiler-independent-build </b> �ȡ�����ν����ϤΥץ�ץ����å��˼�ä����ä�ư������������ build (<b>compiler-specific-build) </b> �Ȥ�����ޤ������Ԥϥץ�ץ����������뤿��Τ�Τǡ����ν��Ϥ餫�Υ���ѥ����Ϳ���Ƥ�����������ѥ��뤵���Ȥϸ¤�ޤ���Ԥ�����ν����Ϥǥ���ѥ���ȥ�ޤǹԤ�����Τ�Τǡ�<b>mcpp</b> �ν��ϤϤ��Υ���ѥ���λ��ͤ˹�碌�Ƥ���ޤ���*1</p>
193
<p>���ԤǤϥ��ץ�������λ��ͤ� <b>mcpp</b> ��ѥ��뤷�������ϤΤ�����ˤ�����餺�ۤܰ���ǡ�OS �ˤ����㤬������������Ǥ�����ԤǤ϶��̤λ��ͤȤȤ�ˡ������ϤȤθߴ��Τ���λ��ͤ�¿�����ꡢ������ʬ�Ͻ����Ϥ��Ȥ˰ۤʤäƤ��ޤ���Compiler-independent �ǤΥ��ץ����Ͻ����������ǤǤ�ܻۤȤ��ޤ����������ϤΥ��ץ����Ȥξ��ͤ��뤿����̤Υ��ץ����ˤʤäƤ����Τ⤢��ޤ���<br>
194
�ʤ������Υɥ�����Ȥǡ�GCC �ѡס�Visual C �ǡ�����ɽ�����Ƥ���ΤϤ�����⤽�줾�� GCC ���� build, Visual C ���� build �ΰ�̣�Ǥ���</p>
195
<p>Compiler-independent �ǤǤ�����������ǤǤ⡢<b>mcpp</b> �ˤϤ����Ĥ���ư��⡼�ɤ����ꡢ���줾��ۤʤ�ץ�ץ��������ͤ�ư��ޤ����⡼�ɤˤϼ��Σ��Ĥ���ޤ���</p>
198
Standard C (C90, C99, C++98) �Υץ�ץ��������ͤǤ������줬�ǥե���ȤΥ⡼�ɤǤ���<br>
199
<li><i>COMPAT</i><br>
200
std �⡼�ɤ��Ѽ�ǡ��Ƶ�Ū�ޥ����ʤ��⤵���Ÿ�����ޤ���<br>
201
<li><i>POSTSTD</i><br>
202
kmatsui ������˺�ä��ץ�ץ��������ͤǡ�Standard C �μ�����Ӥ��ʤ��������������ñ�㲽������ΤǤ���<br>
204
C90 ������ K&R 1st. �Υץ�ץ��������ͤǤ���<br>
205
<li><i>OLDPREP</i><br>
207
model cpp ��ư����ͤǤ���<br>
209
<p>�����Υ⡼�ɤ���ꤹ�륪�ץ����ϼ����̤�Ǥ���
210
�⡼�ɤ���ꤷ�ʤ��� -@std ����ꤷ�����Ȥˤʤ�ޤ���</p>
212
<li><samp>-@std</samp><br>
214
<li><samp>-@compat</samp><br>
215
<i>COMPAT</i> �⡼��<br>
216
<li><samp>-@post, -@poststd</samp><br>
217
<i>POSTSTD</i> �⡼��<br>
218
<li><samp>-@kr</samp><br>
220
<li><samp>-@old, -@oldprep</samp><br>
221
<i>OLDPREP</i> �⡼��<br>
223
<p><i>STD</i>, <i>COMPAT</i>, <i>POSTSTD</i> ���碌�� Standard �⡼�ɡ�<i>KR</i> ��
224
<i>OLDPREP</i> ���碌�� pre-Standard �⡼�ɤȸƤ֤��Ȥˤ��ޤ����ޤ���<i>COMPAT</i> �� <i>STD</i> �ȤۤȤ��Ʊ���ʤΤǡ��ä��Ǥ�ʤ��¤� <i>STD</i> �ˤ� <i>COMPAT</i> ��ޤᡢɬ�פʾ����� <i>COMPAT</i> �˸��ڤ��ޤ���*2</p>
225
<p>Standard �� pre-Standard �Υ⡼�ɤȤǤϡ��ޥ���Ÿ����ˡ�ΰ㤤��¿������ޤ���C90 �� pre-C90 �Ȥΰ㤤���Ȼפäƴְ㤤����ޤ��Ǥ��礭�ʰ㤤�ϡ��ؿ��ͥޥ����ʰ����դ��ޥ����ˤ�Ÿ���ǡ������˥ޥ������ޤޤ�Ƥ����硢Standard �⡼�� �Ǥϰ�������˴�����Ÿ�����Ƥ��鸵�ޥ������ִ��ꥹ����Υѥ������֤�������Τ��Ф��ơ�pre-Standard �Ǥ�Ÿ�������˥ѥ������ִ������ƥ���������Ÿ�����뤳�ȤǤ���<br>
226
�ޤ���Standard �⡼�� �Ǥ�ľ�ܤˤ���ܤˤ�ޥ����κƵ�ŪŸ���ϸ�§�Ȥ��Ƥ��ޤ���pre-Standard �ǤϺƵ�Ū�ʥޥ������������ȡ�Ÿ������̵�ºƵ�������������ƥ��顼�Ȥʤ�ޤ���</p>
227
<p>�����ˤ��� \ �ΰ�����⡼�ɤˤ�äưۤʤꡢStandard �⡼�� �Ǥ� trigraph �����θ塢tokenization ������ <backslash><newline> �� sequence �������ޤ�����pre-Standard �⡼�� �Ǥ�ʸ�����ƥ�����ˤ������ #define �Ԥˤ�����˸¤äƤ���������ޤ���</p>
228
<p>������ tokenization�ʥȡ�����ʬ�䡢�ȡ�������ڤ�Ф��ˤ�⡼�ɤˤ�ä���̯�˰㤤�ޤ���<br>
229
Standard �⡼�� �Ǥϡ�token base �Ǥ�ư��פȤ�����������¤� tokenization ��Ԥ��ޤ�������Ū�ˤϡ�Standard �⡼�� �Ǥϡ��ޥ�����Ÿ������Ȥ�������� space ���������ơ������ token �Ȥΰտޤ��ʤ�Ϣ�뤬ȯ������Τ��ɤ��ޤ���pre-Standard �⡼�� ������Ū���ص�Ū������Ū�� tokenization �ȡ���character base �ǤΥƥ������ִ��פˤ��ޥ���Ÿ����ˡ�κ��פ�Ĥ��Ƥ��ޤ������������ˤĤ��Ƥϡ�<a href="cpp-test.html#2"> cpp-test.html#2</a> ��������������<br>
230
Standard �⡼�� �Ǥ� preprocessing number
231
�Ȥ������ͥȡ���������̤�˰����ޤ���pre-Standard �Ǥϡ����ͥȡ�����ϣä���������ȡ��������ư���������ȡ������Ʊ���Ǥ�����������Ǥ������� 'U', 'u', 'LL', 'll'����ư����������Ǥ������� 'F', 'f', 'L', 'l' �ϥȡ�����ΰ����Ȥ���ǧ�����ޤ���<br>
232
�磻��ʸ����ʸ�����ƥ���ʸ������� Standard �⡼�� �Ǥ���ñ��Υȡ�����Ȥ���ǧ������ޤ���</p>
233
<p>Digraph, #error, #pragma, _Pragma() operator �� Standard �⡼�� �Ǥʤ��ȻȤ��ޤ���-S <n> ���ץ�����strict-ansi �⡼�ɡˤ� -+ ���ץ�����C++ �ץ�ץ����å��Ȥ���ư���ˤ� Standard �⡼�� �Ǥ����Ȥ��ޤ���������ޥ��� <tt>__STDC__</tt>, <tt>__STDC_VERSION__</tt> �� Standard �⡼�� �λ���������졢pre-Standard �λ����������ޤ���<br>
234
#if defined, #elif �� pre-Standard �ǤϻȤ��ޤ���#include, #line �ΰ����˥ޥ�����Ȥ����Ȥ� pre-Standard �ǤϤǤ��ޤ���������ޥ��� <tt>__FILE__</tt>, <tt>__LINE__</tt>, <tt>__DATE__</tt>, <tt>__TIME__</tt> �� pre-Standard �λ����������ޤ���<br>
235
¾���ǡ�#assert, #asm (#endasm), #put_defines, #debug �� pre-Standard �⡼�ɤǤ����Ȥ��ޤ���<br>
236
#if ���� Standard �⡼�� �Ǥ� long long / unsigned long long ��ɾ�����ޤ�����pre-Standard �⡼�� �Ǥ� (signed) long ������ɾ�����ޤ���#if ���� sizeof (type) ���Ȥ���Τ� pre-Standard �����Ǥ���</p>
237
<p>Trigraph �� UCN (universal-character-name) �ϡ�<i>STD</i> �⡼�ɤǤ����Ȥ��ޤ���</p>
238
<p>���ǥ�å������ν�����⡼�ɤˤ�äƾ�����äƤ��ޤ���</p>
240
K&R 1st. �� Standard C �Ȱۤʤ����Τʵ���Τʤ����Ȥ���ˤĤ��Ƥϡ�pre-Standard �⡼�� �Ǥ� C90 �ε���˽����ޤ���</p>
241
<p><i>OLDPREP</i> �⡼�ɤ� <i>KR</i> �⡼�ɤȤΰ㤤������� <i>POSTSTD</i>, <i>COMPAT</i> �ƥ⡼�ɤ� <i>STD</i> �⡼�ɤȤΰ㤤�ϼ��Τ褦�ʤ�ΤǤ���</p>
243
<li><i>OLDPREP</i><br>
244
���Τ褦�ʻ��ͤθŤ� "Reiser model cpp" ��ư����old preprocessor �ΰաˡ�<br>
247
<li>�����ȤĤ� space �Ǥʤ����Ĥ� space ���Ѵ����롣�����Ѵ��ϸ�§�Ȥ��ƺǸ�ν��ϻ��˹Ԥ�롣���������ޥ�������Ǥ������ľ��˹Ԥ��롣<br>
248
<li>�ޥ���������ִ��ꥹ�����ʸ�����ƥ��ޤ���ʸ����������ꡢ������ˤɤ줫�Υѥ���̾�Ȱ��פ�����ʬ��������ϡ����Υޥ����θƤӽФ��κݤˤ�����ʬ�ϡ��ѥ������б�����������֤��������롣���פ�����ʬ�Ȥ����Τϡ�ξü�� " �ޤ��� ' ��Ϥ�������Ȥ�ȡ�������Ȥ��Ƹ������˰��פ���ȡ�����Τ��ȤǤ��롣<br>
249
<li>#else, #endif �ιԤ˲����Ƥ��äƤ⥨�顼�ˤ���̵�뤹����б����� #if MACRO, #ifdef MACRO �� MACRO ����ꤹ��ˡ�<br>
250
<li>��ƥ����Ĥ��� " �� ' ���ʤ����ϡ��������Ĥ����Ƥ���Ȥߤʤ���unterminated string literal, unterminated character constant �Υ��顼��ȯ�����ʤ��ˡ�<br>
251
<li># 123 �Ȥ����Ԥ� #line 123 ��Ʊ����ΤȤ��ư�����<br>
254
<li><i>COMPAT</i><br>
255
�Ƶ�Ū�ޥ����ʤ��⤵���Ÿ�����롣
256
���ʤ�����Ƶ�Ū�ޥ�����Ÿ���˺ݤ��ơ�Ʊ̾�ޥ����κ��ִ���ػߤ����ϰϤʤ��ⶹ���Ȥ롣<br>
257
�Ƶ�Ū�ޥ�����Ÿ���ε���ˤĤ��Ƥ� <a href="cpp-test.html#3.4.26"> cpp-test.html#3.4.26</a> �ȤΤ��ȡ��Ƶ�Ū�ޥ����ζ������ test-t/recurs.t �ȤΤ��ȡ�*3<br>
259
<li><i>POSTSTD</i><br>
260
����ϵ��ʤ˼��Τ褦���ѹ���ä�����ΤǤ��롣<br>
263
<li>Trigraphs ��ǧ�����ʤ���Digraph �� translation phase 1 �ǡ�
264
���ʤ���ץ�ץ������κǽ���Ѵ����Ƥ��ޤ���Token �Ȥ��Ƥϰ���ʤ���<br>
265
<li>Tokenization ������ token-base �θ�§�ˤ������ä�ñ�㲽���Ƥ��롣��������� preprocessing token �δ֤� token separator �Ȥ��Ƥ� white space ���ʤ����ϡ������˼�ưŪ�� a space ����������ʤ��������ޥ��������Υޥ���̾�ȼ��� '(' �δ֤ˤ��������ʤ��ˡ��������äơ�# �黻�Ҥˤ��ʸ���Ǥ⤹�٤Ƥ� preprocessing token �δ֤ˤ� a space �����ä����ʸ������뤳�Ȥˤʤ롣�ޤ����ޥ����κ�����˺ݤ��Ƥϡ�token separator ��̵ͭ������ˤʤ�ʤ���<br>
266
<li>�ؿ��ͥޥ����κ�����˺ݤ��Ƥϡ��ѥ���̾�ΰ㤤������ˤ��ʤ���<br>
267
<li>#if �����ʸ������ϻȤ��ʤ��ʥ��顼�ˤ���ˡ�<br>
268
<li>�ؿ��ͥޥ�����Ÿ���˴ؤ���ִؿ��͡פǤʤ��Ե�§�ʵ���åȤ��Ƥ��롣
269
���ʤ�����ƥ������Ϥ��Υޥ������ִ��ꥹ�Ȥ������оݤȤ������θ���� sequence �ϼ����ޤʤ���<br>
270
<li>#include <stdio.h> �Ȥ��������� header name ���̾���̤������������˥�Ф���class 2 �Υ������˥��ץ����ǡˡ��ޥ����� <stdio.h> �η��� header name ��Ȥ��ȡ��ü�ʾ��ˤϥ��顼�Ȥʤ뤳�Ȥ����롣#include "stdio.h" �η�����侩���롣<br>
271
<li>�ޥ�������Ǥϥޥ���̾���ִ��ꥹ�ȤȤδ֤� space ��ɬ�פȤ������꤬ C99 ���ɲä��줿�������ε���ˤϽ���ʤ���tokenization �κݤ˼�ưŪ�� a space �����������Τǡˡ�<br>
272
<li>UCN (universal-character-name) ��ǧ�����ʤ����ޤ���identifier ��� multi-byte character ��ǧ�����ʤ���<br>
273
<li>C++ �Ǥϣ������ identifier �� operator �� operator �Ȥ��Ƥϰ���ʤ���<br>
276
<p>�����������Ȥ� <b>mcpp</b> �μ¹ԥץ������ˤϤ����Ĥ�λ��ͤ�����Τǡ��ޥ˥奢������դ����ɤ�Ǥ������������ξϤǤϤޤ� <b>mcpp</b> �ζ��̤Υ��ץ�����������������ư��⡼�ɤˤ�äưۤʤ륪�ץ�����Ҥ١���������ν����������Ǥ�����ƶ��̤Υ��ץ�����Ҥ١����Τ��Ȥǽ����������Ǥν����Ϥ��Ȥ˰ۤʤ륪�ץ����ܤ��ޤ���</p>
278
<p>*1 ���Τۤ� subroutine-build �Ȥ�����Τ⤢�롣���餫��¾�Υᥤ��ץ�����फ�� <b>mcpp</b> �����֥롼����Ȥ��ƸƤӽФ�����ΤǤ��롣�����������λ��ͤ� <b>mcpp</b> ��ѥ��뤷����������ˤ�ä� compiler-specific-build �ޤ��� compiler-independent-build �Τɤ��餫��Ʊ���ˤʤ�Τǡ����Υޥ˥奢��Ǥ��äˤȤꤢ���ʤ���</p>
279
<p>*2 V.2.5 �ޤǤ� Standard �⡼�ɤ� pre-Standard �⡼�ɤȤǼ¹ԥץ�����ब�̤ˤʤäƤ�������V.2.6 ���飱�Ĥ����礵�줿��</p>
280
<p>*3 ����� GCC, Visual C++ ���μ��פʽ����ϤȤθߴ����Τ���Υ��ץ����Ǥ��롣'<i>COMPAT</i>' �� "compatible" �ΰ�̣�Ǥ��롣</p>
283
<h2><a name="2.2" href="#toc.2.2">2.2. ��ư���Υ��ץ����λ���ˡ</a></h2>
284
<p>�ʲ��ε��ܤǤϡ�<arg> �Ȥ�����ˡ�� arg ���桼�������Ϥ��٤�Ǥ�դΰ����Ǥ��뤳�Ȥ���[arg] �� arg ����ά��ǽ�ʰ����Ǥ��뤳�Ȥ��ޤ����ɤ���ˤ��Ƥ� <, >, [, ] ��ʸ�����Τ�Τ����Ϥ��ƤϤ����ޤ���</p>
285
<p><b>mcpp</b> ��ư����ϼ��η��Ǥ�����������mcpp �Ȥ���̾���� <b>mcpp</b> �Υ��ȡ�����λ���ˤ�äƤ��̤�̾���ˤʤ�ޤ���</p>
287
mcpp [-<opts> [-<opts>]] [in_file] [out_file] [-<opts> [-<opts>]]
289
<p>out_file�ʽ��ϥѥ��ˤ���ά���줿���ϡ�-o ���ץ�����ꤵ��ʤ��¤��ɸ����Ϥ˽��Ϥ��ޤ���in_file�����ϥѥ��ˤ��ά���줿����ɸ�����Ϥ������Ϥ��ޤ������ǥ�å������ϡ�-Q ���ץ�����ꤵ��ʤ��¤��ɸ�२�顼���Ϥ˽��Ϥ��ޤ���<br>
290
�����Τɤ줫�Υե����뤬�����ץ�Ǥ��ʤ����ϡ����顼��å�������Ф��ƽ�λ���ޤ���</p>
291
<p>������ɬ�פȤ��륪�ץ����˰������ʤ����ϥ��顼�Ȥʤ�ޤ���-M ���ץ����������̡ˡ�<br>
292
������ɬ�פȤ��륪�ץ����Ǥ� -I<arg>, -I <arg> �Τɤ����ͭ���Ǥ��ʥ��ץ����ʸ���Ȱ����δ֤� space �Ϥ��äƤ�ʤ��Ƥ��ɤ��ˡ�<br>
293
�����Τʤ����ץ����� -Qi, -Q -i �Τɤ����ͭ���Ǥ��ʣ��Ĥ� '-' �θ�ˤĤʤ��Ƥ��̡��� '-' ���դ��Ƥ��ɤ�����������-M �ϤĤʤ��ƤϤ����ʤ��ˡ�<br>
294
Ʊ��Υ��ץ����ʣ������ꤵ�줿��硢-D, -U, -I, -W ���ץ����Ϥ��줾�줬ͭ���Ǥ���-S, -V, -+ �ϣ����ܰʹߤ�̵�뤵��ޤ���-2, -3 �Ϥ��Τ��Ӥ˻��ͤ�ȿž���ޤ�������¾�Υ��ץ����ϺǸ�˻��ꤵ�줿��Τ�ͭ���Ǥ���</p>
295
<p>��ʸ���Ⱦ�ʸ���϶��̤���ޤ���<br>
296
�����륹���å�����饯���� Windows
297
�Ǥ� - �Ǥ��ꡢ/ �ǤϤ���ޤ���<br>
299
usage ʸ��ɽ�������Τǡ�mcpp -? ���Ȥ��뤳�Ȥǡ��Ȥ��륪�ץ�����Τ���뤳�Ȥ��Ǥ��ޤ���Usage ʸ�Τۤ��ˤ⤤���Ĥ��Υ��顼��å�����������ޤ������������ƤϤ�����⼫���Τ�ΤǤ���Τǡ������Ͼ�ά���ޤ���</p>
302
<h2><a name="2.3" href="#toc.2.3">2.3. ���̤Υ��ץ����</a></h2>
303
<p><b>mcpp</b> ��ư��⡼�ɤ�����Ϥˤ��ʤ����̤Υ��ץ����ϼ����̤�Ǥ���</p>
305
<li><samp>-C</samp><br>
306
��������Υ����Ȥ���Ϥ��롣�ǥХå�����ͭ�Ѥʥ��ץ����Ǥ��롣�������������Ȥϥ������������Ԥ���Ƭ�˰ܤ��ƽ��Ϥ��롣�����Ȥν����ϥޥ���Ÿ����ǥ��쥯�ƥ��֤ν��������˹Ԥ����ΤǤ��ꡢ�����Ȥϥޥ����ƤӽФ�������ˤ��뤫�⤷��ʤ�����Ǥ��롣<br>
308
<li><samp>-D <macro>[=[<value>]]</samp><br>
309
<li><samp>-D <macro(a,b)>[=[<value>]]</samp><br>
310
�ޥ��� macro ��������롣�����������Ƥ���ޥ����Ǥ� <tt>__STDC__, __STDC_VERSION__, __FILE__, __LINE__, __DATE__, __TIME__, __cplusplus</tt> �ʳ��Ǥ���С����Υ��ץ�����������ѹ��Ǥ����C99 �� <tt>__STDC_HOSTED__</tt> �� GCC V.3 �Τ褦�� -D ���ץ����������������Ϥ⤢��Τǡ��㳰Ū�˵��Ĥ���ˡ�=<value> �����ꤵ��Ƥ���� value �����������ά����Ƥ���� 1 ����������bcc32 �ǤϾ�ά���ˤϣ��ĤΥȡ��������������Τǡ�����Ȥϰ㤦���Ȥ����աˡ�= �����ˤ϶��������ƤϤ����ʤ���= �θ�˶�����Ф��Υޥ����ϣ��ĤΥȡ�������������롣<br>
311
���Υ��ץ����Ǥϡ������Ĥ��ޥ���������Ǥ��롣<br>
312
���Υ��ץ����ϲ���Ǥ����Ǥ��롣
315
<li><samp>-e <encoding></samp><br>
316
Multi-byte character �� encoding �� <encoding> ���ѹ����롣
317
<encoding> �ˤĤ��Ƥ� <a href="#2.8"> 2.8</a> �ȤΤ��ȡ�
320
<li><samp>-I <directory></samp><br>
321
Include directory �Υ������ѥ������̤� directory
322
����ꤹ��ʥ������ѥ��ˤĤ��Ƥ� <a href="#4.2"> 4.2</a> �ȡˡ�directory ̾�� space
323
���ޤޤ����ϡ�directory ̾���Τ� " �� " �ǰϤळ�ȡ�<br>
325
<li><samp>-I 1, -I 2, -I 3</samp><br>
327
"header" �η����Ρ�<header> �η����ǤϤʤ��˥ǥ��쥯�ƥ��֤Ǻǽ�˥����������ǥ��쥯�ȥ�δ�����ꤹ�롣-I1 �Ǥϥ����ȥǥ��쥯�ȥꡢ-I2 �Ǥϥ������ե�����ʥ��롼�ɸ��ˤΤ���ǥ��쥯�ȥꡢ-I3 �ǤϤ���������������ʾܺ٤� <a href="#4.2"> 4.2</a> �ȡˡ�<br>
329
<li><samp>-j</samp><br>
330
���ǥ�å������ν��ϤǤϥ������������ղþ���Ͻ��Ϥ�����
331
���Ԥο��ǥ�å������������Ϥ���ʥǥե���ȤǤϣ��Ԥο��ǥ�å�������³���ơ����Υ������Ԥ�ɽ������롣�������ե����뤬 include ���줿��ΤǤ�����ϡ�include ���ιԤ�缡ɽ������롣�ޥ����˴ؤ�����ǥ�å������Ǥϡ�Ÿ�����Υޥ�����缡ɽ�������ˡ�<br>
332
GCC �� testsuite �ǻ�θ��ڥ��åȤ�Ȥ����ϡ����Υ��ץ�������ꤷ�ơ�GCC ��Ʊ�����ǥ�å����������ˤ���ɬ�פ����롣<br>
335
<p>-M* ���ץ����� makefile �Ѥΰ�¸�ط��Ԥ���Ϥ����ΤǤ���ʣ���Υ������ե����뤬�����硢���٤ƤΥ������ˤĤ��Ƥ����� -M* ���ץ������դ��Ƽ¹Ԥ��ơ����ν��Ϥ�ޡ�������ȡ�makefile ��ɬ�פʰ�¸�ط����ҹԤ��������ޤ��������Υ��ץ����� GCC �Τ�Τ˹�碌�Ƥ��ޤ����������㤤������ޤ���*1</p>
337
<li><samp>-M</samp><br>
338
�������ե�����ΰ�¸�ط��Ҥ���Ԥ���Ϥ��롣������ϥ��ޥ�ɥ饤��ǻ��ꤵ�줿���ϥե����롢���줬���ꤵ��Ƥ��ʤ����ɸ����ϤǤ��롣�Ԥ�Ĺ������ޤꤿ���ࡣ�̾�Υץ�ץ�������̤Ͻ��Ϥ��ʤ���<br>
340
<li><samp>-MM</samp><br>
341
-M �Ȥۤ�Ʊ���Ǥ��뤬�����Υإå��ϽФ��ʤ���<br>
343
<li>#include <stdio.h>
344
����� include �������<br>
345
<li>#include "/include/stdio.h"
346
�������Хѥ��ǻ��ꤵ��Ƥ����Ρ�<br>
347
<li>#include "stdio.h" �η����Ǥ��뤬��
348
�����ȥǥ��쥯�ȥ�ʽ����Ϥ� -I <n> ���ץ����ˤ�äƤϥ������Τ���ǥ��쥯�ȥ�ˤ�ȯ�����줺�������ƥ����� include �ǥ��쥯�ȥ��ȯ�����줿��Ρ�-I <directory> ���ץ�����Ķ��ѿ����ǻ��ꤵ�줿�ǥ��쥯�ȥ��ޤ�ˡ�<br>
351
<li><samp>-MD [FILE]</samp><br>
352
-M �Ȥۤ�Ʊ���Ǥ��뤬���̾�Υץ�ץ�������̤⥳�ޥ�ɥ饤��ǻ��ꤵ�줿�ե�����ޤ���ɸ����Ϥ˽��Ϥ���뤳�Ȥ���äƤ��롣�ޤ�����¸�ط��Ԥν�����ϡ� FILE �����ꤵ�줿���Ϥ��Υե�����Ȥʤꡢ���ꤵ��Ƥ��ʤ����ϥ������ե�����̾�� .c �� .d ���Ѥ����ե�����Ȥʤ롣<br>
354
<li><samp>-MMD [FILE]</samp><br>
355
-MD �Ȥۤ�Ʊ���Ǥ��뤬��-MM ��Ʊ�ͤ˥����ƥ�إå��Ȥߤʤ�����ΤϽФ��ʤ����Ȥ���äƤ��롣��¸�ط��Ԥν������ -MD [FILE] ��Ʊ����<br>
357
<li><samp>-MF FILE</samp><br>
358
������� FILE �ˤ��롣-MD FILE, -MMD FILE ��ͥ�褹�롣<br>
360
<li><samp>-MP</samp><br>
362
target" ����Ϥ��롣Phony target �Ȥ����Τϡ����롼�ɤ����ե����룱�ģ��ĤˤĤ��ơ����켫�Τ��¸�������ʤ��������åȤȤ��ơ����Τ褦�˵��Ҥ����ΤǤ��롣<br>
364
test.o: test.c test.h
367
<li><samp>-MT TARGET</samp><br>
368
�������åȤ�̾�����̾�� foo.o �ǤϤʤ� TARGET �ˤ��롣-MT '$(objpfx)foo.o' �Ȥ������ץ����Ǥϼ��Τ褦�ʹԤ����Ϥ���롣<br>
370
$(objpfx)foo.o: foo.c
372
<li><samp>-MQ TARGET</samp><br>
373
-MT ��Ʊ�ͤǤ��뤬��make �ˤȤä����̤ʰ�̣�����ʸ���ϼ��Τ褦�� quote ���롣<br>
375
$$(objpfx)foo.o: foo.c
377
<li><samp>-N</samp><br>
378
'_' �ǻϤޤ��Τ�ޤ�Ƥ��٤Ƥλ�������ޥ�����̵���ˤ��롣�����������ʤ��ᤵ��Ƥ����������ޥ�������� __MCPP �Ͻ��������ʤ��ᤵ��Ƥ����������ޥ����Ȥϡ�<tt>__FILE__, __LINE__, __DATE__, __TIME__, __STDC__, __STDC_VERSION__</tt>, C99 �� <tt>__STDC_HOSTED__</tt> ����� C++ �� <tt>__cplusplus</tt> �Ǥ��롣��<tt>__MCPP</tt> �� undefine ���������� -U ���ץ�����Ȥ����ȡˡ�<br>
380
<li><samp>-o <file></samp><br>
381
�ץ�ץ�������Υ������� file �˽��Ϥ��롣��ά����������������ϥѥ��Ȥʤ�Τǡ�̵���Ƥ�褤���ץ����Ǥ��뤬������ѥ���ɥ饤�Фˤ�äƤϤ��Υ��ץ�����Ȥ���Τ����롣<br>
383
<li><samp>-P</samp><br>
384
����ѥ������Τ˹��ֹ�������������Ϥ��ά���롣�äΥץ�ץ����å��ʳ������Ӥ�ή�Ѥ�����˻Ȥ����ץ����Ǥ��롣<br>
386
<li><samp>-Q</samp><br>
387
���ǥ�å�������ʥ����ȥǥ��쥯�ȥ�Ρ�mcpp.err �Ȥ���̾���Υե�����˽��Ϥ����mcpp.err �ϸ���˥��ڥ�ɤ���Ƥ椯�Τǡ�����������뤳�ȡˡ�<br>
389
<li><samp>-U <macro></samp><br>
390
�����������Ƥ���ޥ��� macro ����ä���<tt>__FILE__, __LINE__, __DATE__, __TIME__, __STDC__, __STDC_VERSION__</tt>, C99 �⡼�ɤǤ� <tt>__STDC_HOSTED__</tt> ����� -+ ���ץ����ǵ�ư�������� <tt>__cplusplus</tt> �ϼ��ä��ʤ��ˡ�<br>
392
<li><samp>-v</samp><br>
393
<b>mcpp</b> �ΥС������ӥ��롼�ɥǥ��쥯�ȥ�Υ��������ɸ�२�顼���Ϥ˽��Ϥ��롣<br>
395
<li><samp>-W <level></samp><br>
396
Warning ����Ϥ����٥�� level �˻��ꤹ�롣level �� 0 �ޤ��� 1, 2, 4, 8, 16 �Τ�����Ǥ�դ��ͤ� OR ��Ȥä���ΤǤ��롣1, 2, 4, 8, 16 �Ϥ��줾�� warning �� class ���̣���롣�㤨�� -W 5 �Ǥ� class 1, 4 �� warning �����Ϥ���롣0 �ξ��� warning �Ͻ��Ϥ��ʤ������Υ��ץ����ʣ������ꤵ���ȡ����٤Ƥλ���� OR ���Ȥ��롣�㤨�� -W 1 -W 2 -W 4 �� -W 7 ��Ʊ���Ǥ��롣-W 7 ������� -W "1|2|4" �Ȥ��뤳�Ȥ�Ǥ����| ���ѥ��פȲ�ᤵ��ʤ��褦�� " �� " �ǰϤ�ɬ�פ�����ˡ�-W "3|4" ���Ȥ��Ƥ⤫�ޤ�ʤ�����������-W 0 �����ꤵ�줿���ϡ�¾�� -W ���ץ����Ϥ��٤ƥ���뤵��롣���Υ��ץ�������ꤷ�ʤ����� -W 1 ����ꤷ���Τ�Ʊ���Ǥ����warning �����Ƥ� <a href="#5.5"> 5.5</a> -
397
<a href="#5.9"> 5.9</a> �ȡˡ�
400
<li><samp>-z</samp><br>
401
#include �Ǽ����ޤ줿�ե�����Υץ�ץ�������̤Ͻ��Ϥ��ʤ���
402
���������ޥ������������롣�ץ�ץ������ΥǥХå����˻Ȥ����ץ����Ǥ��롣<br>
405
<p>*1 GCC �Ȱ㤦�Τϼ������Ǥ��롣
408
<li>-MG ���ץ����Ϥʤ������ץ�������λ�����ʣ�������뤫��Ǥ���ʤ������äơ�
409
�ɤ��������ͤ���������ά�ˡ���������-M ���ץ����Ǥ⡢���롼�ɥե����뤬���Ĥ���ʤ����ϥ��顼�ˤϤʤ뤬����¸�ط��ԤϽ��Ϥ����Τǡ���������ѤǤ��롣<br>
410
<li>-MM, -MMD ���ץ����ǽ��������إå����ϰϤ��������嵭�� -MM ���ץ����������ˤ��� 2, 3 �� GCC 2 / cpp0 �ǤϽ�������ʤ���ΤǤ��롣GCC 3 / cpp0, cc1 �ǤϾ嵭�� 3 �Τ����������ƥ�إå����ǥ��쥯�ȥ��ȯ�����줿��ΤϽ��������褦�ˤʤä���<br>
414
<h2><a name="2.4" href="#toc.2.4">2.4. <b>mcpp</b> �Υ⡼�ɤˤ�륪�ץ����</a></h2>
415
<p><b>mcpp</b> �ˤϤ����Ĥ���ư��⡼�ɤ�����ޤ������λ��ͤ� <a href="#2.1"> 2.1</a> �Ȥ��Ƥ���������
417
���Υޥ˥奢��ǤϳƼ�Υ⡼�ɤλ��ͤ��¤٤Ƶ��ܤ���Ƥ���Τǡ�
418
�������ˤ����ʤäƤ��ޤ��������ޤƤ����������ޤ����ʲ��������ǽФƤ��� <i>DIGRAPHS_INIT</i>, <i>TRUE</i>, <i>FALSE</i>, etc. ����ʸ��̾��__ �ǻϤޤ�ʤ���Ρˤ� <i>italic</i> ��ɽ������Ƥ����ΤϤ��٤� system.H ����������ޥ����Ǥ��������Υޥ����Ϥ����ޤǤ� <b>mcpp</b> ���Ȥ�ѥ��뤹����˻Ȥ�������ǡ��Ǥ������ä� <b>mcpp</b> �¹ԥץ������ˤϤ����Υޥ����ϻĤäƤϤ��ޤ����㤤���ʤ��褦�ˤ��Ƥ���������</p>
419
<p>Standard �⡼�ɤǤϼ��Υ��ץ���Ȥ��ޤ���</p>
421
<li><samp>-+</samp><br>
422
C++ �Υץ�ץ����å��Ȥ���ư��롣�ޥ��� <tt>__cplusplus</tt> �����������ʤ����ͤ� system.H ���������Ƥ��롣�ǥե���Ȥ� 1�ˡ�// ���������Ԥι����ޤǤ��ȤȲ�ᤷ��<samp>::, .*, ->*</samp> �줾��ñ��Υȡ�����Ȥ���ǧ�����롣#if ����Ǥ� true, false �Ȥ����ȡ�����Ϥ��줾�� 1, 0 ��ɾ�����롣<tt>__STDC__</tt>, <tt>__STDC_VERSION__</tt> ���������Ƥ���С������������ʤ�������GCC �����ǤǤ� GCC �Ȥθߴ����Τ���� <tt>__STDC__</tt> �Ϻ�����ʤ��ˡ�_ �ǻϤޤ�ʤ���������ޥ����������롣��������extended characters �� UCN �ؤ��Ѵ��Ϥ��ʤ���*1, *2<br>
424
<li><samp>-2</samp><br>
425
Digraphs �����ν�������ȿž���롣<i>DIGRAPHS_INIT</i> == <i>FALSE</i> �ξ��Ϥ���� digraph ��ǧ������褦�ˤʤꡢ�դξ���ǧ�����ʤ��ʤ롣<br>
427
<li><samp>-h <n></samp><br>
428
�ޥ��� <tt>__STDC_HOSTED__</tt> ���ͤ� <n> ��������롣<br>
429
<li><samp>-S <n></samp><br>
430
C �Ǥ� <tt>__STDC__</tt>
431
���ͤ� <n> ���ѹ����롣C++ �Ǥ�̵�뤵��롣<n> �� [0,9] ���ϰϤο��ͤǤʤ���Фʤ�ʤ���<n> �� 1 �ʾ�Ǥ���С�_ �ǻϤޤ�ʤ���������ޥ�����<tt>unix, linux</tt> ���ˤ�̵���ˤ��롣<br>
432
S �� <tt>__STDC__</tt> �ΰ�̣�Ǥ��롣���Υ��ץ�������ꤷ�ʤ��ȡ�<tt>__STDC__</tt> �ϥǥե���Ȥ��ͤȤʤ���̾�� 1�ˡ�<br>
433
GCC �ǤǤ� -pedantic, -pedantic-errors, -lang-c89 �Ǥ� -S1 ����ꤷ����Ʊ�����Ȥˤʤ�Τǡ����μ��� -S ��̵�뤵��롣<br>
435
<li><samp>-V <value></samp><br>
436
C �Ǥ� <tt>__STDC_VERSION__</tt>��C++ �Ǥ� <tt>__cplusplus</tt> �Ȥ�����������ޥ������ͤ���ꤵ�줿�� <value> ���ѹ����롣���ξ��� <value> �� long ���ͤȤʤ��C95 �ǤϤ����ͤ� 199409L��C99 �Ǥ� 199901L��C++ Standard �Ǥ� 199711L �Ǥ���ˡ�<tt>__STDC__</tt> �� 0 ���������Ƥ���� <tt>__STDC_VERSION__</tt> ��ɬ�� 0L �Ȥʤꡢ-V ��̵���Ǥ��롣<br>
437
C �Ǥϡ����Υ��ץ�������ꤷ�ʤ��ȡ�<tt>__STDC_VERSION__</tt> �� system.H �� <i>STDC_VERSION</i> ���ͤȤʤ��GCC V.2.7 - V.2.9 �Ǥ� 199409L������ʳ��Ǥ� 0L�ˡ�-V199901L �Ȥ��� <tt>__STDC_VERSION__</tt> >= 199901L �ˤʤä����ϼ��Τ褦�� C99 �λ��ͤȤʤ��<a href="#3.7"> 3.7</a> ���ȡˡ�<br>
440
<li>// ��������ޤǤ��ȤȤ��ư�����
442
<li>Preprocessing-number ����� e+, E+, e-, E- ��Ʊ�ͤ� p+, P+,
443
p-, P- �Ȥ��� sequence ��ǧ��롣�������ư���������Υӥåȥѥ������ 0x1.FFFFFEp+128 �Ȥ����դ��ˡ������ʤ�ɽ�����뤿��Τ�ΤǤ��롣<br>
444
<li>_Pragma( "foo bar") �Ƚ� #pragma foo bar �Ƚ��Τ�Ʊ�����̤���� _Pragma operator ��ͭ���ˤʤ롣<br>
445
<li><i>EXPAND_PRAGMA</i> �Ȥ����ޥ����� <i>TRUE</i> ��������ƥ���ѥ��뤵�줿 <b>mcpp</b> �Ǥϡ�#pragma �Ԥΰ����ϡ�STDC �ޤ��� <b>mcpp</b> �ǻϤޤ�ΤǤʤ��¤�ޥ���Ÿ�����оݤȤʤ�ʥǥե���ȤǤ� Visual C �ǰʳ��Ǥ� <i>EXPAND_PRAGMA</i> == <i>FALSE</i> �Ǥ��ꡢ�ޥ���Ÿ�����ʤ��ˡ�<br>
446
<li>���̻ҡ�ʸ�������ʸ�����ƥ�롦pp-number ����ˤ��� UCN (universal-character-name) �� sequence ���̤��ʤ���� <i>STD</i> �⡼�ɤ˸¤�ˡ�<br>
449
�ʤ������Ѱ����ޥ����� C99 �λ��ͤǤ��뤬��C90 ����� C++ �Ǥ�Ȥ���褦�ˤ��Ƥ��롣*4<br>
450
C++ �Ǥ� -V199901L �Ȥ��� <tt>__cplusplus</tt> >= 199901L �ˤ���ȡ�C99 �ߴ��⡼�ɤȤʤꡢ�嵭 2,3,4 �ε�ǽ��ĥ��Ԥ���1 ��̵����ͭ����5 �Ϥۤ�Ʊ�͡ˡ������ <b>mcpp</b> �ȼ��γ�ĥ�Ǥ��ꡢC++ Standard �ˤϰ�ȿ���롣<br>
451
�ʤ��������Υޥ��� <tt>__STDC__</tt>, <tt>__STDC_VERSION__</tt>, <tt>__cplusplus</tt> �λ���� -D ���ץ����ϻȤ��ʤ������̤Υ桼������ޥ����ȶ��̤��뤿��Ǥ��롣<br>
453
<p><i>STD</i> �⡼�ɤǤϼ��Υ��ץ���Ȥ��ޤ���</p>
455
<li><samp>-3</samp><br>
456
Trigraph �����ν�������ȿž���롣
457
<i>TRIGRAPHS_INIT</i> == <i>FALSE</i> �ξ��Ϥ���� trigraph ��ǧ������褦�ˤʤꡢ�դξ���ǧ�����ʤ��ʤ롣<br>
460
<p>*1 C++ �� <tt>__STDC__</tt> ���������Ƥ���Τϥȥ�֥�θ��Ǥ��ꡢ
461
�ɤ����ͤǤϤʤ���GCC �Υɥ�����Ȥˤ��ȡ��إå��ե������¿���� <tt>__STDC__</tt> ���������Ƥ��뤳�Ȥ���Ԥ��Ƥ���Τǡ�C++ �Ǥ⤳���������Ƥ���ɬ�פ����롢�ȤΤ��ȤǤ��롣������������ϥإå��ե�����ν����������ȸ��虜��ʤ���C90, C99, C++ �˶��̤���ʬ�ˤϡ�<samp>#if __STDC__ || __cplusplus</samp> �Ƚ٤��ʤΤǤ��롣</p>
462
<p>*2 C++ Standard �Ǥ� C99 �Ȱ�äơ�UCN ���硹Ū�ʰ���������Ƥ��ꡢ����Ⱦü�ʼ����ϤǤ��ʤ���C 1997/11 draft �Ǥ⤽���Ǥ��ä�����������Unicode ���ޤ�Ƴ�����뤳�Ȥˤϡ���������ô���礭�����뤳���������꤬���äƵ��������Ǥ��롣</p>
463
<p>*3 // �� C90��Standard �⡼�ɤξ��ˤǤ⥳���ȤȤ��ư��������������˥�Ф���</p>
464
<p>*4 ����� GCC �Ȥθߴ����Τ���Ǥ��롣</p>
467
<h2><a name="2.5" href="#toc.2.5">2.5. ����ν����ϰʳ��ν����Ϥ˶��̤Υ��ץ����</a></h2>
468
<p>GCC �ϥ��ץ��������¿���Τǡ�
469
GCC �����ǤǤϤ���Ȥξ��ͤ��뤿��ˤ����Ĥ��Υ��ץ�����¾�ν����ϤȤϰ㤦��Τˤ��Ƥ��ޤ����ʤ���GCC �ǥ���ѥ��뤷�� <b>mcpp</b> �Ǥ� compiler-independent �ǤΥ��ץ�����¾�ν����Ϥǥ���ѥ��뤷����Τ�Ʊ���Ǥ����ʲ��Υ��ץ����� GCC �����ǰʳ��˶��̤Τ�ΤǤ���</p>
471
<li><samp>-a</samp><br>
472
�����Υ�����֥饽�����˸����뼡�Τ褦�ʵ�ˡ�顼�ˤ������̤���<br>
478
<p>�Ȥ��ä� # �ǻϤޤ�Ԥ��äΥǥ��쥯�ƥ��֤˹��פ��ʤ���硢���ιԤΤޤ��Ϥ��롣</p>
485
<p>�Ȥ��ä����Τ�ή���ιԤ�ޤ���ʸ�����ƥ���<br>
486
<samp>"Jugemjugem\ngokouno\nsurikire"</samp><br>
488
<li>## �黻�Ҥˤ�� token ��Ϣ��� pp-token �Ȥ��Ƥ�̵���� token
489
����������Ƥ⡢���顼�ˤ��ʤ���<br>
492
�Υ������ʤɤ˻����������ΤǤ�����GCC �ǤǤϤ��Υ��ץ����� -x assembler-with-cpp ����� -lang-asm �Ǥ��������������Υ��ץ����� <i>POSTSTD</i> �⡼�ɤǤϻȤ��ޤ���</p>
493
<li><samp>-I-</samp><br>
494
�ǥե���Ȥ� include directory ������뤵�졢�Ķ��ѿ��ǻ��ꤵ�줿 directory �����¾�� -I ���ץ����ǻ��ꤵ�줿 directory ������ͭ���Ȥʤ롣��������GCC �ǤǤϤ��Υ��ץ����� -I- �ǤϤʤ� -nostdinc �Ǥ��롣GCC �Ǥ� -I- ���ץ����Ϥޤä�����ä���̣����ġ�<a href="#2.6"> 2.6</a> ���ȡˡ�<br>
498
<h2><a name="2.6" href="#toc.2.6">2.6. �����Ϥ��ȤΥ��ץ����</a></h2>
499
<p>����ν����Ϥǥץ�ץ����å��Ȥ��� <b>mcpp</b> ��Ȥ��ˤϡ�
500
�����ϤΥץ�ץ����å����֤��٤�����Ŭ����̾�����֤��Ƥ����ޤ������λ��ˡ���������°�Υץ�ץ����å���ä��Ƥ��ޤ����ȤΤʤ��褦�����餫������̾�Υե�����˥��ԡ����Ƥ����Ƥ���������<br>
501
Linux, FreeBSD, CygWIN �Ǥ�����ˤĤ��Ƥ� <a href="#3.9.5"> 3.9.5</a> �Ȥ��Ƥ���������
502
GCC 3.*, 4.* �Ǥ�����ˤĤ��Ƥ� <a href="#3.9.7"> 3.9.7</a>,
503
<a href="#3.9.7.1"> 3.9.7.1</a> �Ȥ��Ƥ���������MinGW �Ǥ�����ˤĤ��Ƥ�
504
<a href="#3.9.7.1"> 3.9.7.1</a> �Ȥ��Ƥ���������
506
<p>��������°�Υ���ѥ���ɥ饤�Ф�����̾����ˡ�Ǥ� <b>mcpp</b>
507
���Ϥ���ˡ�Τʤ����ץ����⤢��ޤ���<br>
509
�Ȥ�������ޥ��ƥ����ץ�����Ȥ��ȡ��ɤ�ʥ��ץ����Ǥ�ץ�ץ����å����Ϥ����Ȥ��Ǥ��ޤ����㤨�С�</p>
513
<p>�Ȥ���ȡ��ץ�ץ����å��� -W31 -Q23 �Ȥ������ץ�����Ϥ���ޤ����ץ�ץ����å����Ϥ��������ץ����� -Wp, ��³���� , �Ƕ��ڤä��¤٤ޤ���*1, *2</p>
514
<p>¾�ν����ϤǤ⡢�⤷����ѥ���ɥ饤�ФΥ�����������С����μ�Υ���ޥ��ƥ����ץ������ɲä����ۤ����ɤ��Ǥ��礦���㤨�С�-P<opt> �Ȼ��ꤹ��� P ��Ȥä� -<opt> ���ץ�ץ����å����Ϥ����褦�ˤ��Ƥ����ȡ��ɤ�ʥ��ץ����Ǥ�Ȥ���褦�ˤʤ�Τ������Ǥ���</p>
515
<p>�⤦���Ĥ���ˡ�ϡ���� <b>mcpp</b> �ǥץ�ץ��������ơ����ν��ϥե���������ե�����Ȥ��ƥ���ѥ�����Ϥ��褦�� makefile ����ȤǤ���������ˡ�ˤĤ��Ƥ� <a href="#2.9"> 2.9</a>,
516
<a href="#2.10"> 2.10</a> �Ȥ��Ƥ���������
518
<p><b>mcpp</b> ������ν����Ϥ��ȤΥ��ץ����ϰʲ����̤�Ǥ���Compiler-independent �ǤˤϤ�������Υ��ץ����Ϥ���ޤ���</p>
519
<p>LCC-Win32 �ǤǤϼ��Υ��ץ���Ȥ��ޤ���</p>
521
<li><samp>-g <n></samp><br>
522
�ޥ��� <tt>__LCCDEBUGLEVEL</tt> �� <n>
524
<li><samp>-O</samp><br>
525
�ޥ��� <tt>__LCCOPTIMLEVEL</tt> �� 1 ��������롣
528
<p>Visual C �ǤǤϼ��Υ��ץ���Ȥ��ޤ���
531
<li><samp>arch:SSE, arch:SSE2</samp><br>
532
�ޥ��� <tt>_M_IX86_FP</tt> �줾�� 1, 2 ��������롣
534
<li><samp>-Fl <file></samp><br>
535
GCC �� -include <file> ��Ʊ����
537
<li><samp>-G<n></samp><br>
538
<n> �� 3, 4, 5, 6, B �Ǥ���С��ޥ��� <tt>_M_IX86</tt> �줾��
539
300, 400, 500, 600, 600 ��������롣<br>
540
<li><samp>-GR</samp><br>
541
�ޥ��� <tt>_CPPRTTI</tt> �� 1 ��������롣
543
<li><samp>-GX</samp><br>
544
�ޥ��� <tt>_CPPUNWIND</tt> �� 1 ��������롣
546
<li><samp>-GZ</samp><br>
547
�ޥ��� <tt>__MSVC_RUNTIME_CHECKS</tt> �� 1 ��������롣
549
<li><samp>-J</samp><br>
550
�ޥ��� <tt>_CHAR_UNSIGNED</tt> �� 1 ��������롣
552
<li><samp>-RTC*</samp><br>
553
-RTC1, -RTCc, -RTCs, -RTCu ���Υ��ץ�����ꤵ���ȡ��ޥ���
554
<tt>__MSVC_RUNTIME_CHECKS</tt> �� 1 ��������롣<br>
555
<li><samp>-Tc, -TC</samp><br>
556
C �Υ������Ǥ��뤳�Ȥ�ؼ����롣
558
<li><samp>-Tp, -TP</samp><br>
561
<li><samp>-u</samp><br>
564
<li><samp>-Wall</samp><br>
565
-W17 (-W1 -W16) ��Ʊ����
567
<li><samp>-WL</samp><br>
570
<li><samp>-w</samp><br>
573
<li><samp>-X</samp><br>
576
<li><samp>-Zc:wchar_t</samp><br>
577
�ޥ��� <tt>_NATIVE_WCHAR_T_DEFINED</tt>, <tt>_WCHAR_T_DEFINED</tt> �줾��
579
<li><samp>-Zl</samp><br>
580
�ޥ��� <tt>_VC_NODEFAULTLIB</tt> �� 1 ��������롣
583
<p>GCC (GNU C) �ǤǤϡ��ʲ��Ρʤ��� 2.6 ���������ν����ޤǤΡ˥��ץ���Ȥ��ޤ����ʤ���GCC �ѤǤ� <tt>__STDC__</tt> �� 1 �ˤ��Ƥ���Τǡ�-S1 ���ץ����ϻ��ꤷ�Ƥ⤷�ʤ��Ƥ�Ʊ���Ǥ���</p>
584
<p>�ޤ���<b>mcpp</b> �Υ⡼�ɤˤ��ʤ����ץ����ϼ��ΤȤ���Ǥ���</p>
586
<li><samp>-b</samp><br>
587
���ֹ�����äΥ������Υ�������ǽ��Ϥ��롣
589
�ץ�ץ����å����饳��ѥ������Τؤι��ֹ����μ����Ϥ���<br>
593
�Ȥ����äΥ�������Ʊ�������ǤǤ�������Ϥ����̤Ǥ��뤬��
594
���η����ϻȤ��ʤ������Ϥ⤢�롣<b>mcpp</b> �Ϥ��Τ褦�ʽ������Ѥ� build �Ǥϡ����ν����ϤΥ���ѥ������Τμ�����������ǹ��ֹ�������Ϥ���Τ����ǥե���Ȥλ��ͤǤ��롣<br>
595
�������������ν����������ǤǤ⡢���Υ��ץ�����Ȥ��ȡ��äΥ������Υ�������ǹ��ֹ�������Ϥ��롣<br>
596
���Υ��ץ����ϡ����Ϥ�⤦���٥ץ�ץ�����������Τ���Τ�Τǡ�#pragma MCPP preprocess ���Ȥ߹�碌�ƥإå��ե�����Ρ֥ץ�ץ�ץ������פ���˻Ȥ���<br>
597
<li><samp>-dD, -dM</samp><br>
598
�ץ�ץ������κǸ�ˤ��λ�����ͭ���ʥޥ�������� #define �Ԥη��ǽ��Ϥ��롣-dM ���ץ����Ǥϥץ�ץ�������̤Ͻ��Ϥ��ʤ����ޤ�������������줿�ޥ�����ʤ�ɸ���������ޥ����Ǥʤ���н��Ϥ��롣-dD ���ץ����Ǥϥץ�ץ�������̤���Ϥ��롣�ޤ�����������ޥ����Ͻ��Ϥ��ʤ���*3, *4<br>
599
<li><samp>-finput-charset=<encoding></samp><br>
600
-e <encoding> ���ץ�����Ʊ����GCC �Ϥ��Υ��ץ�������ꤹ��� <encoding> �� UTF-8 ���Ѵ����뤬��<b>mcpp</b> ���Ѵ��Ϥ��ʤ����Ȥ����ա�<br>
601
<li><samp>-fworking-directory</samp><br>
602
���ϤΣ����ܤ˥����ȥǥ��쥯�ȥ��ɽ�����̤� #line �Ԥ���Ϥ��롣<br>
603
<li><samp>-I-</samp><br>
604
���Υ��ץ��������ȸ�Ȥ� -I <directory> ���ץ����λ��ͤ��Ѥ��롣���Υ��ץ��������� -I �ǻ��ꤵ�줿�ǥ��쥯�ȥ�� #include "header.h" �η��Υإå��ե�����Υ������ˤ����Ȥ��롣���Υ��ץ����θ�� -I �ǻ��ꤵ�줿�ǥ��쥯�ȥ�Ϥ��٤Ƥ� #include directive �Υ������˻Ȥ��롣�ޤ���#include "header.h" �η��Ǥ� include ���Υǥ��쥯�ȥ�ϥ��������ʤ���<br>
605
<li><samp>-include <file></samp><br>
606
�ᥤ��Υ������ե����������������ˡ�<file> �� #include ����ʥ���������Ƭ�� #include <file> �Ƚ��Τ�Ʊ����̤ˤʤ�ˡ�<br>
607
<li><samp>-isystem <dir></samp><br>
608
<dir> �롼�ɥѥ��� system-specific �� directory �����ˡ�site-specific �� directory �θ�ˡ˲ä��롣<br>
609
<li><samp>-lang-c, -x c</samp><br>
610
C �Υץ�ץ�������Ԥ������ꤷ�ʤ��Ƥ�Ʊ����<br>
611
<li><samp>-nostdinc</samp><br>
614
<li><samp>-undef</samp><br>
617
<li><samp>-Wcomment, -Wcomments, -Wsign-compare</samp><br>
618
-W1 ���ץ�����Ʊ�������ꤷ�ʤ��Ƥ�Ʊ����
620
<li><samp>-Wundef</samp><br>
623
<li><samp>-Wtrigraphs</samp><br>
626
<li><samp>-Wall</samp><br>
627
-W17 (-W1 -W16) ���ץ�����Ʊ����class 2, 4 �� warning ��
628
Linux ����ɸ��إå��Ǥ���ȯ���䤹�����뤵���Τǡ�-Wall ����Ϥ����Ƥ��롣class 8 �� warning ���̾��;�פʤ����Ǥ��롣�������������ˤ� portability ��Τ��������ͭ�ѤʻȤ�ƻ�����롣�Ȥ����� gcc -Wp,-W31 �Ȥ��뤳�ȡˡ�<br>
629
<li><samp>-w</samp><br>
630
-W0 ���ץ�����Ʊ����<br>
632
<p>GCC �Ǥ� Standard �⡼�ɤǤϼ��Υ��ץ���Ȥ��ޤ���
635
<li><samp>-ansi</samp><br>
636
<tt>__STRICT_ANSI__</tt> �ޥ����� 1 ��������롣
638
<li><samp>-digraphs</samp><br>
639
Digraph ��ǧ�������-2 �Ǥ�ȿž��ͭ���ˡ�
641
<li><samp>-lang-c89, -std=c89, -std=gnu89, -std=c90</samp><br>
642
-S1 ���ץ�����Ʊ�������ꤷ�ʤ��Ƥ�Ʊ����C90 �����Ǥʤ� C95
644
<li><samp>-lang-c99, -lang-c9x, -std=c99, -std=c9x, -std=gnu99, -std=gnu9x</samp><br>
645
-V199901L ���ץ�����Ʊ����
647
<li><samp>-lang-c++, -x c++, -std=c++98</samp><br>
648
C++ �Υץ�ץ�������Ԥ���-+ ��Ʊ����
650
<li><samp>-pedantic, -pedantic-errors</samp><br>
651
-W7 (-W1 -W2 -W4) ���ץ�����Ʊ����
653
<li><samp>-std=iso<n>:<ym></samp><br>
654
���ʤΥС���������ꤹ�롣<n> �� C �Ǥ� 9899 �Ǥ��ꡢ
655
C++ �Ǥ� 14882 �Ǥ��롣<n> �� 9899 �ξ��ϡ�<ym> �� 1990, 199409, 1999, 199901 ���Ǥ��롣<n> �� 14882 �ξ��ϡ�<ym> �� 199711 �Ǥ��롣<ym> �ˤ���¾���ͤ����ꤵ�줿���ϡ�<tt>__STDC_VERSION__</tt> �ޤ��� <tt>__cplusplus</tt> �������ͤ���������ʤ��ξ��� 200503 �Ȥ����褦�ˣ������ǻ��ꤹ�뤳�ȡˡ�<br>
657
<p>GCC �Ǥ� <i>STD</i> �⡼�ɤǤϼ��Υ��ץ���Ȥ��ޤ���</p>
659
<li><samp>-lang-asm, -x assembler-with-cpp</samp><br>
662
<li><samp>-trigraphs</samp><br>
663
Trigraph ��ǧ�������-3 �Ǥ�ȿž��ͭ���ˡ�
666
<p>GCC �Ǥ� pre-Standard �⡼�ɤǤϼ��Υ��ץ���Ȥ��ޤ���
669
<li><samp>-traditional, -traditional-cpp</samp><br>
673
<p>CygWIN / GCC �ǤǤϼ��Υ��ץ���Ȥ��ޤ���
676
<li><samp>-mno-cygwin</samp><br>
677
Include directory �� /usr/include �� /usr/include/mingw ���ѹ�����
678
��������ޥ����� cygwin1.dll �Ѥ��� msvcrt.dll �Ѥ��ѹ����롣<br>
680
<p>���Υ��ץ����Ϥ�����⥨�顼�ˤϤ��ޤ��������б����ޤ���ʥ������˥�Ф����⤢��ˡ�</p>
682
<li><samp>-A <predicate(answer)></samp><br>
683
GCC �ǤϤ��Υ��ץ����ϥ������� #assert <predicate(answer)> �Ƚ��Τ�Ʊ����̤ˤʤ뤬��#pragma �Ǥʤ���ĥ�ǥ��쥯�ƥ��֤� Standard C �Ǥ�ǧ����ʤ���ΤǤ��롣�������ޤޤǤΤȤ��� gcc �ϥǥե���ȤǤ� -D ���ץ�����Ʊ���Υޥ����� cpp ���Ϥ��Ƥ����Τǡ��ºݤˤϤۤȤ�ɤξ�硢�پ�Ϥʤ���#assert ��ȤäƤ��뵩�ʥ������Ǥʤ��¤�ˡ�<br>
684
<li><samp>-$</samp><br>
685
<li><samp>-g <n></samp><br>
686
<li><samp>-idirafter <dir></samp><br>
687
<li><samp>-iprefix <dir>, -iwithprefix <dir>, -iwithprefixbefore <dir></samp><br>
688
<li><samp>-noprecomp</samp><br>
689
<li><samp>-remap</samp><br>
691
<p>GCC V.3.3 �ʹߤǤϥץ�ץ����å�������ѥ���˵ۼ��������Ω�����ץ�ץ����å���¸�ߤ��ʤ��ʤä����ᡢgcc �� -no-integrated-cpp ���ץ������դ��ƸƤӽФ��Ƥ⡢�ץ�ץ����å��Υ��ץ����ǤϤʤ����ץ���ץ�ץ����å����Ϥ���Ƥ��뤳�Ȥ�����ޤ���GCC V.3.3 �ʹ��Ѥ� <b>mcpp</b> �Ǥϡ����Τ褦�ʤ�ΤΤ��� <b>mcpp</b> ��ǧ�����ʤ���ΤϤ��μ�Τˤ����ץ����Ȥ���̵�뤷�ޤ���</p>
693
<li><samp>-c</samp><br>
694
<li><samp>-E</samp><br>
695
<li><samp>-f*</samp><br>
696
<li><samp>-m*</samp><br>
697
<li><samp>-quiet</samp><br>
698
<li><samp>-W*</samp><br>
701
<p>*1 -Wa �ϥ�����֥��Ѥ� -Wl �ϥ���ѤΥ���ޥ��ƥ����ץ����Ǥ��롣
702
UNIX / System V / cc �Υޥ˥奢���ȡ���Ϥꤳ���Υ��ץ�����롣GCC / cc �� -W<x> ���ץ����Ϥ���Ȥθߴ����Τ���Τ�ΤʤΤǤ�������</p>
703
<p>*2 GCC V.3 �Ǥ� cpp �� cc1 (cc1plus) �˵ۼ�����Ƥ��ޤä������Τ��ᡢ-Wp �ǻ��ꤷ�����ץ������̾�� cc1 (cc1plus) ���Ϥ���Ƥ��ޤ����ץ�ץ������� cc1 �ǤϤʤ� cpp (cpp0) �ˤ����뤿��ˤϡ�gcc �θƤӽФ��� -no-integrated-cpp �Ȥ������ץ�������ꤹ��ɬ�פ����롣</p>
704
<p>*3 ��������GCC V.3.3 �ʹߤǤ����̤Υޥ�����������������褦�ˤʤä����������ϻ�������ޥ����Ȥ��Ƥϰ���ʤ������ʤ����-dD ���ץ����Ǥ⤳���Υޥ�������Ϥ��롣</p>
705
<p>*4 #pragma MCPP put_defines (#put_defines) �ν��Ϥ� -dM ���ץ����Ȥۤ�Ʊ�ͤǤ��롣������������������äƤ��롣</p>
707
<li>put_defines �Ǥ�ɸ���������ޥ����Ȥ��Ƶ��ꤵ��Ƥ����Τ⡢�����Ȥη��ǽ��Ϥ��롣<br>
708
<li>put_defines �ǤϤ��Υޥ�������Τ���ե�����̾�ȹ��ֹ�⥳���Ȥη��ǽ��Ϥ��졢�ޤ��ɤߤ䤹���褦�˷��������ƽ��Ϥ��뤬��-d* ���ץ����Ǥ� GCC ��Ʊ�������ǽ��Ϥ��롣���η��������ꤷ�Ƥ��� makefile �⸫�ݤ��뤫��Ǥ��롣<br>
712
<h2><a name="2.7" href="#toc.2.7">2.7. �Ķ��ѿ�</a></h2>
713
<p>Compiler-independent �Ǥ� <b>mcpp</b> �Ǥ� include �ǥ��쥯�ȥ�� UNIX �� OS �Ǥ� /usr/include, /usr/local/include �ʳ��ϥǥե���ȤǤ����ꤵ��Ƥ��ʤ��Τǡ�¾�Υǥ��쥯�ȥ��ɬ�פǤ���С��Ķ��ѿ���¹Ի����ץ����ǻ��ꤷ�ʤ���Фʤ�ޤ���Compiler-independent �ǤδĶ��ѿ��� C �Ǥ� INCLUDE��C++ �Ǥ� CPLUS_INCLUDE �Ǥ����ե�����Υ������ϥǥե���ȤǤϥ������ե�����Τ���ǥ��쥯�ȥ����Ȥ��ޤ���<a href="#4.2"> 4.2</a> �ȤΤ��ȡˡ���������Linux �Ǥ� include �ǥ��쥯�ȥ�˺��𤬤���Τǡ����̤��к���ɬ�פǤ�������ˤĤ��Ƥ� <a href="#3.9.8"> 3.9.8</a> �Ȥ��Ƥ���������</p>
714
<p>GCC �����Ǥǥǥե���Ȥ����ꤵ��Ƥ���
715
system include �ǥ��쥯�ȥ�ˤĤ��Ƥϡ�noconfig/*.dif �ե�����Ƥ����������ޤ���include �ǥ��쥯�ȥ�Υ�������ȴĶ��ѿ���̾���ˤĤ��Ƥϡ�<a href="#4.2"> 4.2</a> �Ƥ���������</p>
716
<p>�Ķ��ѿ� LC_ALL, LC_CTYPE, LANG �ˤĤ��Ƥϡ�
717
<a href="#2.8"> 2.8</a> �Ƥ���������
721
<h2><a name="2.8" href="#toc.2.8">2.8. Multi-byte character �� encoding</a></h2>
722
<p><b>mcpp</b> �� multi-byte character ��¿�ͤ� encoding ���б����Ƥ��ޤ���
726
<tr><th>EUC-JP </th><td>���ܤ� extended UNIX code (UJIS)</td></tr>
727
<tr><th>shift-JIS </th><td>���ܤ� MS-Kanji</td></tr>
728
<tr><th>GB-2312 </th><td>���� EUC-like �� encoding �ʴ��λ���</td></tr>
729
<tr><th>Big-Five </th><td>���Ѥ� encoding �����λ���</td></tr>
730
<tr><th>KSC-5601 </th><td>�ڹ�� EUC-like �� encoding (KSX 1001)</td></tr>
731
<tr><th>ISO-2022-JP1</th><td>��ݵ��ʤ����ܸ�</td></tr>
732
<tr><th>UTF-8 </th><td>unicode �� encoding ����</td></tr>
735
<p>�����ơ��¹Ի��˼��Τ褦�ʤ����Ĥ�����ˡ�Ǽºݤ˻Ȥ� encoding
736
����ꤷ�ޤ���ͥ���̤Ϥ��ν�ΤȤ���Ǥ���</p>
738
<li>��������� #pragma
739
__setlocale( "<encoding>") �ǻ��ꤵ�줿 encoding ��Visual C �ѤǤ� #pragma setlocale( "<encoding>") �ˡ������Ȥ��ȡ����ܤΥ������ե��������Ǥ�ʣ���� encoding ��Ȥ����Ȥ��Ǥ��롣<br>
740
<li>�¹Ի����ץ���� -e <encoding> �ޤ��� -finput-charset=<encoding> �ǻ��ꤵ�줿 encoding��<br>
741
<li>�Ķ��ѿ� LC_ALL, LC_CTYPE, LANG �ǻ��ꤵ�줿 encoding��ͥ���̤Ϥ��ν�ˡ�<br>
742
<li><b>mcpp</b> ��ѥ��뤹��������ꤵ�줿�ǥե���Ȥ� encoding��<br>
745
__setlocale��-e ���ץ���Ķ��ѿ��ǻ���Ǥ��� <encoding> �ϸ�§�Ȥ��ƶ��̤ǡ����ΤȤ���Ǥ������դ� <encoding> �Ϻ��դ� encoding ����ꤷ�ޤ���<encoding> ����ʸ������ʸ���ζ��̤ޤ��ޤ���'-', '_' ��̵�뤷�ޤ�������� '.' ������ȡ������ޤǤ٤�̵�뤷�ޤ����������äơ����Ȥ��� EUC_JP, EUC-JP, EUCJP, euc-jp, eucjp, ja_JP.eucJP �Ϥ��٤�Ʊ����ΤȤ��ư����ޤ����ޤ���* ��Ǥ�դ�ʸ�����̣���ޤ���iso8859-1, iso8859-2 ���� iso8859* �˥ޥå�����ˡ�<br>
749
<tr><th>EUC-JP </th><td>eucjp, euc, ujis</td></tr>
750
<tr><th>shift-JIS </th><td>sjis, shiftjis, mskanji</td></tr>
751
<tr><th>GB-2312 </th><td>gb2312, cngb, euccn</td></tr>
752
<tr><th>BIG-FIVE </th><td>bigfive, big5, cnbig5, euctw</td></tr>
753
<tr><th>KSC-5601 </th><td>ksc5601, ksx1001, wansung, euc<i>KR</i></td></tr>
754
<tr><th>IS0-2022-JP1</th><td>iso2022jp, iso2022jp1, jis</td></tr>
755
<tr><th>UTF-8 </th><td>utf8, utf</td></tr>
756
<tr><th>�ʤ� </th><td>c, en*, latin*, iso8859*</td></tr>
759
<p>C, en* (english), latin*, iso8859* �Τɤ줫����ꤹ��ȡ�multi-byte character ��ǧ������ʤ��ʤ�ޤ���ASCII �ǤϤʤ� ISO-8859-* �� Latin �Ϥ� single-byte character ��Ȥ����ϡ��������ꤷ�ޤ���#pragma __setlocale( "") �ȶ���̾������ꤹ��ȡ��ǥե���Ȥ� encoding �����ޤ���</p>
760
<p>���Τۤ���Visual C++ �Ѥ� #pragma setlocale �˸¤äơ����Τ�Τ�Ȥ��ޤ��������� Visual C++ �Ȥθߴ����Τ�����Ѱդ��Ƥ����ΤǤ���Visual C++ �Ǥϥ���ѥ��餬������Ǥʤ���ǧ�����ʤ��Τǡ��������Ȥä��ۤ����ɤ��Ǥ��礦��'-' �� <b>mcpp</b> �ǤϾ�ά�Ǥ��뤬��Visual C++ �Υ���ѥ�����Ф��ƤϾ�ά�Ǥ��ʤ��ˡ�Visual C++ �Ǥ� C, english ��Ȥ��ޤ���</p>
763
<tr><th>shift-JIS</th><td>japanese, jpn</td></tr>
764
<tr><th>GB-2312 </th><td>chinese-simplified, chs</td></tr>
765
<tr><th>BIG-FIVE </th><td>chinese-traditional, cht</td></tr>
766
<tr><th>KSC-5601 </th><td>korean, kor</td></tr>
769
<p>Visual C++ �Ǥϡ�Windows ���ɤι���ѤǤ��뤫�ˤ�äƥǥե���Ȥ� multi-byte character encoding ���Ѥ�뤳�ȤˤʤäƤ��ޤ����ޤ���Windows �Ρ��ϰ�ȸ���Υ��ץ����פλ���ˤ�äƤ��Ѥ��ޤ��������ε�ǽ������Ⱦü�Ǥ�ä����Ǥ�����������#pragma setlocale �ˤ�����Ϥ�����ͥ�褷�ޤ���</p>
770
<p>GCC �ѤǤϴĶ��ѿ� LANG �˸¤äơ����Τ�Τ��Ȥ��ޤ��������� GCC �Ȥθߴ����Τ�����Ѱդ��Ƥ����ΤǤ���<b>mcpp</b> ���Ф��ƤϾ�ʸ���Ǥ��ɤ���'-' ���ά�Ǥ��뤬��GCC �Υ���ѥ�����Ф��Ƥ�ʸ���̤ꤳ�Υ��ڥ�Ǥʤ���Фʤ�ʤ��ˡ�</p>
773
<tr><th>EUC-JP </th><td>C-EUCJP</td></tr>
774
<tr><th>shift-JIS </th><td>C-SJIS</td></tr>
775
<tr><th>ISO-2022-JP1</th><td>C-JIS</td></tr>
776
<tr><th>�ʤ� </th><td>C</td></tr>
779
<p>GCC �ϥ���ѥ��鼫�Ȥ�ѥ��뤷������ configuration �ˤ�äơ��Ķ��ѿ� LANG �� C-* �λ����ǧ�������Τ�ǧ�����ʤ���ΤȤ���ޤ� (*1)��������������ѥ��餬ǧ�����ʤ����ϡ�<b>mcpp</b> ��������䤤�ޤ���</p>
781
<p>*1 GCC �� configure ������� --enable-c-mbchar �Ȥ������ץ������դ���ȡ�
782
�Ķ��ѿ� LANG ���ˤ�ä� encoding �����Ǥ��뤳�ȤˤʤäƤ��롣������������ configuration �� 1998/07 ���餢���ΤΤ褦�Ǥ��뤬�����ʤ��Ȥ� V.3.2 �Ǥ�������ư��ʤ���LANG �Τۤ��� LC_ALL, LC_CTYPE �Ǥ� encoding �����Ǥ��뤳�ȤˤʤäƤ��뤬���ºݤˤϿ��ǥ�å��������Ѥ������Ǥ��롣</p>
785
<h2><a name="2.9" href="#toc.2.9">2.9. ���ѥ�����ѥ���� <b>mcpp</b> ��Ȥ��ˤ�</a></h2>
786
<p>Visual C, Borland C, LCC-Win32 �Τ褦�˥ץ�ץ����å�������ѥ��餫����Ω���Ƥ��ʤ�������֥��ѥ�����ѥ���פ�¿���ʤäƤ��ޤ�������®�٤�夲�뤿����Ȼפ��ޤ������������ץ�ץ��������פ�����֤ϸ��ߤΥϡ��ɥ������ǤϾ����ʤ�ΤˤʤäƤ��ޤ����ޤ������⤽��ץ�ץ������Ȥ�����Τϼ¹Ի��Ķ�������Ϥ���Ϥۤ���Ω�������̤Υե������Ǥ��뤳�Ȥ��礭�ʰ�̣������Τǡ��֥��ѥ�����ѥ���פ�¿���ʤ�ΤϷ褷���ɤ����Ȥ��Ȥϻפ��ޤ��ץ�ץ������ν����ϰ�¸�λ��ͤ��������̤ˤʤ�ޤ���</p>
787
<p>�Ȥ⤢����ѥ�����ѥ���Ǥϡ��ץ�ץ����å��� <b>mcpp</b> ���֤������뤳�Ȥ��Ǥ��ޤ��������äơ�<b>mcpp</b> ��Ȥ��ˤϡ��ޤ� <b>mcpp</b> �ǥ�������ץ�ץ������������ν��Ϥ�ѥ�����Ϥ��ޤ���������ѥ���ˤ�äƺ��٥���˥ץ�ץ�����������뤳�Ȥˤʤ�ޤ�������Ǥ��������ޤ�����Ǥ⡢<b>mcpp</b> ��Ȥ����Ȥϥ����������å��Τ����ͭ���Ǥ��ꡢ��������°�Υץ�ץ����å��ˤϤʤ���ǽ��Ȥ����Ȥ�Ǥ��ޤ���<br>
788
���ѥ�����ѥ���� <b>mcpp</b> ��Ȥ��ˤϡ����μ��� makefile �˽�ɬ�פ�����ޤ������Υ���ץ�Ȥ��Ƥϡ�<b>mcpp</b> ���ȤΥ���ѥ���˻Ȥ� visualc.mak, borlandc.mak, lcc_w32.mak ���� makefile �Υꥳ��ѥ����Ѥ�����Ƥ���������</p>
789
<p>�ʤ���GCC 3, 4 �Ǥϥ���ѥ��餬�ץ�ץ�������ǽ����¢����褦�ˤʤä���ΤΡ������ץ�ץ����å���Ȥ����ץ������Ѱդ���Ƥ���Τǡ��������Ѥ��뤳�Ȥ� <b>mcpp</b> ������ʤ��Ȥ����Ȥ��Ǥ��ޤ���<a href="#3.9.7"> 3.9.7</a> ���ȡˡ�</p>
792
<h2><a name="2.10" href="#toc.2.10">2.10. ���糫ȯ�Ķ��� <b>mcpp</b> ��Ȥ��ˤ�</a></h2>
793
<p>GUI �Τ���������糫ȯ�Ķ���(IDE)
794
�Ȥ�����ΤϽ������ȼ��λ��ͤǤ��ꡢ����Ū�ʥ��ե��������̾�ϸ�������Ƥ��ʤ��Τǡ�������� <b>mcpp</b> ��Ȥ��ˤϺ�����ޤ������ξ塢����ѥ��餬���ѥ�����ѥ���Ǥ���ȡ������� <b>mcpp</b> ��Ȥ��ե���������������ΤϤ���˺���Ǥ���</p>
795
<p>�����Ǥ� Visual C++ 2003, 2005 �� IDE �� <b>mcpp</b> ��Ȥ���ˡ���������ޤ���Borland C �Ǥ� LCC-Win32 �Ǥϡ����ޥ�ɥ饤��ǻȤäƤ���������</p>
797
<h3><a name="2.10.1" href="#toc.2.10.1">2.10.1. Visual C++ �� IDE �� <b>mcpp</b> ��Ȥ���ˡ</a></h3>
798
<p>Visual C++ �� IDE ������Ū�ʥ��ե���������������Ƥ��餺�������⥳��ѥ��餬���ѥ�����ѥ���ʤΤǡ��̾�Ρ֥ץ��������ȡפǤ� <b>mcpp</b> ��Ȥ����Ȥ��Ǥ��ޤ���������<b>mcpp</b> ��Ȥ� makefile ��Ƥ����С�����������ǡ֥ᥤ���ե�����ץ��������ȡפ�������뤳�Ȥ��Ǥ��ޤ��������ơ����������Խ��両���䡢����˥�������٥�ǥХå���ǽ��ޤ� IDE ����Ⱦ�ε�ǽ��Ȥ����Ȥ��Ǥ��ޤ���</p>
799
<p>�֥ᥤ���ե�����ץ��������ȡפ���ˤϼ��Τ褦�ˤ��ޤ���������ˡ�� ��Visual C++ .net 2003 �ɥ�����ȡפ���ӡ�Visual C++ 2005 Express Edition�פΡ֥إ�ספΡ֥ᥤ���ե�����ץ��������Ȥκ����פ˽Ƥ����ΤǤ���</p>
801
<li>IDE �ΥǥХå���ǽ��Ȥ����¤���ĥ桼���Ȥ��ƥ������롣*1<br>
802
<li><b>mcpp</b> ��Ȥ� makefile ��Ƥ�����noconfig/visualc.mak �ȡˡ�<br>
803
<li>Visual Studio ��ư���롣*2<br>
804
<li>�ֿ������ץ��������ȡפ�å�����
805
���줿�ֿ������ץ��������ȡפΥ�����ɥ��ǡ֥ᥤ���ե����� �ץ��������ȡפ����ӡ��֥ץ���������̾�פȡ־��פ���ꤷ�ơ�OK�פ�å����롣<br>
806
<li>����ȡ��֥ᥤ���ե����� ���ץꥱ������� ���������ɡפΥ�����ɥ��������Τǡ��֥��ץꥱ������������פ�å����������ǡ֥ӥ�ɥ��ޥ�ɥ饤��סֽ��ϡס֥���ޥ�ɡסʤޤ��ϡ־õ�ޥ�ɡסˡ֥�ӥ�ɥ��ޥ�ɡפ�������Ϥ��롣�������Ѹ�Ϥ狼��ˤ�������<b>mcpp</b> ���Ȥ� compiler-independent �ǤΥ���ѥ������ˤȤ�ȼ��Τ褦�ʤ��ȤǤ������������ <b>mcpp</b> �μ¹ԥץ�������̾���� mcpp.exe �Ȥ���ˡ�<br>
808
�֥ӥ�ɥ��ޥ�ɥ饤���: nmake
810
�֥���ޥ�ɡ� : nmake clean
811
�֥�ӥ�ɥ��ޥ�ɡ� : nmake PREPROCESSED=1
813
<b>mcpp</b> �� Visual C �����Ǥ�ѥ��뤹����� COMPILER=MSC �Ȥ������ץ������դ��ä��Ƽ��Τ褦�ˤ��롣<br>
815
�֥ӥ�ɥ��ޥ�ɥ饤���: nmake COMPILER=MSC
817
�֥���ޥ�ɡ� : nmake clean
818
�֥�ӥ�ɥ��ޥ�ɡ� : nmake PREPROCESSED=1 COMPILER=MSC
820
�֥ᥤ���ե�����ץ��������ȡפǤ� make install ���������륳�ޥ�ɤ��ʤ��Τǡ��֥ӥ�ɥ��ޥ�ɥ饤��ס֥�ӥ�ɥ��ޥ�ɡפǻ��ꤵ��륳�ޥ�ɤǤ� install ��¹Ԥ����褦�� makefile ��Ƥ���ɬ�פ����롣<br>
821
<b>mcpp</b> ��ѥ��뤹��ΤǤʤ���С��֥ӥ�ɥ��ޥ�ɥ饤��פȡ֥�ӥ�ɥ��ޥ�ɡפȤ��̾��Ʊ����ɤ���<br>
822
���������Ϥ����顢�ִ�λ�פ�å����롣<br>
824
�֥���塼��������ץ�����פ˥ץ��������Ȥ������Τǡ����Ρ֥������ե�����פȤ����ե������å����ơ������ơ���˥塼�Ρ֥ץ��������ȡפ���ִ�¸���ܤ��ɲáפ����ӡ��������ե�����٤����ơ�OK�פ��롣����ȡ��֥���塼��������ץ�����פ˥������ե�����̾������롣<br>
826
<p>����ǡ����Խ��ס֥ӥ�ɡס֥�ӥ�ɡס֥ǥХå������ε�ǽ�����٤ƻȤ���褦�ˤʤ�ޤ���</p>
828
<p>*1 �ǥХå���ǽ��Ȥ�����ˤϡ�WindowsXP Pro, Windows2000
829
�Ǥ� "Debugger users" �Ȥ������롼�פ˥桼�����°������ɬ�פ����롣WindowsXP HE �ǤϤ����������롼�פϤʤ��Τǡ������ԤȤ��ƥ������ʤ���Фʤ�ʤ����ޤ�����������٥롦�ǥХå���ǽ��Ȥ�����ˤ� cl.exe �θƤӽФ��� -Zi ���ץ������ղä��ơ��ǥХå��������������褦�� makefile ��Ƥ���ɬ�פ����롣</p>
830
<p>*2 �֥������ȡ�->�֥ץ������פ��鵯ư����ȡ����롼�ɥǥ��쥯�ȥ����δĶ��ѿ������ꤵ��ʤ�����������ꤹ��ˤ���ˡ�Visual Studio ���ޥ�ɥץ���ץȡפ��ơ��������ե�����Τ���ǥ��쥯�ȥ�˰�ư������������ VC 2003 �Ǥ�</p>
834
<p>�Ȥ��ơ�VC 2005 express edition �Ǥ�</p>
836
vcexpress *.sln /useenv
838
<p>�Ȥ��Ƶ�ư���ʤ���Фʤ�ʤ���
842
<h1><a name="3" href="#toc.3">3. ��ĥ��ǽ�ȸߴ���</a></h1>
843
<p><b>mcpp</b> �ˤϤ����Ĥ��θ�ͭ�γ�ĥ��ǽ������ޤ����ޤ���
844
�ƽ�������°�Υץ�ץ����å��ˤϤ��줾��γ�ĥ��ǽ������ޤ����������ΰ����� <b>mcpp</b> �ǤϻȤ��ޤ������ǤϤ���������ĥ��ǽ�ȸߴ�����������������ޤ���</p>
845
<p>�ʤ���Standard �⡼�ɤǤ� #pragma �Ԥϸ�§�Ȥ��Ƥ��Τޤ��Ϥ��ޤ���<b>mcpp</b> ���Ȥ����������ΤˤĤ��Ƥ�Ʊ�ͤǤ���Ʊ�� #pragma ������ѥ������ΤˤȤäƤ��̣����IJ�ǽ�������뤿��Ǥ���<br>
846
��������#pragma MCPP �ǻϤޤ�Ԥ� <b>mcpp</b> ���ѤΤ�ΤʤΤǽ��Ϥ��ޤ���GCC �ǤǤϡ�#pragma GCC �� poison, dependency, system_header �Τɤ줫��³���Ԥ���Ϥ��ޤ��ޤ���#pragma once, #pragma push_macro, #pragma pop_macro �⥳��ѥ������ΤˤȤäƤ�̵�ѤʤΤǽ��Ϥ��ޤ���</p>
847
<p><i>EXPAND_PRAGMA</i> == <i>TRUE</i> �ǥ���ѥ��뤵�줿 <b>mcpp</b> �Ǥ� #pragma �Ԥΰ����ϥޥ���Ÿ�����оݤȤʤ�ޤ��ʼºݤˤ� <i>EXPAND_PRAGMA</i> == <i>TRUE</i> �� Visual C �Ǥ����Ǥ���ˡ���������#pragma �� STDC, MCPP, GCC �Τɤ줫��³���Ԥ�Ÿ�����ޤ���</p>
848
<p>#pragma sub-directive �� implementation-defined �Ǥ��������Τ���Ʊ��̾���� sub-directive �������Ϥˤ�äưۤʤ��̣����Ķ��줬����ޤ���̾���ξ��ͤ��빩�פ�ɬ�פǤ����ޤ���<i>EXPAND_PRAGMA</i> == <i>TRUE</i> �ξ��ϡ�#pragma sub-directive ��̾�����Ȥ��ޥ���Ÿ������ƤϺ���Τǡ��桼����̾�����֤ȽŤʤ�ʤ��褦�ˤ�����Ȥߤ�ɬ�פǤ���<b>mcpp</b> ��ͭ�� sub-directive �� #pragma MCPP �ǻϤޤ�ޥ���Ÿ������ʤ��ΤϤ��Τ���Ǥ���C99 �ǵ��ꤵ�줿 #pragma STDC �� GCC 3 �� #pragma GCC ����ˡ��Τ����줿��ΤǤ���<br>
849
��������#pragma once ��¿���ν����Ϥ˼��������̾�������ͤ��붲��Ϥʤ��ʤäƤ���Τǡ�����̾���Τޤ������Ƥ��ޤ����ޤ���#pragma __setlocale �ϥ���ѥ������Τ��Ф��Ƥ�ɬ�פʤΤ� MCPP �Ȥ���̾�����դ�����"__" ����Ƭ���դ��ƥ桼����̾�����֤ȽŤʤ�ʤ��褦�ˤ��Ƥ��ޤ���</p>
852
<h2><a name="3.1" href="#toc.3.1">3.1. #pragma MCPP put_defines, #pragma MCPP preprocess ��</a></h2>
853
<p>#pragma MCPP put_defines, #pragma MCPP preprocess, #pragma MCPP preprocessed �� Standard �⡼�ɤΤ�Τǡ�#put_defines, #preprocess, #preprocessed �� pre-Standard �⡼�ɤΤ�ΤǤ����ʲ��Ǥ� #pragma ����ˤȤä��������ޤ���</p>
854
<p>#pragma MCPP put_defines �ǥ��쥯�ƥ��֤˽в� <b>mcpp</b> �ϡ����λ������������Ƥ��뤹�٤ƤΥޥ����� #define �Ԥη��ǽ��Ϥ��ޤ����������#undef ���줿��ΤϽФƤ��ޤ���<tt>__STDC__</tt> ���� #define, #undef ���оݤˤǤ��ʤ���Τϡ���� #define �Ԥη���Ȥäơ������������ȥޡ����ǰϤ�ǽ��Ϥ���ޤ���<tt>__FILE__</tt>, <tt>__LINE__</tt> �ϥޥ����ƤӽФ�����ưŪ�����������ü�ʥޥ����ʤΤǡ������ǽ��Ϥ�����ִ��ꥹ�Ȥ�̵��̣�ʤ�ΤǤ���ˡ�<br>
855
pre-Standard �⡼�ɤ���� <i>POSTSTD</i> �⡼�ɤǤϡ�function-like �ޥ�������Υѥ���̾�ϵ������ޤ������Ǥ��Υǥ��쥯�ƥ��֤Ǥϡ��ѥ���̾���裱�ѥ��������˵���Ū�� a, b, c, ... �Ȥ���̾����ɽ�����ޤ���27 ���ܰʹߤΥѥ����ˤ� a1, b1, c1, ..., a2, b2, c2, ... �Ȥ���̾����Ȥ��ޤ���</p>
856
<p><b>mcpp</b> �����ϥե��������ϥե��������ꤻ���˵�ư���ơ������ܡ��ɤ��餤���ʤ�</p>
858
#pragma MCPP put_defines
860
<p>���Ǥ�����ȡ���������ޥ����٤��Τ뤳�Ȥ��Ǥ��ޤ������줾��Υޥ�������Τ��륽�����ե�����̾�ȹ��ֹ��ɽ�����륳���Ȥ���Ϥ���ޤ���-S1, -N ���Υ��ץ������դ��Ƶ�ư����ȡ����줾���������ޥ�������äƤ��뤳�Ȥ��狼��ޤ���</p>
861
<p>#pragma MCPP preprocess �Ȥ����ǥ��쥯�ƥ��֤˽в� <b>mcpp</b> �ϡ�</p>
863
#pragma MCPP preprocessed
865
<p>�Ȥ����Ԥ���Ϥ��ޤ�������ϡ����Υ������ե�����ϥץ�ץ������ѤߤǤ��뤳�Ȥ���ΤǤ���</p>
866
<p>#pragma MCPP preprocessed �Ȥ����ǥ��쥯�ƥ��֤˽в� <b>mcpp</b> �ϡ����Υ������ե������ <b>mcpp</b> �ˤ�äƥץ�ץ������ѤߤǤ����Ƚ�Ǥ��ơ�#define �Ԥ��ФƤ���ޤǤ����ϤΤޤ��Ϥ˥��ԡ����ޤ��������ơ�#define �Ԥ��ФƤ���ȡ����ȤϤ��٤� #define �ԤǤ����Ƚ�Ǥ��ơ��ޥ�����������ޤ�����������ˤ��륽�����ե�����̾�ȹ��ֹ�ξ��������ޤ���*1, *2<br>
867
#pragma MCPP preprocessed ��ͭ���ϰϤϤ��Υǥ��쥯�ƥ��֤Τ��륽�����ե�����Τ��ιʹߤ����Ǥ������Υ������ե����뤬 #include ���줿��ΤǤ�����ϡ�include ���������̾�Υץ�ץ����������ޤ���</p>
869
<p>*1 �ºݤν����Ϥ⤦����ʣ���Ǥ��롣#pragma MCPP preprocessed
870
����������ϹԤ���Ⱦ�Τޤ��Ϥ˥��ԡ����뤬��ɸ���������ޥ����� #define �Ԥ������ȥޡ����˰Ϥޤ�Ƥ���Τǡ����ιԤϼΤƤ롣�ޤ�������ν������Ѥ��ǤǤ� #line �ԤϽ����ϤΥ���ѥ������Τ���������������Ѵ����ƽ��Ϥ��롣</p>
871
<p>*2 �������äơ�pre-preprocess ���Ƥ�ޥ�������ξ��ξ���ϼ����ʤ���</p>
873
<h3><a name="3.1.1" href="#toc.3.1.1">3.1.1. �إå��ե������ pre-preprocess</a></h3>
874
<p>�嵭�Υǥ��쥯�ƥ��֤����Ѥ���ȡ��إå��ե�����Ρ֥ץ�ץ�ץ������פ뤳�Ȥ��Ǥ��ޤ����֥ץ�ץ�ץ������פƤ����ȡ����֤Υץ�ץ��������֤����ʤ�û�̤���ޤ���������ˡ�ϡ��嵭�λ��ͤǤ��Ǥˤ狼�ä����Ȼפ��ޤ�����ǰ�Τ���� <b>mcpp</b> ���ȤΥ���������ˤȤä��������ޤ���</p>
875
<p><b>mcpp</b> �Υ������ˤϣ��ܤ� *.c �ե����뤬���ꡢ���Τ����Σ��ܤϤɤ�� "system.H" �� "internal.H" �� include ���Ƥ��ޤ��������ơ�¾�Υإå��� include ���Ƥ��ޤ���ä����Τ˸����ȡ��������ǤϤ����ʤäƤ��ޤ���</p>
881
#include "internal.H"
884
<p>�����ơ�system.H �� noconfig.H �ޤ��� configed.H �Ȥ����Ĥ���ɸ��إå��� include ���Ƥ��ޤ���mcpp.H �ϻ�����륽�����ˤϤ���ޤ����줬�����줫���������� "pre-pre-processed" header �ʤΤǤ���</p>
885
<p>mcpp.H ����������ˤϡʤ������ noconfig.H �������꤬����Ǥ���ˡ�</p>
889
<p>�Ȥ��� <b>mcpp</b> ��ư���ޤ���GCC ���Ǥϡ�-b ���ץ������դ���ˡ�<br>
890
�����ơ������ܡ��ɤ���</p>
892
#pragma MCPP preprocess
894
#include "internal.H"
895
#pragma MCPP put_defines
897
<p>���Ǥ����ߡ�end-of-file �����Ϥ��� <b>mcpp</b>
899
<p>����� mcpp.H ���Ǥ�������ޤ���������� system.H,
900
internal.H ��ץ�ץ�����������Τ������� #define �Ԥν�����դ��ä�����ΤǤ�������� include ����С�system.H, internal.H �� include �����ΤȤޤä���Ʊ�����̤����뤳�Ȥ��Ǥ��ޤ��������ơ������ɸ��إå���ޤี�Υإå��ե���������פο�ʬ�Σ��Υ������ˤʤäƤ��ޤ���#if �ȥ����Ȥ��ä��Ƥ��뤫��Ǥ���������ܤ� *.c �ե������ include ����Τϡ�system.H, internal.H �� include ����Τ���٤ơ��Ϥ뤫��û�����֤Ǥ��ߤޤ���#pragma MCPP preprocess ��Ȥ����ȤǤ���˻��֤�û�̤���ޤ���</p>
901
<p>���֤Υ���ѥ���Ǥ� -DPREPROCESSED=1 �Ȥ������ץ������դ��ޤ���<br>
902
���μ��ϲ����Υե�����˽Ƥ����ơ�makefile �Ǥ���Ȥ���Τ��ɤ��Ǥ��礦��<b>mcpp</b> �Υ��������դ��� makefile �� preproc.c �ˤϡ����줬�Ƥ���Τǡ�������Ƥ���������<br>
903
Visual C, Borland C, LCC-Win32 �Τ褦�ʣ��ѥ�������ѥ���Ǥ���Ω�����ץ�ץ����å��λȤ�ƻ�����¤���ޤ��������ξ��Ǥ⤳�ε�ǽ��ͭ�ѤǤ���</p>
904
<p>���Υإå��ե������ pre-preprocess �ε�ǽ�ϡ�GCC / cpp �� -dD ���ץ����ε�ǽ������ΤǤ���������������������äƤ��ޤ���</p>
906
<li>GCC �Ϲ��ֹ����� #line 123 "filename" �ǤϤʤ� # 123 "filename" �η��ǽ��Ϥ��롣���Τ��ᡢ����� GCC �Ǻƽ������뤳�ȤϤǤ��뤬��Standard C �Υץ�ץ����å��ǤϤǤ��ʤ���<br>
907
<li>GCC �θŤ� cpp �Ǥ� #define �ԤϽи������Ȥ����ǽ��Ϥ���뤬��#undef �ԤϽ��Ϥ���ʤ����������äơ������ƽ�������ȸ��������ΰտޤȰۤʤ��̤ˤʤ뤳�Ȥ����ä���<br>
908
<li>GCC �ˤϤʤ� #pragma MCPP preprocess ��Ȥ����Ȥǡ������®�٤�®���ʤ롣<br>
910
Pre-preprocess �ε�ǽ�Ȥ��Ƥϡ�<b>mcpp</b> �Τۤ����ְ㤤���ʤ�����Ū�Ǥ���<br>
913
<h2><a name="3.2" href="#toc.3.2">3.2. #pragma once</a></h2>
914
<p>#pragma once �� Standard �⡼�ɤǻȤ��ޤ���<br>
915
GCC, Visual C, LCC-Win32 ����� Wave �Ȥ���ñ�Υץ�ץ����å��Ǥ� #pragma once �ϻȤ��ޤ���<br>
916
�إå��ե���������롼�ɤ������ʤ����˻Ȥ��ޤ����إå��ե���������</p>
920
<p>�ȽƤ����ȡ����Υե�����롼�ɤ��� #include �Ԥ�����ФƤ��Ƥ⡢�ǽ�Σ������롼�ɤ��ޤ���</p>
921
<p>�̾�ϡ���������°��ɸ��إå��Ǥ�</p>
928
<p>������Ǥ�����¿��������ɤ��Ǥ��ޤ�����
929
����Ȼ�����ǽ�Ǥ������������ޥ�����Ȥ���ˡ�Ǥϥإå��ե�������ɤޤʤ��Ǥ��ޤ����ȤϤǤ��ޤ���ʥ����åפ�����ʬ�Ǥ⡢#if, #endif �����ФƤ���Τ�ƻ뤹�뤿��ˡ������ɤޤʤ���Фʤ�ʤ�����Ƭ�� # ���ǥ��쥯�ƥ��ֹԡ�# �� preprocessing directive ��³���ԡˤλؼ��Ǥ��뤫�ɤ�����Τ���뤿��ˤϥ����Ȥ�������ʤ���Фʤ�ʤ��������Τ���ˤ�ʸ�����ƥ���Ƚ�Ǥ��ʤ���Фʤ�ʤ����ǡ���ɡ������ɤ�� tokenization ����Ⱦ�ޤǤ��ʤ���Фʤ�ʤ��ΤǤ���ˡ�<br>
930
#pragma once �ϡ��ե�����ؤΥ������������⤷�ʤ��Ǥ��ޤ���ΤǤ������η�̡�¿�� include ��������ν���®�٤����®���ʤ�ޤ���</p>
931
<p>Header name ��Ʊ���Ǥ��뤫�ɤ����ϡ������������ѥ��Υǥ��쥯�ȥ���ʬ��ޤ��ñ���ʸ������Ӥ�Ƚ�Ǥ��ޤ�����������Windows �Ǥ���ʸ������ʸ���϶��̤��ޤ��������äơ�"/DIR1/header.h" �� "/DIR2/header.h" ���̤Τ�ΤȤ��ư�����"header.h" �� "HEADER.H" �Ȥ� Windows �Ǥ�Ʊ����Ρ�UNIX �ϤǤ��̤Τ�ΤȤ��ư����ޤ����ǥ��쥯�ȥ�����Хѥ����Ѵ����Ƶ������ޤ���UNIX �ϤǤ� symbolic link �ϥ������Ѵ����ޤ����������äơ�Ʊ���ե�����Ǥ��뤫�ɤ����ϳμ¤�Ƚ�ꤵ��ޤ���*1, *2</p>
932
<p>���� #pragma once �� GCC V.1.* / cpp �� #pragma once �Υ����ǥ�����Ѥ�����ΤǤ���GCC V.2.*, V.3.* �Ǥ⤳�ε�ǽ�ϻĤäƤ��ޤ�����obsolete �ʤ�ΤȤ���Ƥ��ޤ���#pragma once ���ʤ��Ƥ⡢�إå��ե���������Τ� #ifndef _MACRO, #define _MACRO, #endif �ǰϤޤ�Ƥ���С�cpp ��������������� include ���ʤ��Ȥ������ͤ��ѹ�����Ƥ��ޤ���<br>
933
��������GCC V.2, V.3 �λ��ͤϡ�GCC �λ��Ѥ�����Ȥ��ʤ����Τν����ϤʤɤǤϻȤ��ʤ����Ȥ�����ޤ���ɸ��إå��ν�������äƤ��뤫��Ǥ����ޤ��������� GCC V.2, V.3 �λ��ͤΤۤ������ݤǤ��������ǡ�<b>mcpp</b> �Ǥ� #pragma once ������������Ƥ��ޤ���</p>
934
<p>¾�Υץ�ץ����å��Ǥ�Ʊ���إå��ե������Ȥ����Ϥ�����������櫓�ˤϤ椭�ޤ��ޥ�����Ȥ���ˡ��ʻ�Ѥ��ơ��إå��ե�����Τ褦����Ǥ����Ǥ����Τ��ɤ��Ǥ��礦��</p>
942
<p>��������<assert.h> �ˤ� #pragma once �ϽƤϤ����ޤ���ʤ�����ͳ�� <a href="cpp-test.html#5.1.2"> cpp-test.html#5.1.2</a> ���ȡˡ�C++ �� <cassert>, <cassert.h> ����Ʊ�ͤǤ���</p>
943
<p>�⤦��Ĥ�����ϡ�GCC / GLIBC �κǶ�Υ����ƥ�Ǥ� <stddef.h> �Τ褦�ˡ�¾�� system header ���鷫���֤� #include �����إå��ե����뤬���뤳�ȤǤ���¿���� system header �� <tt>__need_NULL</tt>, <tt>__need_size_t</tt>, <tt>__need_ptrdiff_t</tt>, etc. �Υޥ�����������Ƥ� <stddef.h> �� #include ���ޤ������Τ��Ӥˡ�<stddef.h> �Ǥ� <tt>NULL</tt>, size_t, ptrdiff_t, etc. ���������Ƥ椭�ޤ���<errno.h>, <signal.h> ����Ʊ�ͤǤ���<stdio.h> �Ǥ����⡢¾�� system header �� <tt>__need_FILE, __need___FILE</tt> ���Υޥ�����������Ƥ� #include <stdio.h> �������Τ��Ӥ� FILE �����������Ƥ椯��礬����ޤ��������Υե�����ˤ� #pragma once �Ͻ���櫓�ˤϤ����ޤ���*3</p>
945
<p>*1 CygWIN �Ǥ� /bin �� /usr/bin��/lib �� /usr/lib �Ϥ��줾��Ʊ���ǥ��쥯�ȥ�ǡ�/ �� Windows ����㤨�� C:/dir/cygwin ���Ȥ���� /cygdrive/c/dir/cygwin �⤽���Ʊ���ǥ��쥯�ȥ�Ǥ��뤬��<b>mcpp</b> �ǤϤ����Ϥ��٤�Ʊ���ǥ��쥯�ȥ�Ȥ��ư�����path-list �Ϥ��٤� /cygdrive/c/dir/cygwin/dir-list/file �η����Ѵ����롣</p>
946
<p>*2 MinGW �Ǥ� / �� /usr �Ȥϼºݤˤ�Ʊ���ǥ��쥯�ȥ�ǡ�/ �� Windows ��� C:/dir/msys/1.0 ���Ȥ���� /c/dir/msys/1.0 �⤽���Ʊ���ǥ��쥯�ȥ�ǡ�/mingw �� C:/dir/mingw ���Ȥ���� /c/dir/mingw �⤽���Ʊ���ǥ��쥯�ȥ�Ǥ��롣<b>mcpp</b> �ǤϤ����Ϥ��줾��Ʊ���ǥ��쥯�ȥ�Ȥ��ư�����path-list �Ϥ��٤� c:/dir/msys/1.0/dir-list/file, c:/dir/mingw/dir-list/file �η����Ѵ����롣</p>
947
<p>*3 ���ʤ��Ȥ� Linux / GCC 2.9x, 3.*, 4.* / glibc 2.1, 2.2, 2.3 �ǤϤ����ʤäƤ��롣FreeBSD 4, 5 �Ǥ� glibc �ϻȤ��Ƥ��ʤ��Τǡ���������ʣ���ʥ����ƥ�إå��ˤϤʤäƤ��ʤ���</p>
949
<h3><a name="3.2.1" href="#toc.3.2.1">3.2.1. �إå��ե������ #pragma once �����ġ���</a></h3>
950
<p>��������Τϥإå��ե�����ο������ʤ�����礷�����ȤǤϤ���ޤ�������¿���ȼ�ǤϤ��äȤ�������Ȥˤʤ�ޤ��������ǡ������ưŪ�˽����ñ�ʥġ�����Ѱդ��ޤ�����</p>
951
<p>tool/ins_once.c �ϸŤ� GCC �Υ����ƥ��ѤǤ���Borland C 4.0, 5.5 �Ǥ�ɸ��إå��ν�����Ʊ���롼��˽��äƤ���Τǡ������Ȥ����Ȥ��Ǥ��ޤ���Glibc 2 �Τ褦�ʥ����ƥ�ǤϾ嵭�Τ褦���㳰��¿���Τǡ��Ȥ�ʤ��ۤ���̵��Ǥ���<br>
952
�����������줬�Ȥ��륷���ƥ�Ǥ⡢�إå��ե��������ˤ� GCC �δ����˽��äƤ��ʤ���Τ������ޤ������������إå��Ǥ� GCC �Ρ������ɤ߹��ޤʤ��Ȥ�����ǽ��ư��ޤ���<br>
953
�����ǡ�ins_once.c ��ѥ��뤷�ơ�UNIX �ʤ� /usr/include, /usr/local/include ���Υǥ��쥯�ȥ�ǡ��ޤ�</p>
959
ins_once -t *.h */*.h */*/*.h
961
<p>�Ȥ��ޤ�����������ȡ�#ifndef �ޤ��� #if !defined
962
�ǻϤޤ�ʤ��إå��ե����뤬��𤵤�ޤ��������Υإå����ǽ������Ƥ������������줫�顢</p>
964
ins_once *.h */*.h */*/*.h
966
<p>�Ȥ���ȡ��ƥإå��ե�����κǽ�˽и����� #directive �� #ifndef �ޤ��� #if !defined �Ǥ��ä����ϡ�����ľ��� #pragma once �Ԥ����ޤ�ޤ����ʤ��줬�Ǥ���Τ� root ������Υ桼�������ΤϤ��������ɬ�פʤ� chmod -R u-w * �Ȥ��ơ�access permission ���ᤷ�Ƥ����ˡ�</p>
967
<p>ins_once �ˤϼ��Τ褦�ʥ��ץ������ޤ��������ƥ�˹�碌��Ŭ���ʥ��ץ��������Ƥ���������</p>
969
<li>-t: �ե����뤬�ʥ����Ȥ�����ȡ�#ifndef �� #if !defined �ǻϤޤäƤ��뤫�ɤ�����ƥ��Ȥ��롣�ե�����Ͻ����ʤ���<br>
970
<li>-p: �ե��������Ƭ�� #pragma once �Ԥ����ʥǥե���ȤǤ� #ifndef / #if !defined �Ԥμ��˽���ˡ�<br>
971
<li>-g: GCC �Τ���ˡ�<stddef.h>, <stdio.h>, <signal.h>, <errno.h> ������ʤ��ʥǥե���ȤǤϽ����ʤ��Τ� <assert.h>, <cassert>, <cassert.h> �����ˡ�<br>
973
<p>ins_once ��ʣ����¹Ԥ��Ƥ�Ʊ���ե�����˥��֤äƽ��ळ�ȤϤʤ��褦�ˡ���ñ�ʥ����å��Ϥ��Ƥ��ޤ�������������̩�ʤ�ΤǤϤ���ޤ���</p>
974
<p>���� ins_once �ϴ֤˹�碌�ʤΤǡ�tokenization �ϤۤȤ�ɤ�äƤ��ޤ���FreeBSD 2.0, 2.2.7, Borland C 4.0, 5.5 �γƥإå��ե�����Ǥϴ����̤��ư��ޤ��������ü�ʥإå��ե����뤬����ȸ�ư��뤫�⤷��ޤ���ins_once ��ɬ���Хå����åפ�ȤäƤ���¹Ԥ��Ƥ���������<br>
975
�磻��ɥ����ɤ� shell ��Ÿ�������Ƥ��������ʥХåե��������С��ե���������ϡ�����ʬ���Ƽ¹Ԥ���ˡ�</p>
978
<h2><a name="3.3" href="#toc.3.3">3.3. #pragma MCPP warning, #include_next, #warning</a></h2>
979
<p>�����Υǥ��쥯�ƥ��֤� GCC �Ȥθߴ����Τ�����Ѱդ���Ƥ����ΤǤ���GCC �ˤ� #include_next, #warning �Ȥ������ʰ�ȿ�Υǥ��쥯�ƥ��֤�����ޤ������ʰ�ȿ�Ǥ����������ȤäƤ��륽������ˤ���ޤ���Glibc 2 �Υ����ƥ�Ǥϡ������ƥ�إå��ե�����ˤ����ȤäƤ����Τ�������ޤ��������� <b>mcpp</b> �Ǥϡ������Υ�������ѥ���Ǥ���褦�ˤ��뤿�ᡢGCC �Ѥ˸¤ä� #include_next, #warning ��������Ƥ��ޤ�����������Standard �⡼�ɤǤϥ������˥��оݤȤʤ�ޤ���Standard �⡼�ɤǤ� #pragma MCPP warning ��������Ƥ��ޤ�������� GCC �Ѥ˸¤�ޤ���*1</p>
981
#include_next <header.h>
983
<p>�� include directory ��������ݤˡ����� include ���Υե�����Τ���ǥ��쥯�ȥ���åפ��ơ����μ��Υ�������Υǥ��쥯�ȥ꤫�饵������Ϥ�ޤ���</p>
984
<p>CygWIN, MinGW �Ǥϡ��إå�̾����ʸ������ʸ���ζ��̤�̵�뤷�ޤ���</p>
986
#pragma MCPP warning any message
990
<p>�Ǥϡ�any message �Τޤ� warning �Ȥ���ɸ�२�顼���Ϥ˽��Ϥ��ޤ���������������� #error �Ȱ�äƥ��顼�ˤϤʤ�ޤ���</p>
992
<p>*1 V.2.5 �ޤǤ� #pragma MCPP include_next ��������Ƥ�������
993
ɬ�פ��ʤ��Ȼפ���ΤǺ��������</p>
996
<h2><a name="3.4" href="#toc.3.4">3.4. #pragma MCPP push_macro, #pragma __setlocale ��</a></h2>
997
<p>������ Visual C �� <b>mcpp</b>
998
��ܿ��������˼��������Ĥ��Ǥ�¾�ν����ϤǤ�Ȥ���褦�ˤ�����ΤǤ���</p>
999
<p>#pragma MCPP push_macro( "MACRO"), #pragma MCPP pop_macro( "MACRO") �ϡ����λ����Ǥ� MACRO �Υޥ���������å��� "push" ������ "pop" �����ꤹ���ΤǤ���<br>
1000
Visual C �Ǥ� #pragma push_macro( "MACRO"), #pragma pop_macro( "MACRO") ��Ȥ��ޤ���<br>
1001
push_macro �ǤϤ��Υޥ�������������졢pop_macro �Ǹ����ᤵ��ޤ�����push ���Ƥ⤽�Υޥ�������Ϥޤ�ͭ���Ǥ��������̵���ˤ��뤿��ˤ� #undef ���뤫���ޤ����̤�����Ǻ��������ɬ�פ�����ޤ���push_macro �Ǥ�Ʊ��̾���Υޥ����Ťˤ� push ���뤳�Ȥ��Ǥ��ޤ���</p>
1002
<p>#pragma __setlocale( "<encoding>")
1003
�� multi-byte character encoding �� <encoding> ���ѹ����ޤ���__setlocale �ΰ�����ʸ�����ƥ��Ǥʤ���Фʤ�ޤ���<encoding> �ˤĤ��Ƥ� <a href=#2.8>2.8</a> �Ƥ��������������Ȥ��ȡ����Ĥ� translation unit ����Ǥ�ʣ���� encoding ��Ȥ����Ȥ��Ǥ��ޤ���<br>
1004
Visual C++ �Ǥ� #pragma setlocale �Ǥ��ꡢ#pragma __setlocale �ϻȤ��ޤ���Encoding �λ���� <b>mcpp</b> �����Ǥʤ�������ѥ���ˤ�������ɬ�פ�����ޤ���������ѥ��餬ǧ���Ǥ���Τ� #pragma setlocale ����������Ǥ���</p>
1005
<p>#pragma __setlocale ��ǧ���Ǥ��륳��ѥ������ΤϤ��ޤΤȤ���������ޤ���</p>
1008
<h2><a name="3.5" href="#toc.3.5">3.5. #pragma MCPP debug, #pragma MCPP end_debug, #debug, #end_debug</a></h2>
1009
<p>#pragma MCPP debug, #pragma MCPP end_debug �� Standard �⡼�ɤΤ�ΤǤ���pre-Standard �⡼�ɤǤ� #debug, #end_debug �Ȥʤ�ޤ���</p>
1010
<p>#pragma MCPP debug <args> �ǥ��쥯�ƥ��֤ϥ��������Ǥ�դιԤ˽��Ȥ��Ǥ��ޤ���<args> �ǥǥХå�����μ������ꤷ�ޤ������Ĥ� #pragma MCPP debug �ǥ��쥯�ƥ��֤�ʣ���� <arg> ����ꤹ�뤳�Ȥ��Ǥ��ޤ���ɬ�����İʾ�� <arg> ���꤬ɬ�פǤ������Υǥ��쥯�ƥ��֤�����ȡ���������ǥХå�����ν��Ϥ��Ϥޤ�ޤ��������ơ�#pragma MCPP end_debug <args> �ǡ�<args> �ΥǥХå�������Ϥ��������ޤ���#pragma MCPP end_debug �Ǥϡ�<args> ���ά���뤳�Ȥ��Ǥ��ޤ������ξ��ϡ����ꤵ��Ƥ������٤ƤΥǥХå�������Ϥ��������ޤ���<b>mcpp</b> �ǥ��ݡ��Ȥ��ʤ������� <args> �ˤ��ä����ϡ��������˥�Ф��ޤ������������ˤ��ä�������������ͭ���Ǥ���<br>
1011
�ǥХå�����Ϥ��٤ơ��ץ�ץ�����������ν��Ϥ�Ʊ���ѥ��˽��Ϥ���ޤ������������ν��Ϥ�Ʊ�������뤿��Ǥ����������äơ����Υǥ��쥯�ƥ��֤�����ȥ���ѥ���Ǥ��ޤ���</p>
1012
<p>�ץ�ץ������η�̤˵��䤬�����硢������ʬ��</p>
1014
#pragma MCPP debug token expand
1015
/* �ǥХå���������ʬ */
1016
#pragma MCPP end_debug
1018
<p>�Ȥ����դ��ˤϤ���ǻȤ��ޤ���
1020
<p>����� <b>mcpp</b> ���ȤΥǥХå��ѤΤ�ΤǤ�����
1021
�ץ�ץ������β�����ȥ졼�����������˻Ȥ��ޤ����������Ū����Ū�ʤΤǡ��������ʤ�������Ǥ��ʤ��Ȥ����⤢�ꡢ�������뤵���⤢��ޤ��������ޤƤ���������</p>
1022
<p><arg> �μ���ϼ����̤�Ǥ���</p>
1025
<tr><th>path </th><td>include �ե�����Υ������ѥ���ɽ������</td></tr>
1026
<tr><th>token </th><td>token �Ĥ����ڤ�ʬ���ơ����μ����ɽ������</td></tr>
1027
<tr><th>expand </th><td>�ޥ����ƤӽФ���Ÿ��������ȥ졼������</td></tr>
1028
<tr><th>if </th><td>#if (#elif, #ifdef, #ifndef) �ο�����ɽ������</td></tr>
1029
<tr><th>expression</th><td>#if ����ɾ����ȥ졼������</td></tr>
1030
<tr><th>getc </th><td>�ץ�ץ������� 1 byte ���ĥȥ졼������</td></tr>
1031
<tr><th>memory </th><td><b>mcpp</b> �λȤäƤ���ҡ��ץ���ξ�����ɽ������</td></tr>
1036
<h3><a name="3.5.1" href="#toc.3.5.1">3.5.1. #pragma MCPP debug path, #debug path</a></h3>
1037
<p>���Υǥ��쥯�ƥ��֤˽в�
1038
<b>mcpp</b> �ϡ��ޤ����ꤵ��Ƥ��� include �ǥ��쥯�ȥ�Υ������ѥ���ͥ���̤ι⤤��Τ�����ɽ�����ޤ��ʤ��������ǽ�˥���������륫���ȥǥ��쥯�ȥꤪ��ӥ������Υǥ��쥯�ȥ�Ͼ�ά�ˡ�<br>
1039
����ˡ�#include �Ԥ�����ȡ����Υإå��ե������ include ���뤿��� <b>mcpp</b> ���ºݤ˥����������ǥ��쥯�ȥ꤬�ʥ����ȥǥ��쥯�ȥ�����ޤ�ơˤ��٤�ɽ������ޤ���#pragma once �Τ���إå��ե��������� #include �������ϡ����λݤ�ɽ�����ޤ���</p>
1041
<h3><a name="3.5.2" href="#toc.3.5.2">3.5.2. #pragma MCPP debug token, #debug token</a></h3>
1042
<p>�ޤ����ɤ߹�����������Ԥ�ɽ��������ǡ�<b>mcpp</b> �� token ���ɤि�Ӥˡ����� token �ȼ����ɽ�����ޤ���Token �Ȥ����Τ˸����� preprocessing-token (pp-token) �Τ��ȤǤ������������ɤ���Ф���ǤϤʤ���<b>mcpp</b> ���ޥ���Ÿ���ʤɤ�����Ū���ɤ��֤� pp-token �⡢���ΤĤɡʷ����֤��ơ�ɽ������ޤ���</p>
1043
<p>��������1 byte �� pp-token �Τ������Τ�Τ�ɽ������ޤ�����ϥץ������ΤĤ����ˤ���ΤǤ���</p>
1045
<li>�ץ�ץ������ǥ��쥯�ƥ��ֹԤγ��Ϥ� '#'<br>
1047
�ޥ�������Υѥ����ꥹ�ȳ��Ϥ� '('<br>
1049
�ޥ�������Υѥ�������ڤ� ','<br>
1051
�ޥ����ƤӽФ��ΰ����ꥹ�ȳ��Ϥ� '('<br>
1053
<p>Pp-token �μ���ϼ����̤�Ǥ���
1057
<tr><th>(NAM) </th><td>identifier</td></tr>
1058
<tr><th>(NUM) </th><td>preprocessing-number</td></tr>
1059
<tr><th>(OPE) </th><td>operator or punctuator</td></tr>
1060
<tr><th>(STR) </th><td>string literal</td></tr>
1061
<tr><th>(WSTR)</th><td>wide string literal</td></tr>
1062
<tr><th>(CHR) </th><td>character constant</td></tr>
1063
<tr><th>(WCHR)</th><td>wide character constant</td></tr>
1064
<tr><th>(SPE) </th><td>$, @ �����ü�� pp-token</td></tr>
1065
<tr><th>(SEP) </th><td>token separator (white space)</td></tr>
1068
<p>�����Τ��� (SEP) �ϲ��ԥ����ɰʳ����̾��ɽ������ޤ���
1069
���ԥ��������Υ���ȥ����륳���ɤ� <^J>, <^M> ����ɽ������ޤ���</p>
1071
<h3><a name="3.5.3" href="#toc.3.5.3">3.5.3. #pragma MCPP debug expand, #debug expand</a></h3>
1072
<p>�ޥ����ƤӽФ���Ÿ��������ȥ졼�����ޤ���</p>
1074
#pragma MCPP debug �Ǥϼ����̤�Ǥ���<br>
1076
�ޤ����Υޥ����������ɽ������ޤ�������ˡ��������ɤ߹��ޤ졢�ִ��ꥹ����Υѥ������֤�������졢�����������褦���������ɽ������ޤ����ޥ���������ͥ��Ȥ���Ƥ���С����줬�缡�����������Ÿ������Ƥ����ޤ���������˥ޥ���������С����β������Ƶ�Ū�ˡʥѥ����Ȥ��ִ������ˡ˥ȥ졼������ޤ���</p>
1077
<p>ɽ���� <b>mcpp</b> ���ȤΤ����Ĥ��δؿ��ؤν�����Τ��Ӥˡ����δؿ�̾�ȤȤ�˹Ԥ��ޤ��������δؿ��ϼ��Τ褦������롼����Ǥ���Standard �⡼�ɤΥ������Ȥ���ȡ�����ˤ褯����Ǥ��ޤ���</p>
1080
<tr><th>expand </th><td>�ޥ���Ÿ����������롼����</td></tr>
1081
<tr><th>replace </th><td>�ޥ�����٥�Ÿ������</td></tr>
1082
<tr><th>collect_args</th><td>�������</td></tr>
1083
<tr><th>prescan </th><td>�ִ��ꥹ�Ȥ��������� #, ## �黻�Ҥν�����</td></tr>
1084
<tr><th>substitute </th><td>�ѥ�����������ִ�����</td></tr>
1085
<tr><th>rescan </th><td>�ִ��ꥹ�Ȥ����������</td></tr>
1088
<p>�����Τ�����expand �ʳ��ϸߤ��˴��ܺƵ��δط��ˤ���ޤ���</p>
1090
collect_args �Ǥϡ�<b>mcpp</b> ������Ū�˥����å����Ѥ�Ǥ���Ÿ������Υǡ�����ɽ������ޤ��������Υǡ����Ǥϡ�<b>mcpp</b> ������Ū�ʥ����ɤ����Τ褦�ʵ����ɽ������ޤ���</p>
1093
<tr><th><n> </th><td>n ���ܤΥѥ���</td></tr>
1094
<tr><th><TSEP> </th><td>pp-token ����ڤ뤿��� <b>mcpp</b> ���������� token separator</td></tr>
1095
<tr><th><MAGIC> </th><td>Ʊ̾�ޥ����κ��ִ���ػߤ��륳����</td></tr>
1096
<tr><th><RT_END></th><td>�ִ��ꥹ�Ȥν�����������</td></tr>
1097
<tr><th><SRC> </th><td>Identifier ���������ե����뤫������ޤ줿���Ȥ�������</td></tr>
1100
<p>���Τ��� <SRC> �� <i>STD</i> �⡼�ɤǤ����Ȥ�졢<i>POSTSTD</i> �⡼�ɤǤ� <i>COMPAT</i> �⡼�ɤǤ�Ȥ��ޤ���</p>
1101
<p>#pragma MCPP debug token ����ꤷ���ۤ������狼��䤹���Ǥ��礦��</p>
1102
<p>pre-Standard �⡼�ɤ� #debug expand �Ǥ� Standard �⡼�ɤȤ������롼���������˰�äƤ��ޤ���������ά���ޤ���</p>
1104
<h3><a name="3.5.4" href="#toc.3.5.4">3.5.4. #pragma MCPP debug if, #debug if</a></h3>
1105
<p>#if, #elif, #ifdef, #ifndef �ιԤ�ɽ����������ɾ�������Ǥ��뤫���Ǥ��뤫����𤷤ޤ��������åפ���� #if section ��Ǥϡ���𤵤�ޤ���</p>
1107
<h3><a name="3.5.5" href="#toc.3.5.5">3.5.5. #pragma MCPP debug expression, #debug expression</a></h3>
1108
<p>#if, #elif �Ԥμ���ɾ����ܺ٤˥ȥ졼�����ޤ���</p>
1110
cpp ���ȤΥǥХå��Ѥ˥��ꥸ�ʥ��ǰ��褢���Τǡ���ϤۤȤ�ɼ��ä��Ƥ��ޤ�������Ū�ʴؿ�̾�Ф��꤫���ѿ�̾�Ȥ����ͤޤǥ��饺��ȽФƤ��ޤ���<b>mcpp</b> �Υ��������ɤ��ʤ���Ǥʤ��ȡ��ѿ�������Ǥ��ޤ���<br>
1111
��������ʣ���ʼ����ͤ�ɾ���ѤΥ����å����Ѥ߹ߤ�������Ƥ����褦���ϡ��������ʤ��Ƥⲿ�Ȥ�����Ǥ���Ǥ��礦��</p>
1113
<h3><a name="3.5.6" href="#toc.3.5.6">3.5.6. #pragma MCPP debug getc, #debug getc</a></h3>
1114
<p><b>mcpp</b> ��� get() �Ȥ������Х����ɤ߹��ߴؿ����ƤӽФ���뤿�Ӥˡ��ܺ٤ʥǡ�������Ϥ��ޤ�����������Standard �⡼�ɤǤ� pp-token �������ϡ����Σ��Х����ܤ������Υ롼����ϸƤӽФ���ޤ���</p>
1115
<p>#debug getc �Ǥ� token ��������⤳�Υ롼���ƤӽФ����Τǡ��Ȥ�Ǥ�ʤ��̤Υǡ������Ǥ��Ф���ޤ���<p>
1116
<p>������ˤ��Ƥ⡢����ʥǡ��������Ϥ���ޤ����Ȥ�ɬ�פϤޤ�����ޤ���</p>
1118
<h3><a name="3.5.7" href="#toc.3.5.7">3.5.7. #pragma MCPP debug memory, #debug memory</a></h3>
1119
<p>���Υǥ��쥯�ƥ��֤�����ȡ����λ����� <b>mcpp</b> ������Ū�˻ȤäƤ��� malloc(), realloc(), free() �ˤ��ҡ��ץ���ξ����������𤷤ޤ�������ϻ�κ�ä� kmmalloc ��¾�β����फ�� malloc() ��ȤäƤ���������ε�ǽ�Ǥ���<a href="mcpp-porting.html#4.extra"> mcpp-porting.html#4.extra</a> ���ȡˡ�¾�� malloc() �ξ��ϥ��顼�ˤϤ��ޤ���������𤷤ޤ���<br>
1120
���Υǥ��쥯�ƥ��֤��������ʤ��ޤ� <b>mcpp</b> ����λ����ȡ����λ��˺��٥ҡ��ץ���ξ�������𤵤�ޤ���<b>mcpp</b> �� out of memory �ǽ�λ��������Ʊ�ͤǤ���</p>
1123
<h2><a name="3.6" href="#toc.3.6">3.6. #assert, #asm, #endasm</a></h2>
1124
<p>#assert �� pre-Standard �⡼�ɤǤ����Ȥ��ޤ���GCC �ǤǤϼ�������ޤ���Standard C �� #error ���б����뵡ǽ�Ǥ���Standard C ��</p>
1126
#if ULONG_MAX / 2 < LONG_MAX
1127
#error Bad unsigned long handling.
1132
#assert LONG_MAX <= ULONG_MAX / 2
1134
<p>�Ƚޤ��������� #if ���Ȥ���ɾ����������
1135
non-zero�ˤǤ���в��⤻��������0�ˤǤ����</p>
1137
Preprocessing assertion failed
1139
<p>�Ȥ������դ�³���Ƥ��ιԡʹ���³�ȥ����Ƚ�������ιԡˤ�ɽ�����ޤ���
1140
����ϥ��顼�Ȥ��ƥ�����Ȥ��ޤ�������������ߤ��ޤ���</p>
1142
#assert �� System V �� GCC �� #assert �Ȥϡ��ޤä����̤Τ�ΤǤ���</p>
1143
<p>#asm, #endasm �Σ��ĤΥǥ��쥯�ƥ��ֹԤǤϤ��ޤ줿�֥��å��ϥ�����֥饽�����Ȥ��ư����ޤ���pre-Standard �⡼�ɤǤ����Ȥ��ޤ���������������� Microware C / 6809 �Ѥ˽줿��ΤʤΤǡ�¾�ν����Ϥˤ�ܿ�����ˤϡ�system.c �� do_old(), do_asm(), put_asm() �˽���ɬ�פ�����ޤ���<br>
1144
#asm �֥��å��ˤĤ��Ƥϡ�trigraphs ���Ѵ��� <backslash><newline> �κ���Ϥ��ޤ����������Ȥν����� token �����å���ʸ�������å��Ϥ�������Ƭ�� space �������������ޤ��ޥޥ�����Ʊ��̾�������äƤ�ޥ���Ÿ���������������ιԤΤޤ��Ϥ��ޤ�������¾�Υǥ��쥯�ƥ��ֹԤ� #asm �֥��å���Ǥϰ�̣������ޤ���</p>
1145
<p>���� #asm, #endasm �� Standard C �Ǥ�ǧ����ʤ���ΤǤ����ޤ���#pragma sub-directive �ʳ��γ�ĥ�ǥ��쥯�ƥ��֤����ʳ��Ǥ���������Ф��꤫��#pragma asm, #pragma endasm ��̾�����Ѥ��Ƥ��褷�ޤ��ȸ����Τϡ�Standard C �Ǥϥ������Ϥ��٤ƣä� token sequence ������Ω�äƤ���ɬ�פ�����ޤ����ʸ�̩�˸����� preprocessing token sequence�ˡ�������֥�ץ������ϣä� token sequence �ǤϤʤ�����Ǥ���Standard C �ǥ�����֥ꥳ���ɤ�Ȥ��ˤϡ������ʸ�����ƥ��Ȥ��� token ����������ˡ��������ޤ������ơ��������������Ȥ߹��ߴؿ���ѥ������Τ˼������ơ�</p>
1152
<p>�Ȥ��ä����ǸƤӽФ��ΤǤ���</p>
1153
<p>���Ĺ�������ɤ��Ȥ���ʤ��ȤϤ�äƤ����ʤ��Τǡ�
1154
���ξ��Ϥ�����ʬ���̤δؿ��ˤ��ơ��饤�֥��ؿ�����Τ褦�ˡ��̤Υե�����ǥ�����֥�ץ�����ऽ�Τ�Τ�ơ�������֥�ѥ��ǽ���������������ƻȤ����Ȥˤʤ�ޤ�������ϵ�������¤Τ褦�˻פ��뤫�⤷��ޤ���portable �ʣåץ�������ˤϥ�����֥����ʬ�ϴ�����ʬΥ����ɬ�פ�����ޤ����顢�ष�� #asm ��Ȥ鷺���̥ե�����ǽ褦�ˤ����ۤ����ɤ��Ǥ��礦��</p>
1157
<h2><a name="3.7" href="#toc.3.7">3.7. C99 �ο���ǽ��_Pragma() �黻�ҡ����Ѱ����ޥ�������</a></h2>
1158
<p>����� Standard �⡼�ɤǤ����Ȥ��ޤ���<br>
1160
<tt>__STDC_VERSION__</tt> �� 199901L �ʾ�ˤ���ȡ�C99 �μ��ε�ǽ��ͭ���ˤʤ�ޤ���<br>
1161
C++ �Ǥ� -V199901L ���ץ����� <tt>__cplusplus</tt> �� 199901L �ʾ�ˤ�������Ʊ�ͤǤ���1, 7 �ʳ��λ��ͤ� C++ Standard �ˤϤ���ޤ���Standard �⡼�ɤǤ� C99 �Ȥθߴ�������뤿��ˡ����Υ��ץ������Ѱդ��Ƥ��ޤ���<br>
1162
�����������Ѱ����ޥ����� Standard �⡼�ɤǤ� C90 ����� C++ �Ǥ�Ȥ���褦�ˤ��Ƥ���ޤ���*1</p>
1164
<li>// ��������ޤǤ��ȤȤ��ư�����<br>
1165
<li>���Ѱ����ޥ������Ȥ��롣
1167
<li>Preprocessing-number ����� e+, E+, e-, E- ��Ʊ�ͤ� p+, P+,
1168
p-, P- �Ȥ��� sequence ��ǧ��롣�������ư���������Υӥåȥѥ������ 0x1.FFFFFEp+128 �Ȥ����դ��ˡ������ʤ�ɽ�����뤿��Τ�ΤǤ��롣<br>
1169
<li>_Pragma() operator ��ͭ���ˤʤ롣<br>
1170
<li><i>EXPAND_PRAGMA</i> �Ȥ����ޥ�����
1171
<i>TRUE</i> ��������ƥ���ѥ��뤵�줿 <b>mcpp</b> �Ǥϡ�#pragma �Ԥΰ����ϡ�STDC, MCPP, GCC �Τɤ줫�ǻϤޤ�ΤǤʤ��¤�ޥ���Ÿ�����оݤȤʤ�ʥǥե���ȤǤ� <i>EXPAND_PRAGMA</i> == <i>FALSE</i> �Ǥ��ꡢ�ޥ���Ÿ�����ʤ���Ÿ������Τ� Visual C �Ǥ����Ǥ���ˡ�<br>
1172
<li>#if ���� long long �Τ�������ϤǤ� long long / unsigned long long ��ɾ�����롣<br>
1173
<li>���̻ҡ�ʸ�������ʸ�����ƥ�롦pp-number ����ˤ��� \unnnn, \Unnnnnnnn �η��� UCN �Ȥ��� escape sequence ���̤�������� Unicode ��ʸ�����ͤ��̣���롣#if ���Ǥ� UCN ���ͤϣ�����ɽ���Ȥ���ɾ�����롣�ʤ�������<i>POSTSTD</i> �⡼�ɤǤ� UCN �ϻȤ��ʤ��ˡ�<br>
1175
<p>���Ѱ����ޥ����Ȥ����Τϡ����Τ褦�ʤ�ΤǤ���</p>
1177
#define debug(...) fprintf(stderr, __VA_ARGS__)
1179
<p>�Ȥ����ޥ������������ȡ�
1182
debug( "X = %d\n", x);
1184
<p>�Ȥ����ޥ����ƤӽФ��ϼ��Τ褦��Ÿ������ޤ���
1187
fprintf(stderr, "X = %d\n", x);
1189
<p>���ʤ�����ѥ������ꥹ����� ... �����İʾ�Υѥ������̣����
1190
�ִ��ꥹ����� __VA_ARGS__ ��������б����ޤ��������ơ��ޥ����ƤӽФ����ˤ� ... ���б����������ʣ�����äƤ⡢������ , ��ޤ��Ϣ�뤷����Τ���Ĥΰ����Τ褦�˰����ޤ���</p>
1191
<p>_Pragma �黻�Ҥ� _Pragma( "foo bar") �Ƚ� #pragma foo bar �Ƚ��Τ�Ʊ�����̤���ı黻�ҤǤ���������ʸ�����ƥ��ޤ��ϥ磻��ʸ�����ƥ�룱�ĤǤʤ���Фʤ�ޤ��磻��ʸ����Ǥ������Ƭ�� L ��������ʸ�����ƥ���Ϥ� " ��������ʸ�����ƥ������ \", \\ �줾�� ", \ ���֤���������Τ� #pragma �ΰ����Ȥ��ư����ޤ���<br>
1192
#pragma �ϥ������������ԣ��Ԥν�ᤫ�齪���ޤǤ˽ʤ���Фʤ餺���������ʾ��ʤ��Ȥ� C90 �Ǥϡ˥ޥ���Ÿ������ʤ��Τ��Ф��ơ�_Pragma() �黻�Ҥϥ������Τɤ��˽Ƥ���Ω���������Ԥ� #pragma ����Τ�Ʊ�����̤�������ޥ������ִ��ꥹ����˽��Ȥ�Ǥ����ޥ���Ÿ���η�̤Ȥ����������줿 _Pragma() operator ��ͭ���Ǥ������ν����������Ѥ��뤳�Ȥǡ����� portability ����ä� pragma directive ����Ȥ��Ǥ��������Ϥˤ�� #pragma �ΰ㤤�ĤΥإå��ե�����ǵۼ����뤳�Ȥ�Ǥ��ޤ����ʥ���ץ�Ȥ��Ƥ� "Validation Suite" �� pragmas.h, pragmas.t �ȤΤ��ȡˡ�*2</p>
1193
<p>�ʤ���C99 �Ǥ� #if ���η��Ϥ��ν����Ϥκ�����������ȤʤäƤ��ޤ���long long / unsigned long long ��ɬ�ܤȤ���Ƥ���Τǡ�#if ���η��� long long / unsigned long long �ޤ��Ϥ���ʾ�Ȥ������Ȥˤʤ�ޤ���C90, C++98 �Ǥ� #if ���� long / unsigned long ��ɾ�����뤳�ȤˤʤäƤ��ޤ�����������<b>mcpp</b> �� C90, C++98 �Ǥ� long long / unsigned long long ��ɾ������long / unsigned long ���ϰϤ�Ķ�����ͤ��Ф��Ƥϥ������˥�Ф��ޤ���*1</p>
1195
<p>*1 ����� GCC, Visual C 2005 ���Ȥθߴ����Τ���Ǥ��롣¾�ν����ϤǤ⡢
1196
C99 �λ��ͤ���˼�������Τ����Τǡ�<tt>__STDC_VERSION__</tt> �� 199409L ���Ȥ����ޤޤ������������λ��ͤ���������Ƥ椯���Ȥ�ͽ�ۤ���롣</p>
1197
<p>*2 C99 �Ǥ� #pragma �ΰ����� STDC �ǻϤޤ���ϥޥ���Ÿ������ʤ����������Ǥʤ����� implementation-defined �Ǥ��롣</p>
1200
<h2><a name="3.8" href="#toc.3.8">3.8. Borland C �� asm ʸ����¾���ü�ʹ�ʸ</a></h2>
1201
<p>Borland C �ˤ� asm �Ȥ���������ɤ����äơ�</p>
1208
<p>�Ȥ��ä����ǥ�����֥ꥳ���ɤҤ���褦�ˤʤäƤ��ޤ�����
1209
����� #asm �ʾ�ˣø����ʸˡ����Ϥ��줿�ˤ����§Ū�ʤ�ΤǤ���������ˤ��ޤ��ޥޥ�����Ʊ��̾��������ȡ�����ϥޥ���Ÿ������Ƥ��ޤ��ޤ���Borland C ���Τ�ΤǤ� <b>mcpp</b> �Ǥ⡢��������Ʊ���Ǥ���������֥�ץ��������̤� .ASM �ե�����ǽΤ������Ǥ��礦��</p>
1210
<p>Visual C++ �ˤ� __asm �Ȥ���Ʊ�ͤΥ�����ɤ�����ޤ���<br>
1211
GCC �ˤ� asm( " mov x,4\n") �Ȥ����ޤäȤ��ʷ����Ȥ߹��ߴؿ����Ѱդ���Ƥ��ޤ���</p>
1214
<h2><a name="3.9" href="#toc.3.9">3.9. GCC �Ȥθߴ���</a></h2>
1215
<p>GCC �����Ǥ� <b>mcpp</b> �Ǥϡ�GCC / cpp (cc1) �Ȥθߴ�������Ѿ夢�ޤ����ؤ��ʤ����٤˳��ݤ��Ƥ��ޤ�������ߴ����̤�¿������ޤ���<br>
1216
�ޤ��¹Ի����ץ����ˤĤ��Ƥϡ�2 �Ϥ˸���褦�ˤ��������㤤������ޤ���-A ���ץ�������ϼ������Ƥ��ޤ��ޤ����ǥ��쥯�ƥ��֤Ǥϵ��ʰ�ȿ�� #assert, #ident ���ϼ������Ƥ��ޤ���*1<br>
1217
�������������ʤ��Ȥˡ������Τ��Ȥ������ǥ���ѥ���Ǥ��ʤ��Ȥ����������Ϥ������ʤ��褦�Ǥ���</p>
1218
<p>�ष���ºݤ�����Ȥʤ�Τϡ��Ť��ץ�ץ����å����ü�ʻ��ͤƤˤ����������Ǥ���������¿���� GCC �� -pedantic ����ꤹ��ȥ������˥��Фޤ���<b>mcpp</b> �� Standard �⡼�ɤΤ�ΤǤϥ��顼�����å����̤�˼������Ƥ���Τǡ��ۤ� GCC �� -pedantic ���ǥե���ȤȤʤäƤ��ޤ���GCC �ϥǥե���ȤǤϤ����������ʰ�ȿ���������ۤä��̤����ᡢ����Ƥˤ����������������˸����ޤ������������������ʤ˹��פ���褦�˽ΤϤ����ƴ�ñ�ʤ��Ȥǡ��虜�虜���ʰ�ȿ�ν�����ɬ�����ϲ��⤢��ޤ���ñ�˰ܿ�����»�ʤ������ǡ���������ȥХ��β����Ȥʤ�Τǡ����Ĥ�������ľ���Ƥ����ޤ��礦��</p>
1220
<p>*1 �����Ϥ������ɬ�פʤ� #pragma �Ǽ������٤���ΤǤ��롣
1221
#include_next, #warning ��Ʊ�ͤǤ��뤬��GCC �Υ����ƥ�Ǥϼºݤ˻����Ȥ��Ƥ���Τǡ�<b>mcpp</b> �Ǥ� GCC �Ǥ˸¤äƼ������������������������˥��оݤˤʤ롣</p>
1223
<h3><a name="3.9.1" href="#toc.3.9.1">3.9.1. FreeBSD 2 / kernel �������Υץ�ץ�����</a></h3>
1224
<p>�ʲ��ˡ�FreeBSD 2.2.2-R (1997/05) �� kernel �������������������Ƥ����ޤ����ǥ��쥯�ȥ�̾�Ϥ������ /sys (/usr/src/sys) ��Τ�ΤǤ��������Τ��� 7, 8 ��ɬ������ʰ�ȿ�ǤϤʤ���<b>mcpp</b> �Ǥ�����̤�ν����ޤ��������������֤ʤä����������ʤΤǥ������˥��Фޤ���6 �ϳ�ĥ��ǽ�ǡ�C99 �Ǥ�Ʊ����ǽ���Ѱդ���Ƥ��ޤ�����GCC / cpp �Ȥϵ�ˡ���ۤʤ�ޤ���</p>
1226
<h4>3.9.1.1. �Ԥ�ޤ���ʸ�����ƥ��</h4>
1227
<p><samp>i386/apm/apm.c, i386/isa/npx.c, i386/isa/seagate.c, i386/scsi/aic7xxx.h, dev/aic7xxx/aic7xxx_asm.c, dev/aic7xxx/symbol.c, gnu/ext2fs/i386-bitops.h, pc98/pc98/npx.c</samp> �ˤϤ������������ǥ�����֥饽�����������ޤ�Ƥ��ޤ���</p>
1239
<p>ʸ�����ƥ����Ĥ��� " �������ޤǤˤʤ��ä����Ϲ������Ĥ����Ƥ���Ȳ�᤹��Τ� GCC / cpp �Υǥե���Ȥλ��ͤǤ����������ȤäƤ���ΤǤ��ʤ���˥���ѥ������ΤǤ� asm() ��������Τ��Ԥ�ޤ���ʸ�����ƥ��Ȳ�ᤵ���餷���ˡ�</p>
1240
<p>������֥饽������ .s �ե�����Ȥ����ڤ�Υ���Ƥ����Τ��ɤ�����������Ȼפ��ޤ������ɤ����Ƥ� .c �ե�����������ߤ�����С�����ʤ��֤ʤä��������Ȥʤ��Ƥ⡢���Τ褦�ˤ���Ф��ߤޤ�������Ǥ���� Standard C ���Υץ�ץ����å��Ǥ����ꤢ��ޤ���</p>
1253
<h4>3.9.1.2. #else junk, #endif junk</h4>
1254
<p><samp>ddb/db_run.c, netatalk/at.h, netatalk/aarp.c, net/if-ethersubr.c, i386/isa/isa.h, i386/isa/wdreg.h, i386/isa/tw.c, i386/isa/b004.c, i386/isa/matcd/matcd.c, i386/isa/sound/sound_calls.h, i386/isa/pcvt/pcvt_drv.c, pci/meteor.c, pc98/pc98/pc98.h</samp> �ˤϤ��������Ԥ�����ޤ���</p>
1258
<p>����Ϥ������Ƥ����ޤ��礦��</p>
1263
<h4>3.9.1.3. #ifdef 0</h4>
1264
<p><samp>i386/apm/apm.c</samp> �ˤϤʤ��</p>
1268
<p>�Ȥ�������ʹԤ�����ޤ���
1275
<p>�δְ㤤�Ǥ����ºݤˤϻȤ��Ƥ��ʤ���
1276
�ǥХå��⤵��Ƥ��ʤ��������ʤΤǤ��礦��</p>
1278
<h4>3.9.1.4. �ޥ�����������</h4>
1279
<p><samp>gnu/i386/isa/dgb.c</samp> �Ǥϼ��ιԤ������Υإå��ե������̷�⤹���������ˤʤ�ޤ���</p>
1283
<p>Standard C �Ǥ��������� violation of constraint �ǡ��ºݤˤϽ����Ϥˤ�äơ����顼�ˤ�����ǽ��������ͭ���Ȥ����Τȡ�GCC 2 / cpp �Τ褦�˥ǥե���ȤǤ��ۤäƤ��Ȥ������ͭ���Ȥ����ΤȤ���ޤ����μ¤ˤ��Ȥ������ͭ���ˤ���ˤϡ�ľ����</p>
1287
<p>�������٤��Ǥ���</p>
1289
<h4>3.9.1.5. #warning</h4>
1290
<p><samp>i386/isa/if_ze.c, i386/isa/if_zp.c</samp> �ˤ� #warning
1291
������ޤ���Kernel ���������ͣ��ε��ʰ�ȿ�ǥ��쥯�ƥ��֤Ǥ���Standard C �˹�碌�뤿��ˤϡ����ιԤ��ȥ����Ȥ��뤷������ޤ���</p>
1292
<p><b>mcpp</b> �� GCC �ǤǤ� #warning ���Ȥ���Τǡ����Τޤ��̤�ޤ���</p>
1294
<h4>3.9.1.6. ���Ѱ����ޥ���</h4>
1295
<p><samp>gnu/ext2fs/ext2_fs.h, i386/isa/mcd.c</samp> �ˤϼ��Τ褦�ʲ��Ѹİ����Υޥ������������Ƥ��ޤ���</p>
1297
#define MCD_TRACE(fmt, a...) \
1299
if (mcd_data[unit].debug) { \
1300
printf("mcd%d: status=0x%02x: ", \
1301
unit, mcd_data[unit].status); \
1302
printf(fmt, ## a); \
1306
# define ext2_debug(fmt, a...) { \
1307
printf ("EXT2-fs DEBUG (%s, %d): %s:", \
1308
__FILE__, __LINE__, __FUNCTION__); \
1309
printf (fmt, ## a); \
1312
<p>����� GCC / cpp �ȼ��γ�ĥ���ͤǡ�¾�ν����ϤǤ����Ѥ��ޤ����� ## a �ΤȤ�����ñ�� a �Ȥ�������⤢��ޤ���## ������ȡ��ޥ����ƤӽФ��� a... ���б�����������ʤ��ä����ϡ�����ľ���Υ���ޤ������ޤ���<br>
1313
C99 �Ǥϲ��Ѹİ����ޥ������ɲä���Ƥ��ޤ�������ˡ���ۤʤꡢ��������ϼ��Τ褦�˽��Ȥˤʤ�ޤ���</p>
1315
#define MCD_TRACE( ...) \
1317
if (mcd_data[unit].debug) { \
1318
printf("mcd%d: status=0x%02x: ", \
1319
unit, mcd_data[unit].status); \
1320
printf( __VA_ARGS__); \
1324
# define ext2_debug( ...) { \
1325
printf ("EXT2-fs DEBUG (%s, %d): %s:", \
1326
__FILE__, __LINE__, __FUNCTION__); \
1327
printf ( __VA_ARGS__); \
1330
<p>C99 �Ǥ� ... ���б�����ƤӽФ����ΰ����ϣ��İʾ�ɬ�פʤΤ��Ф��ơ�GCC / cpp �Ǥ� a... ���б���������ϣ��ĤǤ⤫�ޤ�ʤ��Ȥ����Τ�����ä�����������Ǥ���<b>mcpp</b> �ǤϤ�����н褹�뤿�ᡢ ... ���б�������������Ĥ�ʤ����ϡ�warning �ϽФ���ΤΥ��顼�ˤϤ��ʤ��褦�ˤ��Ƥ��ޤ����������äơ����Τ褦�ʽ�����Ǥ��ޤ������Τۤ��������ϰ��а��б��ǤǤ���Τǡ���ñ�Ǥ��������������ν����Ǥϡ����������ľ���Υ���ޤ��Ĥ�Τǡ����Ȥ��� printf( fmt, ) ���Ȥ���Ÿ����̤ˤʤäƤ��ޤ����Ȥ�����ޤ������ξ��ϡ��ޥ��������嵭�� C99 ���ͤν����ˤ��뤫���ޤ��ϥޥ����ƤӽФ��ǥ��������Ȥ�ʤ��褦�ˤ��뤷������ޤ��������������ˤ� NULL �� 0 �Τ褦��̵���ʥȡ������Ȥäơ�<samp>MCD_TRACE(fmt, NULL)</samp> ���Ƚ��Ȥˤʤ�ޤ���*1</p>
1332
#define MCD_TRACE(fmt, ...)
1334
if (mcd_data[unit].debug) {
1335
printf("mcd%d: status=0x%02x: ",
1336
unit, mcd_data[unit].status);
1337
printf(fmt, __VA_ARGS__);
1341
# define ext2_debug(fmt, ...) {
1342
printf ("EXT2-fs DEBUG (%s, %d): %s:",
1343
__FILE__, __LINE__, __FUNCTION__);
1344
printf (fmt, __VA_ARGS__);
1348
<p>*1 <b>mcpp</b> ��Ȥ��ˤϤ��η��˥������������ɬ�פ����롣�����
1349
-Q ���ץ������դ���С����̤Υ������˥����̤ǤϤʤ� mcpp.err �Ȥ����ե�����˽��Ϥ���롣</p>
1350
<p>GCC 2.95.3 �ʹߤǤ� C99 �ι�ʸ�β��Ѱ����ޥ������������Ƥ��롣����Ϥ������Ȥ��ۤ����ɤ���GCC �β��Ѱ����ޥ����ϰ����������ĤǤ��ɤ��Ȥ��������������뤬�����ε�ˡ���ɤ��ʤ���args... �Ȥ����ѥ����Ǥ� args �� ... �ȤϤ��äĤ��Ƥ��ʤ���Фʤ�ʤ������������� pp-token ��¸�ߤ��ʤ����ִ��ꥹ�ȤDz��Ѱ������Τ˥ȡ�����Ϣ��黻�Ҥ�Ʊ����ˡ��ȤäƤ���Τ⡢�������ʤ���C99 �ε�ˡ�ǡ������Ĥβ��Ѱ�������Ƥ���Ȥ������ͤ������Ǥ�������<br>
1351
�ʤ���GCC 3 �Ǥϲ��Ѱ����ޥ����ˤĤ��ơ�GCC 2 ����λ��ͤ� C99 �λ��ͤȤ�����Ū�ʽ������ɲä��줿������ˤĤ��Ƥ� 3.9.6.3 �ȤΤ��ȡ�</p>
1353
<h4>3.9.1.7. �ޥ����ƤӽФ��Υ������</h4>
1354
<p><samp>nfs/nfs.h, nfs/nfsmount.h, nfs/nfsmode.h, netinet/if_ether.c, netinet/in.c, sys/proc.h, sys/socketvars.h, i386/scsi/aic7xxx.h, i386/include/pmap.h, dev/aic7xxx/scan.l, dev/aic7xxx/aic7xxx_asm.c, kern/vfs_cache.c, pci/wd82371.c, vm/vm_object.h, vm/device/pager.c</samp> �ˤϤ��������ޥ����ƤӽФ�������ޤ���<samp>/usr/include/nfs/nfs.h</samp> �Ǥ�Ʊ�ͤǤ���</p>
1358
CIRCLEQ_HEAD(, arg2)
1362
<p>������������ʤΤǤ������������ C99 �Ǥϸ�ǧ����ޤ�������C90 �Ǥ� undefined �Ǥ����ͥ��Ȥ��줿�ޥ����ƤӽФ��Ǥ��ޤ��ް���������ˤʤä����Τ�������ͤ���ȡ�������������ꤵ��Ƥ���ۤ����ɤ��ȸ����ޤ�������������˥����������ȤˤϤ����ξ���ɬ�������ʤ����������ޤ����������ĤΥޥ����Ǥϥ�������Ȱ����η���Ȥζ��̤��Ĥ��ʤ��Ȥ��� syntax �Τ����ޤ��������뤳�Ȥ⡢˺��ƤϤʤ�ޤ���</p>
1363
<p>�����ۤ����ɤ��Ǥ��礦������Ǥ���� Standard C ���ΤɤΥץ�ץ����å��Ǥ����ꤢ��ޤ���</p>
1367
LIST_HEAD(EMPTY, arg2)
1368
TAILQ_HEAD(EMPTY, arg2)
1369
CIRCLEQ_HEAD(EMPTY, arg2)
1370
SLIST_HEAD(EMPTY, arg2)
1371
STAILQ_HAED(EMPTY, arg2)
1373
<p>�Ȥ����ǡ������Υإå��ե��������ˤϡ������Υޥ����������ʤ����¾�ΤɤΥإå��� #include ����Ƥ��ʤ��Ȥ�����Τ�����ޤ���nfs �ǥ��쥯�ȥ�Τ�Ρˡ������Υޥ���������� sys/queue.h �ˤ��ꡢ*.c �ץ�����ब���������� #include ���뤳�Ȥ���Ԥ��Ƥ���ΤǤ������֤ʤä����������Υإå����Ǥ���</p>
1374
<p>�ʤ���<samp>kern/kern_mib.c</samp> �ˤϼ��Τ褦�ʥޥ����ƤӽФ�������ޤ���</p>
1376
SYSCTL_NODE(, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
1378
<p>�����������Υ�������� <tt>EMPTY</tt> �Ȥ���櫓�ˤϤ����ޤ����Υޥ���������� <samp>sys/sysctl.h</samp> �ˤ��ꡢ���Τ褦�ˤʤäƤ��뤫��Ǥ���</p>
1380
#define SYSCTL_NODE(parent, nbr, name, access, handler, descr)
1381
extern struct linker_set sysctl_##parent##_##name;
1382
SYSCTL_OID(parent, nbr, name, CTLTYPE_NODE|access,
1383
(void*)&sysctl_##parent##_##name, 0, handler, "N", descr);
1384
TEXT_SET(sysctl_##parent##_##name, sysctl__##parent##_##name);
1386
<p>���ʤ���������ΰ����ϥޥ���Ÿ������ʤ��ΤǤ��ʤ�����ˤ��� <tt>SYSCTL_OID</tt> �Ȥ����ޥ����Ǥ⡢��Ϥ����������ϥޥ���Ÿ������ʤ��ˡ�����ϥ�������Τޤޤˤ��Ƥ�����������ޤ���*1</p>
1388
<p>*1 C99 �Ǥϥ�������Ϲ�ˡ�Ȥ���Ƥ��롣�ޤ������� <tt>SYSCTL_NODE</tt>(),
1389
<tt>SYSCTL_OID</tt>() �Τ褦�ʥޥ����Τ��Ȥ�ͤ���ȡ�<tt>EMPTY</tt> �Ȥ����ޥ�����Ȥ���ˡ����ǽ�ǤϤʤ��Τǡ���������Τޤޤˤ��Ƥ����Τ�������뤳�ȤǤ��롣<tt>EMPTY</tt> ��ȤäƤ⡢�ޥ����ƤӽФ����ͥ��Ȥ���Ƥ���ȡ���Ϥꥫ�������ȯ�����Ƥ��ޤ��Ȥ�������⤢�롣���������������� readability ��ͤ���ȡ�<tt>EMPTY</tt> ��Ȥ���Ȥ����ǤϻȤä��ۤ����ɤ��褦�˻פ��롣</p>
1391
<h4>3.9.1.8. Function-like �ޥ�����̾�����ִ������ object-like �ޥ���</h4>
1392
<p><samp>i386/include/endian.h</samp> �ˤϤ��������ޥ������������ޤ���<samp>/usr/include/machine/endian.h</samp> �Ǥ�Ʊ�ͤǤ���Ʊ�����������Ĥ���ˡ�</p>
1394
#define __byte_swap_long(x) (replacement text)
1395
#define NTOHL(x) (x) = ntohl((u_long)x)
1396
#define ntohl __byte_swap_long
1398
<p>����� ntohl ������Ǥ�������� object-like �ޥ����Ǥ���ʤ��� function-like �ޥ�����̾����Ÿ�����졢���Τ����������³���ƥ����Ȥ����ߡ��������� function-like �ޥ����Τ褦��Ÿ������ޤ�������Ÿ����ˡ�� K&R 1st. ����ΰ��ۤλ��ͤǡ�Standard C �ǤϤʤ�����ˡ�Ȥʤä���ΤǤ������������䤬�̤ΤȤ����������Ƥ���褦�ˡ����λ��ͤ������ޥ���Ÿ����̵�Ѥ�ʣ���ˤ������ʽ�ˤޤǺ����⤿�餷�Ƥ��븵���Ǥ��ꡢ�֥Х��Τ褦�ʻ��͡פʤΤǤ���*1</p>
1399
<p>������ϼ��֤� function-like �ޥ����Ǥ����Τ��ά���� object-like �ޥ����Ȥ��ƽƤ����ΤǤ�����function-like �ޥ����餷�����Τ褦�˽��ۤ����ɤ��Ǥ��礦������Ǥ���в�������⤢��ޤ���</p>
1401
#define ntohl(x) __byte_swap_long(x)
1403
<p><samp>i386/isa/sound/os.h</samp> �ˤ�Ʊ��Υޥ������������ޤ���</p>
1408
<p>����Ϥ������Ƥ����ޤ��礦��
1411
#define INB(x) inb(x)
1412
#define INW(x) inb(x)
1416
<p>*1 ISO 9899:1990 �� Corrigendum 1:1994 �ǤϤ���������� undefined
1417
�Ȥ��줿�������ơ�C99 �Ǥ� Corrigendum �Τ��ι���̤Τ�Τ��֤�������줿�������������ʽ�Ϥ���˴ؤ��ƤϺ��𤷤Ƥ��롣�ܺ٤� <a href="cpp-test.html#2.7.6"> cpp-test.html#2.7.6</a> �ȡ�</p>
1419
<h4>3.9.1.9. .S �ե�����Ρ֥ץ�ץ�������</h4>
1420
<p>Kernel �������ˤϲ��ܤ��� .S �ե����롢
1421
���ʤ��������֥饽����������ޤ����Ȥ����������ˤ� #include �� #ifdef �����äơ��֥ץ�ץ������פ�ɬ�פʤΤǤ���FreeBSD 2.2.2-R �ǤϤ����Υ������� cc �� -x assembler-with-cpp ���ץ������դ��ƸƤӽФ��Ȥ�����ˡ�ǽ������Ƥ��ޤ������������ cc �� /usr/libexec/cpp �� -lang-asm ���ץ�����Ĥ��ƸƤӽФ�������� as ��ƤӽФ��ޤ���</p>
1422
<p>�������� .S �ե�����Ϥ�����ʳ�����§�������Ǥ������줬�տ��̤�ˡ֥ץ�ץ������פ���뤿��ˤϡ��ޥ����Ȥ��ޤ��ް��פ����̾���פ�������֥饽�����˴ޤޤ�Ƥ��ƤϤ����ޤ������ơ��֥ץ�ץ������פǤϡ��֥ȡ�����״֤� white space ��̵ͭ�Ϥ��Τޤ���¸����ʤ���Фʤ餺����Ƭ�� space ������������¸����ʤ���Фʤ�ޤ��Ԥκǽ�Ρ֥ȡ�����פ�������֥�Υ����ȤǤ��� # �Ǥ�����ϥץ�ץ����å���¦���ü�ʽ�����ɬ�פǤ����Ȥ���ץ�ץ����å������ʤ����¤��졢�Х��κ����ˤ�;�פʿ��Ф�Ȥ�ʤ���Фʤ�ʤ��Τǡ��褷���ɤ����Ȥ��Ȥϻפ��ޤ���*1</p>
1423
<p>ʣ���Υޥ�����б����������Τ���˥ץ�ץ���������ɬ�פ�����ΤǤ���С�.S �ե�����ǤϤʤ� .c �ե�����Ȥ��ơ����η��ǽΤ��ɤ��Ǥ��礦��4.4BSD-Lite �Ǥϼºݤˤ��ν����ˤʤäƤ��ޤ���</p>
1436
<p>*1 FreeBSD 2.0-R �ǤϤ����Υե�����̾�� *.S �ǤϤʤ� *.s
1437
�ȤʤäƤ��ơ�Makefile �ǤϤ��ν����ˤ� cc �ǤϤʤ� cpp ��ƤӽФ��ơ����� as ��ƤӽФ��褦�ˤʤäƤ����������ơ�cpp ��ƤӽФ��� /usr/bin/cpp ��ư����������� shell-script �ǡ�/usr/libexec/cpp -traditional ��ƤӽФ������Τۤ�����script ������뤳�ȤǻȤ��ץ�ץ����å����Ѥ��뤳�Ȥ��Ǥ���Τǡ������Ǥ��ä���</p>
1439
<h3><a name="3.9.2" href="#toc.3.9.2">3.9.2. FreeBSD 2 / libc �������Υץ�ץ�����</a></h3>
1440
<p>FreeBSD 2.2.2R �� <samp>/usr/src/lib/libc</samp> ������������ꥳ��ѥ��뤷�Ƥߤޤ��������ä�����Ϥ���ޤ���Ǥ�������Ⱦ�� 4.4BSD-Lite ���餽�Τޤ���Ƥ��뤫��Ǥ��礦������������ε��ϤǤ��줤�ʥ������������äƤ���Τ����������Ȥǡ���ɮ���ͤ��ޤ���</p>
1441
<p>�������Ľꡢ<samp>gen/getgrent.c</samp> �˼��Τ褦�ʹԤ����Ĥ���ޤ���������������� ; ��;�פǤ���</p>
1446
<h3><a name="3.9.3" href="#toc.3.9.3">3.9.3. GCC 2 / cpp �λ��ͤ�����</a></h3>
1447
<p>���ơ��ʾ�˸����褦�ˡ������Υ������ʤ˹��פ��������ܿ����ι⤤���������ʥ�������ǽ��Ȥˤϡ��������ݤ�ǥ��åȤ⤢��ޤ��ˤ⤫����餺���ʤ��������������������ޤ��˽�Ƥ���ΤǤ��礦����</p>
1448
<p>FreeBSD 2.0-R �� 2.2.2-R �� kernel ����������٤Ƥ⡢���μ�Τ�ΤϤ��ޤ긺�äƤ��ޤ��������ۤɵ��ʹ��������⤯�ʤäƤ���Ȥϸ¤�ʤ��Ȥ���������ʤΤǤ������μ�Τ��䤷���ʥ�������Υ������� 4.4BSD-Lite ����¸�ߤ��Ƥ����ΤϤ鷺���Ǥ���4.4BSD �� Standard C �� POSIX �˽�ƽ�ľ���줿����Ǥ��礦���Ȥ�������FreeBSD �ؤμ����ǰ����Υ������ˤ��������Ť��������뤬���褷�Ƥ��ޤä��ΤǤ����嵭�� ntohl �Τ褦�� 4.4BSD-Lite �Ǥ� ntohl(x) �η��ˤʤäƤ����Τ� FreeBSD �ǤϤ虜�虜 ntohl �η��˽��ؤ����Ƥ����Τ�������ޤ������ä�����ݤ��줿��Τ����ʤ����褹��ΤǤ��礦����</p>
1449
<p>��Ϥ����ˤϡ�GCC / cpp ���������ۤä��̤��Ƥ��ޤ����Ȥΰ��ƶ�������Ƥ���Ȼפ��ޤ���-pedantic ��ư��ǥե���ȤǤ���С�����������������Υ��������虜�虜�ֿ�������뤳�ȤϤʤ��ä��Ǥ��礦�����ĤƤ� -pedantic-errors ��ǥե���Ȥˤ����ΤǤϥ���ѥ���Ǥ��ʤ���������¿���ơ�����Ū�ǤϤʤ��ä��Τ��⤷��ޤ���gcc �� man page �ˤ� -pedantic ���ץ����ˤĤ��ơ��֤����Ȥ���ͳ�ϲ���ʤ������Υ��ץ�����¸����ͳ�� pedants ���������뤳�Ȥ����Ǥ���פȤ���ޤ�(*1)�������� Standard C ����ޤäƣ�ǯ�⤿�Ĥ��ޤȤʤäƤϡ�-pedantic-errors �ȤޤǤϤ����ʤ��Ƥ� -pedantic ��ǥե���Ȥˤ��٤�������Ƥ���Ȼפ��ޤ���</p>
1450
<p>FreeBSD 2.0-R �Ǥϥ����ȤΥͥ��Ȥ����������ޤ�������2.2.2-R �Ǥϰ��ݤ���Ƥ��ޤ������ݤ��줿�Τϡ�GCC / cpp ��ǧ��ʤ��ʤä�����Ǥ�������� -pedantic �Ȥϴط�����ޤ����ץ�ץ����å��Υ����������å��ΰ��ϤϤ���ۤ��礭���ΤǤ���</p>
1452
<p>*1 ���� 3.9.3 ���줿�Τ� 1998 �Τ��ȤǤ��롣���θ塢gcc
1453
�� man �� info �Ǥϡ��������ˤ���ɽ���Ϻ�����줿�������������ͤ��ä��Ѥ�ä��櫓�ǤϤʤ���</p>
1455
<h3><a name="3.9.4" href="#toc.3.9.4">3.9.4. Linux / glibc 2.1 �������Υץ�ץ�����</a></h3>
1456
<p>glibc (GNU LIBC) 2.1.3 (2000/09) �Υ�������ꥳ��ѥ��뤷�Ƥߤޤ���������ˤ� FreeBSD �� libc �Ȥϰ�äƤ��ʤ�¿�������꤬����ޤ�����ˤ� GCC / cpp �� undocumented �ʻ��ͤ����Ѥ��Ƥ����Τ������ꡢ���λ��ͤ��ͤ��ߤ������Ǥ��ʤ�λ��֤���䤷�Ƥ��ޤä����Ȥ�������ޤ�����</p>
1458
<h4>3.9.4.1. �Ԥ�ޤ���ʸ�����ƥ��</h4>
1459
<p><samp>sysdeps/i386/dl-machine.h, stdlib/longlong.h</samp> �ˤ�</p>
1467
<p>�Ȥ��ä����ιԤ�ޤ���ʸ�����ƥ�뤬�����Ĥ⤢��ޤ���
1468
��ˤϤ��ʤ�Ĺ��ʤ�Τ⤢��ޤ���</p>
1469
<p>�ޤ���make �ˤ�ä����������
1470
<samp>compile/csu/version-info.h</samp> �ˤ�Ԥ�ޤ���ʸ�����ƥ�뤬����ޤ���<br>
1471
����Ϥ�����ʰ�ȿ�Υ������Ǥ�����GCC �ǤϤ������ԥ����ɤ����ä�ʸ�����ƥ��Ȥ��ư����ޤ���<br>
1472
<b>mcpp</b> �Ǥ� -lang-asm (-x assembler-with-cpp, -a) ���ץ�������ꤹ��ȡ����������Ԥ�ޤ���ʸ�����ƥ���</p>
1474
#define MACRO asm("\n instr 0\n instr 1\n instr 2\n")
1476
<p>�Ȥ��������Ѵ����ƽ������ޤ���3.9.1.1 �Τ褦������˥ǥ��쥯�ƥ��֤ΤϤ��ޤäƤ����Τϡ�����Ǥ��б��Ǥ��������������ľ�������ʤ��ˡ�</p>
1478
<h4>3.9.4.2. #include_next, #warning</h4>
1479
<p><samp>catgets/config.h, db2/config.h, include/fpu_control.h, include/limits.h, include/bits/ipc.h, include/sys/sysinfo.h, locale/programs/config.h, sysdeps/unix/sysv/linux/a.out.h</samp> �ˤ� #include_next ������ޤ���</p>
1480
<p>�ޤ���<samp>sysvipc/sys/ipc.h</samp> �ˤ� #warning ������ޤ���</p>
1481
<p>�����ϵ��ʤǤ�ǧ����Ƥ��ʤ��ǥ��쥯�ƥ��֤Ǥ�����
1482
glibc 2 �Υ����ƥ�ǤϤ��Ȥ� #include_next ���Բķ�Τ�ΤȤʤäƤ��ޤäƤ���Τǡ�<b>mcpp</b> �Ǥ� GCC �ѤǤ� #include_next �� #warning �ϼ������Ƥ��ޤ���</p>
1483
<p>#include_next ������ϵ��ʰ�ȿ���Ȥ������Ȥ����ǤϤ���ޤ���Include directories �Ȥ��Υ�������ϴĶ��ѿ����Υ桼��¦������ˤ�ä��Ѥ���礬����Τǡ�����ˤ�äƷ�̤���äƤ������������ޤ���</p>
1484
<p>Glibc �� include �ǥ��쥯�ȥ�Υե�����ˤϡ�glibc �� install ����� /usr/include �ǥ��쥯�ȥ�˥��ԡ�������Τ⤢��ޤ������ʤ���������ƥ�Υإå��ե�����Ȥ��ƻȤ����ΤʤΤǤ������������إå��ե������#include_next ���Ȥ��Ƥ��뤳�Ȥϡ������ƥ�إå������ʤ�Ĥ��Ϥ����֤ˤʤäƤ��Ƥ��뤳�Ȥ�ɽ���Ƥ��ޤ�����������ɬ�פʻ����ˤ��Ƥ���褦�Ǥ���</p>
1486
<h4>3.9.4.3. ���Ѱ����ޥ���</h4>
1487
<p><samp>elf/dl-lookup.c, elf/dl-version.c, elf/ldsodefs.h, glibc-compat/nss_db/db-XXX.c, glibc-compat/nss_files/files-XXX.c, linuxthreads/internals.h, locale/loadlocale.c, locale/programs/linereader.h, locale/programs/locale.c, nss/nss_db/db-XXX.c, nss/nss_files/files-XXX.c, sysdeps/unix/sysdep.h, sysdeps/unix/sysv/linux/i386/sysdep.h, sysdeps/i386/fpu/bits/mathinline.h</samp></p>
1488
<p>�ʾ�Υե�����ˤ� GCC / cpp �λ��ͤβ��Ѹİ����ޥ���������ȸƤӽФ�������ޤ���<br>
1489
����� C99 �λ��ͤȰۤʤäƤ���Τǡ�<b>mcpp</b> �Ǥϥ��������ľ��ɬ�פ�����ޤ���</p>
1491
<h4>3.9.4.4. �ޥ����ƤӽФ��Υ������</h4>
1492
<p><samp>catgets/catgetsinfo.h, elf/dl-open.c, grp/fgetgrent_r.c, libio/clearerr_u.c, libio/rewind.c, libio/clearerr.c, libio/iosetbuffer.c, locale/programs/ld-ctype.c, locale/setlocale.c, login/getutent_r.c, malloc/thread-m.h, math/bits/mathcalls.h, misc/efgcvt_r.c, nss/nss_files/files-rpc.c, nss/nss_files/files-network.c, nss/nss_files/files-hosts.c, nss/nss_files/files-proto.c, pwd/fgetpwent_r.c, shadow/sgetspent_r.c, sysdeps/unix/sysv/linux/bits/sigset.h, sysdeps/unix/dirstream.h</samp></p>
1493
<p>�ʾ�Υե�����ˤϥޥ����ƤӽФ��Υ������������ޤ������Ȥ� <samp>math/bits/mathcalls.h</samp> �ˤϥ�������� 79 �Ĥ⤢��ޤ������Υإå��ե������ <samp>/usr/include/bits/mathcalls.h</samp> �� install ����ơ�<samp>/usr/include/math.h</samp> ���� #include ������ΤǤ���<tt>EMPTY</tt> �Ȥ����ޥ�����ȤäƤ⡢�ޥ����ƤӽФ����ͥ��Ȥ���Ƥ���Τǡ���Ϥ����̤Υ��������ȯ�����ޤ�����äȤ��줤�ʥޥ����ν����ϤǤ��ʤ���ΤǤ��礦����</p>
1495
<h4>3.9.4.5. Function-like �ޥ�����̾�����ִ������ object-like �ޥ���</h4>
1496
<p><samp>argp/argp-fmtstream.h, ctype/ctype.h, elf/sprof.c, elf/dl-runtime.c, elf/do-rel.h, elf/do-lookup.h, elf/dl-addr.c, io/ftw.c, io/ftw64.c, io/sys/stat.h, locale/programs/ld-ctype.c, malloc/mcheck.c, math/test-*.c, nss/nss_files/files-*.c, posix/regex.c, posix/getopt.c, stdlib/gmp-impl.h, string/bits/string2.h, string/strcoll.c, sysdeps/i386/i486/bits/string.h, sysdeps/generic/_G_config.h, sysdeps/unix/sysv/linux/_G_config.h</samp></p>
1497
<p>�ʾ�Υե�����ˤ� function-like �ޥ�����̾�����ִ������ object-like �ޥ��������������ޤ�����ˤϡ�math/test-*.c �ˤ����ΤΤ褦�ˡ�function-like �ޥ����� object-like �ޥ������ִ�����ơ�����ˤ��줬 function-like �ޥ�����̾�����ִ�������Τ⤢��ޤ�����������������ɬ����������ΤǤ��礦����</p>
1499
<h4>3.9.4.6. 'defined' ��Ÿ�������ޥ���</h4>
1500
<p><samp>sysdeps/generic/_G_config.h, sysdeps/unix/sysv/linux/_G_config.h, malloc/malloc.c</samp> �ˤϡ��㤨�м��Τ褦�� defined �Ȥ��� pp-token ��Ÿ�������ޥ������������ޤ���</p>
1502
#define HAVE_MREMAP defined(__linux__) && !defined(__arm__)
1508
<p>�Ȥ����ǥ��쥯�ƥ��֤������</p>
1510
#if defined(__linux__) && !defined(__arm__)
1512
<p>�Ȥʤ뤳�Ȥ���Ԥ��Ƥ����ΤǤ���
1514
<p>���������ޤ� #if ����ǥޥ���Ÿ���η�̤� defined �Ȥ��� pp-token
1515
���ФƤ���Τϡ����ʤǤ� undefined �Ǥ������Τ��Ȥ��̤Ȥ��Ƥ⡢�ʤ����Υޥ������ѤǤ���</p>
1516
<p><tt>HAVE_MREMAP</tt> �Ȥ����ޥ����Ϥ��ä���</p>
1518
defined(__linux__) && !defined(__arm__) (1)
1520
<p>���ִ����졢���� identifier
1521
�Ǥ��� defined, __linux__, __arm__ �����줾��ޥ����Ǥ��뤫�ɤ�����Ĵ�٤�졢�ޥ����Ǥ����Ÿ������ޤ����������äơ�defined �ϥޥ����Ȥ����������Ƥ���Ϥ��Ϥʤ��Τǡʤ⤷�������Ƥ���С����켫�Τ����Ǥ� undefined�ˡ����� __linux__ �� 1 ���������Ƥ��ơ�__arm__ ���������Ƥ��ʤ���С����Υޥ����Ϻǽ�Ū�˼��Τ褦��Ÿ������ޤ���</p>
1523
defined(1) && !defined(__arm__)
1525
<p>defined(1) �Ϥ������ #if ���� syntax error �Ǥ���</p>
1527
�Ǥϡ�#if �ԤǤʤ���Ф����ʤ�ΤǤ�����#if �Ԥ˸¤ä� (1) �ǥޥ���Ÿ������Ƥ��ޤ�������� #if ���Ȥ���ɾ�����ޤ���Undefined �Ǥ���ΤǤ����ְ㤤�Ȥϸ����ޤ����ޥ���Ÿ���� #if �ԤȤ����Ǥʤ����Ȥǰۤʤ�Τϡ���Ӥ��ʤ����ͤǤ������ʤ��Ȥ⤽�λ��ͤˤ� portability ������ޤ���*1</p>
1528
<p>����Υޥ����ϼ��Τ褦�˽С���������ʤ��ΤǤ���</p>
1530
#if defined(__linux__) && !defined(__arm__)
1531
#define HAVE_MREMAP 1
1534
<p>�����������ʤä�����������������ݤ���Ƥۤ�����ΤǤ���
1537
<p>*1 GCC 2 / cpp �� #if �ԤǤ�����Ū�� defined ���ü�ʥޥ����Ȥ��ư��äƤ��롣
1538
���Τ��ᡢ���Τ褦�ʥȡ��������ޥ���Ÿ���Τ���˺���������ΤǤ��뤬�����η�̤������ޥ���Ÿ�������ˡ�#if ���Ȥ���ɾ�����뤳�Ȥˤʤ�ΤǤ��롣���ʤ�����ޥ���Ÿ���� #if ����ɾ���Ȥ�ʬΥ�����˺��Ƥ���ΤǤ��롣</p>
1540
<samp>defined(__linux__) && !defined(__arm__)</samp>
1542
<p>����� GCC / cpp �Υץ�����¤�ˤ⤫���������Ǥ��롣GCC 2 / cpp �Ǥ� rescan() �Ȥ����ޥ����������롼�����¾�Υᥤ��롼����ȤʤäƤ��ơ����줬�������ƥ����Ȥ��ᤫ�齪���ޤ��ɤߤʤ���������Ƥ椯�������ơ��ץ�ץ������ǥ��쥯�ƥ��֤ν����롼����⤳���椫��ƤӽФ����ΤǤ��롣���Ǥ�ޥ����Ǽ�������Τϥޥ����ץ����å�������Ū�ʥץ�����¤�Ǥ��뤬�����ι�¤�����ޥ���Ÿ����¾�ν����Ȥκ��������������طʤˤʤäƤ���ȹͤ����롣</p>
1543
<p>*2 glibc 2.2 �ǤϤ��Υޥ�����ľ����Ƥ��롣</p>
1545
<h4>3.9.4.7. .S �ե�����Ρ֥ץ�ץ�������</h4>
1547
�Ȥ���̾���Υե�����ϥץ�ץ��������פ��륢����֥�Υ������Ǥ�����������ˤ� #include, #define, #if ���Υץ�ץ������ǥ��쥯�ƥ��֤��ФƤ��ޤ�������ˡ�Make �ˤ�ä���������� <samp>compile/csu/crti.S</samp> �Ȥ����ե�����ˤϡ�</p>
1556
�����ιԤ�̵���ʥץ�ץ������ǥ��쥯�ƥ��֤ȹ�ʸ�塢���̤��Ĥ��ޤ���GNU �ǤϤ����ιԤϤ��Τޤޥץ�ץ�������˻Ĥäơ�������֥�Υ����ȤȤ��ư�����褦�Ǥ���</p>
1557
<p>�ޤ���## �黻�Ҥˤ�� pp-token ��Ϣ�뤬 invalid �� pp-token ���������Ƥ��ޤ��������⤢��ޤ���GCC / cpp �Ϥ�����ۤäƤ��Τޤ��Ϥ��ޤ���</p>
1558
<p><b>mcpp</b> �Ǥ� GCC / cpp �Ȥθߴ����Τ���ˤ��ʤ���-lang-asm (-x assembler-with-cpp, -a) ���ץ������դ���ȡ��������� illegal �ʥǥ��쥯�ƥ��֤� ## �ˤ�ä��������줿 invalid �� pp-token �顼�ˤ������������˥�Ф���ΤΤ��Τޤ��Ϥ���褦�ˤ��ޤ�����</p>
1559
<p>�������������������衢������֥��ѤΥޥ����ץ����å��ǽ������٤���Τ��Ȼפ��ޤ���GNU �ˤ� gasp �Ȥ���������֥��ѥޥ����ץ����å�������褦�Ǥ������ʤ����ۤȤ�ɻȤ��Ƥ��ʤ��褦�Ǥ���</p>
1561
<h4>3.9.4.8. rpcgen �� -dM ���ץ����λ��ͤ�����</h4>
1562
<p>GCC �� -dM �Ȥ������ץ����ǵ�ư����ȥޥ��������������Ϥ��ޤ�����make check �ǻȤ��� <samp>stdlib/isomac.c</samp> �Ϥ�������Ѥ��Ƥ��ޤ���isomac.c ������ϡ��ޥ�������ե�����η����Ȥ��� GCC �ν��Ϸ������������ꤷ�Ƥ��ơ������Ȥ���Ԥ⥨�顼�ˤʤäƤ��ޤ����ȤǤ���</p>
1563
<p>glibc �� make �Ǥ� rpcgen �Ȥ����ץ�����ब�Ȥ��뤳�Ȥ�����ޤ������Υץ�����������ϡ��ץ�ץ����å��ι��ֹ����ν��Ϸ����Ȥ��Ƥ�Ϥ� GCC ��</p>
1567
<p>�Ȥ����������������ꤷ�Ƥ��ơ�</p>
1573
#line 123 "filename"
1575
<p>�⥨�顼�ˤʤäƤ��ޤ����ȤǤ���
1577
<p><b>mcpp</b> �Ǥ� GCC �ǤǤ� GCC �η�����ǥե���Ȥˤ��ޤ�������������
1578
rpcgen �����������ü�ʷ���������ˤ��ơ�ɸ��Ū�ʷ������б����Ƥ��ʤ��Ȥ����Τϡ��������ʻ��ͤǤ���</p>
1580
<h4>3.9.4.9. -include, -isystem, -I- ���ץ����</h4>
1581
<p>glibc 2.1 �� makefile �Ǥϡ�-include ���ץ�����Ф��лȤ��Ƥ��ޤ������ˤ� -isystem ���ץ����� -I- ���ץ�����Ȥ��ޤ���-include �ϥ���������Ƭ�� #include ����Ф����Τǡ�-isystem, -I- �ϥ����ƥ�إå��������礷��ɬ�����δ������ʤ���ΤǤ���<br>
1582
<b>mcpp</b> �Ǥ� GCC �Ѥμ����˸¤äơ����Σ��ĤΥ��ץ�����������ޤ����������ޤ�ɬ�פΤʤ����ץ������������Ƥ�餤������ΤǤ���*1</p>
1584
<p>*1 GCC / cpp �ˤϤ��Τۤ��� -iprefix, -iwithprefix, -iwithprefixbefore, -idirafter �Ȥ��ä� include directory �Ȥ��ν������ꤹ�륪�ץ�������Ĥ⤢�롣�ޤ���long-file-name �� MS-DOS ��� 8+3 �����Υե�����̾�Ȥ��б�ɽ�λ��Ѥ���ꤹ�� -remap ���ץ����⤢�롣������ CygWIN �����ƥ�� specs �ե��������ǻȤ��뤳�Ȥ����뤬��include directory �ϴĶ��ѿ��ǻ��ꤷ�Ƥ����Ф��ळ�ȤǤ��ꡢ8+3 �����Υե�����̾�ؤ��б������ޤ��� CygWIN ��ɬ�פ��Ȥ�פ��ʤ���</p>
1586
<h4>3.9.4.10. Undocumented �ʻ�������ޥ���</h4>
1588
__VERSION__, __SIZE_TYPE__, __PTRDIFF_TYPE__, __WCHAR_TYPE__
1590
<p>�ʾ��̾���ϥɥ�����Ȥˤϸ�������ޤ���GCC / cpp �Ǥϻ�������ޥ����ȤʤäƤ��ޤ���<tt>__VERSION__</tt> ���ͤ� Vine Linux 2.1 (egcs-1.1.2) �Ǥ� "egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)" �ȤʤäƤ��ޤ���¾�Σ��Ĥ� Linux / i386 ��Ϥ���¿���Υ����ƥ�ǤϤ��줾�� unsigned int, int, long int �ȤʤäƤ���褦�Ǥ�����������FreeBSD, CygWIN �ǤϾ������İ�äƤ��ޤ��ʤʤ��㤦ɬ�פ�����Τ��狼��ʤ����ˡ�<br>
1591
�����������Ȥ��ɤ����ƥɥ�����Ȥˤʤ��ΤǤ��礦����</p>
1593
<h4>3.9.4.11. Undocumented �ʴĶ��ѿ�</h4>
1595
<tt>SUNPRO_DEPENDENCIES</tt> �Ȥ��� undocumented �ʴĶ��ѿ��Ǥ���<samp>sysdeps/unix/sysv/linux/Makefile</samp> �ˤ�</p>
1597
SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \
1598
$(CC) -E -x c $(sysinclude) $< -D_LIBC -dM | \
1602
<p>�Ȥ��� script ������ޤ�������� <tt>SUNPRO_DEPENDENCIES</tt> �Ȥ����Ķ��ѿ��ǥե�����̾����ꤷ��cpp ����������Υޥ�������ȥ������ե�����ΰ�¸�ط��Ԥλ��ꤵ�줿�ե�����˽��Ϥ���Ȥ�����ΤʤΤǤ���</p>
1603
<p>����ư�������ˤϡ�GCC / cpp �Υ����� (egcs-1.1.2/gcc/cccp.c) ���ɤष������ޤ���Ǥ�����<br>
1604
���Τۤ���<tt>DEPENDENCIES_OUTPUT</tt> �Ȥ����Ķ��ѿ��⤢�ꡢƱ�ͤΰ�̣����äƤ��ޤ���<tt>SUNPRO_DEPENDENCIES</tt> �Τۤ��� system headers �ΰ�¸�ط��Ԥ���Ϥ���Τ��Ф��ơ�<tt>DEPENDENCIES_OUTPUT</tt> �Ϥ����ǤϤʤ��Ȥ����㤤������ޤ���</p>
1605
<p><b>mcpp</b> �Ǥ� GCC �б��Ǥ˸¤äơ����Σ��ĤδĶ��ѿ����б������ޤ��������������������͡פΤ褦�ʤ�Τ���ѻߤ��Ƥۤ�����ΤǤ���</p>
1607
<h4>3.9.4.12. ����¾������</h4>
1608
<p>Linux (i386) / GCC �ǤϤ��Τۤ���specs �ե�����λ���ˤ�äơ�cpp �θƤӽФ��� -Asystem(unix) -Acpu(i386) -Amachine(i386) �Ȥ������ץ�����ղä���ޤ�������������������Ѥ��륽�����Ͼ��ʤ��Ȥ� glibc 2.1.3 �� Linux / x86 �ǤˤϤʤ��褦�Ǥ���<br>
1609
Glibc ���饤�ȡ��뤵��륷���ƥ�إå����Ĥ��Ϥ����餱������ʣ���ʤ�ΤˤʤäƤ��Ƥ��뤳�Ȥϡ��礭������Ǥ�������äȤ�������ΰ㤤�ˤ�äƽ�����̤���äƤ��붲�줬����ޤ���</p>
1610
<p>¾���ǡ�FreeBSD 2.2.2 / kernel �������Ǹ���줿 #else junk, #endif junk ��ޥ������������� glibc 2.1.3 �Ǥϸ����ޤ���Ǥ�����Glibc 2.1 �Υ������� FreeBSD 2 / kernel �Υ����������������Ƥ����̤⤤���餫����ޤ���</p>
1611
<p>���������ΤȤ��Ƥϡ�glibc 2.1 �ˤ� GCC ���ü�ʻ��ͤ˰�¸���Ƥ��륽���������ʤ餺���ꡢ¾�ν����Ϥؤΰܿ��Ϻ���ˤʤäƤ��ޤ��ʿ����ܤΥ������ե��������ǤϤ��������Ǥ��뤬�ˡ��ץ������β���������ƥʥ����Τ���ˤ⡢�������� GCC local �ʻ��ͤؤΰ�¸�Ϲ��ޤ�������ޤ���GCC V.3 �ǤϤ�������Ū���ͤ��ѻߤ�������˰�¸���륽��������ݤ��뤳�Ȥ���Ԥ������Ȼפ��ޤ���</p>
1613
<h3><a name="3.9.5" href="#toc.3.9.5">3.9.5. GCC 2 �� <b>mcpp</b> ��Ȥ��ˤ�</a></h3>
1614
<p><b>mcpp</b> �� glibc 2.1 �Υ���ѥ���˻Ȥ��ˤϡ��ޤ������Υ������ν�����ɬ�פǤ���<br>
1615
��Ĥϲ��Ѹİ����Υޥ���������ȸƤӽФ��Ǥ����嵭 3.9.4.3 �ˤ��� 14 �ĤΥե�����ˤĤ��ơ�3.9.1.6 �ˤ���褦�ʷ��ǽ������ޤ�����������Υե������Ĥ��Ƥ������ۤ����ɤ��Ǥ��礦��<br>
1616
�⤦��Ĥϡ�3.9.4.6 �ˤ��룳�ĤΥե�����Ρ��ִ��ꥹ�Ȥ� "defined" ���ФƤ���ޥ����ν����Ǥ����ޤ���<samp>/usr/include/_G_config.h</samp> �� <samp>sysdeps/unix/sysv/linux/_G_config.h</samp> �� install ����ƤǤ���Ʊ��Υե�����Ǥ�����������⽤�����Ƥ������ۤ����ɤ��Ǥ��礦��</p>
1617
<p><b>mcpp</b> �ε�ư�ˤϡ�Makefile �� specs �ե�������ղä���륪�ץ����Τۤ��ˡ��Ԥ�ޤ���ʸ�����ƥ��䥢����֥��ѤΥ����Ȥ�ޤ� *.S �ե�����Τ���� -lang-asm (-x assembler-with-cpp) ��ɬ�פǤ������Υ��ץ�����¾�Υե�����Υץ�ץ������ˤ��դ��Ƥ����ơ��̾�Ϥ��ޤ��ޤ���</p>
1618
<p>GCC / cpp ��Ȥä��� <b>mcpp</b> ��Ȥä��ꡢ�ǥե���Ȥ��ղä��륪�ץ������ѹ������ꤹ�뤿��ˤϡ����Τ褦�ˤ���Τ��ɤ��Ǥ��礦��</p>
1619
<p>Super-user �ˤʤäơ�cpp ��¸�ߤ���ǥ��쥯�ȥ�ʤ����Ǥ� <samp>/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66</samp> �Ȥ���ˤ˹Ԥ��ޤ��������� GCC / cpp �� cpp �Ȥ���̾����¸�ߤ���<b>mcpp</b> �� mcpp �Ȥ���̾���� install ����Ƥ���Ȥ��ޤ����ޤ������Τ褦�����Ƥ� mcpp.sh �Ȥ���̾���Υե��������ޤ���*1</p>
1622
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/mcpp -Q -lang-asm "$@"
1624
<p>-Q ���ץ����Ϥʤ��Ƥ⤫�ޤ��ޤ������̤ο��ǥ�å�������Ͽ����ˤ��դ����ۤ����ɤ��Ǥ��礦��<br>
1625
����ˡ����Τ褦�ʥ��ޥ�ɤ��Ǥ����ߤޤ���</p>
1631
<p>�������Ƥ����ȡ�gcc
1632
�� cpp ��ƤӽФ������ˡ�����˥����Ƥ��� mcpp.sh ���¹Ԥ��졢<b>mcpp</b> �˾嵭�Υ��ץ������gcc ���ղä��륪�ץ��������ˡ��ղä��ƸƤӽФ��ޤ���</p>
1633
<p>�ǥե���ȤΥ��ץ������ѹ�������ϡ�mcpp.sh ���ѹ�����ʤꡢmcpp ��ľ�ܸƤӽФ��ʤꤷ�ޤ��������ơ�GCC / cpp ��Ȥ�����</p>
1639
<p>*1 <b>mcpp</b> �� configure ���ƥ��ȡ��뤷�����ϼ�ưŪ��Ŭ�ڤ����꤬����롣
1640
���Ȥ� -Q -lang-asm ���ץ������ɲä�������Ǥ��ࡣ</p>
1642
<h4><a name="3.9.5.1" href="#toc.3.9.5.1">3.9.5.1. <b>mcpp</b> �Υ������˥���������ˤ�</a></h4>
1643
<p><b>mcpp</b> ��Ȥ����Τ⤦��Ĥ�����ϡ�
1644
���̤Υ������˥����Ϥ���뤳�ȤǤ���-Q ���ץ����ǥ�����쥯�Ȥ��Ƥ⡢glibc �Τ褦���絬�Ϥʥ��������������ȡ�-W3 ���ץ����ξ��� mcpp.err ������ɴ MB �ˤ�ʤ�Τǡ����٤Ƥ��ܤ��̤��櫓�ˤϤ����ޤ���<br>
1645
���������������Ƥ�ȡ�Ʊ���������˥������֤��ФƤ��뤳�Ȥ��狼��ޤ���Ʊ�� *.h �ե����뤬¿���Υ��������� #include ����뤿��ˡ�Ʊ���������˥������֤������֤��Ф�ΤǤ���������������Ƹ���ˤϡ����Τ褦�ˤ��ޤ���<br>
1646
�ޤ������顼������å����ޤ���</p>
1648
grep fatal `find . -name mcpp.err`
1649
grep error `find . -name mcpp.err`
1651
<p>���ˡ��������˥��������ޤ���
1654
grep warning `find . -name mcpp.err` | sort -k3 -u | less
1656
<p>�������˥νн�٤Ƹ��뤿��ˤϡ����Τ褦�ˤ��ޤ���
1659
grep warning `find . -name mcpp.err` | sort -k3 | uniq | less
1661
<p>����μ���Υ������˥�ˤϡ����Ȥ��м��Τ褦�ˤ��ޤ���
1664
grep 'warning: Replacement' `find . -name mcpp.err` | sort -k3 | uniq | less
1666
<p>�������Ƹ�����Ĥ��������ǡ��������� mcpp.err �� less �Ǹ������Ƥ��ǧ����
1668
�����ɬ�פʤ顢������������θĽ��
1669
#pragma MCPP debug expand, #pragma MCPP end_debug ���Ƕ���Ǻ��٥ץ�ץ��������ơ����ν��Ϥޤ������λ��ˤϡ��ץ�ץ������ν��Ϥȿ��ǥ�å������Ȥ�Ʊ���ե�����˽Ф�褦�ˡ����Τ褦�ˤ��ޤ���make ������ϡ��嵭�� shell-script ����������ˡ�</p>
1671
mcpp <-opts> in-file.c > in-file.i 2>&1
1674
<h3><a name="3.9.6" href="#toc.3.9.6">3.9.6. GCC 3.2 �������Υץ�ץ�����</a></h3>
1676
FreeBSD �ǡ�GCC 2.95.* �� GCC 3.2R (2002/08) �Υ�������ѥ��뤷�Ƥߤޤ����������ơ��������줿 gcc ��Ȥä� <b>mcpp</b> ��ѥ��뤷�����˥ץ�ץ������ˤ����Ȥä� GCC 3.2 �� GCC 3.2 �Υ�������ꥳ��ѥ��뤷�Ƥߤޤ�����</p>
1677
<p>GCC �� make �Ϥ����Ĥ����ʳ���Ф� bootstrap ����Ƥ椯�褦�ˤʤäƤ��ޤ������ʤ�����ǽ���ʳ����������줿 gcc, cc1, etc. ��ȤäƼ�ʬ���Ȥ�ꥳ��ѥ��뤷��������äƺ��������줿��Τ�ȤäƤޤ���ʬ���Ȥ�ꥳ��ѥ��뤷���Ȥ��ä��в�ɤ�ޤ���gcc �� bootstrap ������Ǥ� xgcc �Ȥ���̾����¸�ߤ��Ƥ��ޤ���</p>
1678
<p>�ޤ���GCC 2 �Ǥ� cc1, cc1plus �������Ω���Ƥ��� cpp ����GCC 3 �Ǥ� cc1, cc1plus �˵ۼ�����Ƥ��ޤ��ޤ���������������Ω�����ץ�ץ����å��Ǥ��� cpp0 ��¸�ߤ��Ƥ��ꡢgcc �� g++ �� -no-integrated-cpp �Ȥ������ץ������դ���Ȥ���˥ץ�ץ��������뤳�Ȥ��Ǥ���褦�ˤʤäƤ��ޤ����������äơ�<b>mcpp</b> �˥ץ�ץ��������뤿��ˤϡ�gcc (xgcc), g++ �θƤӽФ��� shell-script ���֤������ơ�<b>mcpp</b> => cc1 �ޤ��� <b>mcpp</b> => cc1plus �Ȥ�������Ǽ¹Ԥ����褦�ˤ��ʤ���Фʤ�ޤ���*1</p>
1679
<p>GCC �Υ����ƥ�Ǥϡ������ƥ�إå��䤽�Υ�����������꤬����ʣ���ˤʤäƤ��Ƥ��ޤ����ޤ���GCC 3 �Ǥ� GCC ������Ū�˻Ȥ� C++ �� shared library �λ��ͤ� GCC 2 �Ȥ��Ѥ�ä��褦�Ǥ��������Τ��ᤫ������ѥ��뤹������Ǥ⤦�ޤ��椫�ʤ����Ȥ�����ޤ����ޤ�������ѥ���ȥƥ��Ȥˤ�¿����¾�Υ��եȥ�������ɬ�פǡ������ΥС�����Ť��ȡ����ޤ��椫�ʤ����Ȥ�����ޤ�����ΤȤ����Ǥϥϡ��ɥ�����������Ǥ��ޤ�����ѥ���Ǥ��ʤ����Ȥ⤢��ޤ�����</p>
1680
<p>FreeBSD 4.4R �Ǥ� GCC 3.2 �ϥ���ѥ���Ǥ��ޤ���Ǥ�����FreeBSD �� 4.7R �� upgrade ����packages �� 4.7 �ѤΤ�Τ������ؤ��ơ��褦�䤯����ѥ��뤹�뤳�Ȥ��Ǥ��ޤ�����*2<br>
1681
��ΤȤ����Ǥϣ���Υѥ������Ʊ�� VineLinux 2.5 �����äƤ��ޤ������������� (K6/200MHz) �Ǥ� GCC 2.95.3 ��ȤäƤΥ���ѥ���ϤǤ�����ΤΡ��������줿 GCC 3.2 / cc1 �� segmentation fault ���֤��������Ƥ��ޤ�����ʬ���ȤΥꥳ��ѥ��뤬�Ǥ��ޤ���Ǥ��������θ塢K6 �� AthlonXP �˼���ؤ��ƥꥳ��ѥ��뤷���Ȥ��������٤� segmentation fault ��ȯ�����ޤ���Ǥ���������ϥϡ��ɥ��������ä��Τ��⤷��ޤ���<br>
1682
�ޤ���FreeBSD �Ǥ� K6 �Υѥ������ GCC 2.95.4 ��Ȥä� GCC 3.2 ��ѥ��뤷�����ϡ�make -k check �ǤϤۤȤ�ɤ��٤��̤ä��ΤǤ�����������������줿 GCC 3.2 �� GCC 3.2 ���Ȥ�ꥳ��ѥ��뤷���Ȥ��������٤ϡ�g++, libstdc++-v3 �� make -k check �� testsuite �Σ������̤�ʤ��Ȥ������ݤⵯ����ޤ�������������AthlonXP �˼���ؤ��Ƥ���Ϥ��ޤ��椯�褦�ˤʤ�ޤ����������ϡ��ɥ�������������ä��Τ��⤷��ޤ���</p>
1683
<p>�ޤ���VineLinux �� GCC 3.2 ���Ȥ� <b>mcpp</b> ��Ȥäƥꥳ��ѥ��뤷�����ϡ��������줿 gcc �� make -k check ���̤�ޤ�������g++, libstdc++-v3 �� testsuite �Σ������̤�ޤ���Ǥ�����*3, *4, *5<br>
1684
�ɤ���ˤ��Ƥ⡢�������줿 gcc, g++, cc1, cc1plus ��������ǤϤʤ����إå��ե����뤫�饤�֥�꤫�������������̯������Τ褦�Ǥ���<br>
1685
<b>mcpp</b> �� GCC �Ȥϴ����˸ߴ��ǤϤ���ޤ������ʤ�⤤�ߴ������äƤ���Τǡ�����ؤ��ƻȤäƤۤ�����Ϥʤ��Ȼפ��ޤ���</p>
1686
<p>GCC 3.2 �Υ���ѥ���˻Ȥä������ƥ�ϼ��Τ�ΤǤ���</p>
1689
<tr><th>OS </th><td>make </td><td>library </td><td>CPU</td></tr>
1690
<tr><th>VineLinux 2.5</th><td>GNU make</td><td>glibc 2.2.4</td><td>Celeron/1060MHz</td></tr>
1691
<tr><th>VineLinux 2.5</th><td>GNU make</td><td>glibc 2.2.4</td><td>K6/200MHz</td></tr>
1692
<tr><th>VineLinux 2.5</th><td>GNU make</td><td>glibc 2.2.4</td><td>AthlonXP/2.0GHz</td></tr>
1693
<tr><th>FreeBSD 4.7R </th><td>UCB make</td><td>libc.so.4 </td><td>K6/200MHz</td></tr>
1694
<tr><th>FreeBSD 4.7R </th><td>UCB make</td><td>libc.so.4 </td><td>AthlonXP/2.0GHz</td></tr>
1698
C �� C++ �����Ǥ���</p>
1701
<p>*1 ����� bootstrap �γ��ʳ����Ȥˤ��ʤ���Фʤ�ʤ��ΤǤ��롣
1702
Makefile �ϼ�������ˤϤ��ޤ���礭��ʣ���ʤΤǡ����̤�ĥ���դ��Ƥ��ơ�stage ���Ѥ�ä��Ȥ����� ^C �����Ǥ��ơ�script ���֤�������Ȥ����Ժٹ�����ˡ��Ȥä���</p>
1703
<p>*2 �����⡢¿���� packages �δ֤ΰ�¸�ط�������Τǡ��С�����ޤ��ޤ����Ⱥ��������롣��ΤȤ����ǤϤ��Τ���ˡ������ kterm ����ư���ʤ��Ȥ������֤˴٤ä����Ȥ⤢�롣</p>
1704
<p>*3 make -k check ������� <b>mcpp</b> �ϻȤäƤϤ����ʤ������ǥ�å������� GCC �Ȥϰۤʤ뤫��Ǥ��롣</p>
1705
<p>*4 make -k check ������ϴĶ��ѿ� LANG, LC_ALL �� C �Ȥ��ơ��Ѹ�Ķ��ˤ��ʤ��Ȥ����ʤ���</p>
1706
<p>*5 Testsuite ���̤�ʤ�ľ�ܤθ����Ϥ��٤ơ�<samp>i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.5.0.0</samp> �Ȥ����饤�֥��� pthread_getspecific, pthread_setspecific �� pthread_* �Ȥ����ؿ�����Ǥ��ʤ��Ȥ�����ΤǤ��롣�������������줿���Υ饤�֥�������Ƥ��С�make -k check ���̤롣FreeBSD �ǤϤ�������ϵ�����ʤ����������������̯������Τ褦�Ǥ��롣</p>
1708
<h4>3.9.6.1. �Ԥ�ޤ���ʸ�����ƥ��</h4>
1709
<p>���Τ��ޤ�ˤ�Ť������� GCC 3.2 �Υ������ˤϤ���ޤ����λ��ͤ� GCC 3.2 �Ǥ褦�䤯 obsolete �Ȥ���ޤ�������������ˤ��줬����ȡ������̤�˽����Ϥ���ޤ������������˥��Фޤ���</p>
1711
<h4>3.9.6.2. #include_next, #warning</h4>
1712
<p>Make ���������������� <samp>build/gcc/include</samp> �� limits.h, syslimits.h �ˤ� #include_next �����ꡢGCC 3.2 �� install ����ȡ�<samp>lib/gcc-lib/i686-pc-linux-gnu/3.2/include</samp> �� limits.h, syslimits.h �˥��ԡ�����ޤ���</p>
1713
<p>#warning �ϸ�������ޤ���Ǥ�����</p>
1715
<h4>3.9.6.3. ���Ѱ����ޥ���</h4>
1716
<p>���Ѱ����ޥ����Ϥ����Ĥ�����ޤ�����
1717
��Ⱦ�� testsuite �Τ�Τǡ��ƥ����Ѥ˽줿����ץ�ˤ����ޤ������ơ�GCC 2 ����ε�ˡ�Ϥޤ����ݡ��Ȥ���ƤϤ����ΤΡ�__VA_ARGS__ ��Ȥä� C99 �Τ�Τ�¿���ʤäƤ��ޤ���</p>
1718
<p>�ޤ���GCC 3 �Ǥ� GCC 2 �λ��ͤ� C99 �λ��ͤȤ�����Ū�ʽ������ɲä���Ƥ��ޤ������η��Ǥ���</p>
1720
#define eprintf( fmt, ...) fprintf( stderr, fmt, ##__VA_ARGS__)
1722
<p>����ϡ�... ���б�����������ʤ��ä����ϡ�����ľ���Υ���ޤ�������Ȥ������ͤǤ������Ȥ��С����Τ褦��Ÿ������ޤ���</p>
1724
eprintf( "success!\n") ==> fprintf( stderr, "success!\n")
1726
<p>�������������ʻ��ͤΤ褦�Ǥ������ޥ���������ִ��ꥹ����Υ���ޤϥѥ�������ڤ��ΤȤϸ¤�ʤ����ȡ��ȡ�����Ϣ��黻�ҤǤ��� ## ���̤�Ư�����Ƥ��뤳�ȡ���§���㳰���ä�ʣ���ˤ����ΤǤ��뤳�ȡ��������꤬����ޤ���<b>mcpp</b> �ǤϤ��ε�ǽ�ϼ������Ƥ��ޤ����η��Υޥ�������Ǥ⥨�顼�ˤϤʤ�ޤ����ޥ����ƤӽФ��˺ݤ��ơ����������ľ���Υ���ޤϺ�����ޤ���</p>
1728
<h4>3.9.6.4. �ޥ����ƤӽФ��Υ������</h4>
1729
<p>�ޥ����ƤӽФ��Υ�������ϡ�#include ����륷���ƥ�إå��Τ�Ρ�<samp>/usr/include/bits/mathcalls.h, /usr/include/bits/sigset.h</samp>�ˤ��̤Ȥ���ȡ�GCC 3.2 �Υ��������ΤǤϡ�<samp>gcc/libgcc2.h</samp> �ˤ��������ޤ���*1</p>
1731
<p>*1 ���Σ��ĤΥإå��ե������ glibc �� install
1732
���뤳�Ȥǥ����ƥ�إå������äƤ椯��ΤǤ��롣FreeBSD �Ǥ� glibc ��ȤäƤ��ʤ��Τǡ������Υ����ƥ�إå���¸�ߤ��ʤ���</p>
1734
<h4>3.9.6.5. Function-like �ޥ�����̾�����ִ������ object-like �ޥ���</h4>
1735
<p><samp>gcc/fixinc/gnu-regex.c, libiberty/regex.c</samp> �ˤϡ�function-like �ޥ�����̾�����ִ������ object-like �ޥ���������������ޤ����ޤ���#include ����� <samp>/usr/lib/bison.simple</samp> ��Ʊ�ͤǤ��������Ϥ��٤� alloca �˴ؤ����ΤǤ������Ȥ��С�<samp>libiberty/regex.c</samp> �ˤϤ��������ޥ������������ޤ���</p>
1737
#define REGEX_ALLOCATE alloca
1738
#define alloca( size) __builtin_alloca( size)
1740
<p>����ϡ�����������ʤ��ΤǤ������ʤ�����ʤȤ������ά����ΤǤ��礦����</p>
1742
#define REGEX_ALLOCATE( size) alloca( size)
1744
<p>���� regex.c �Ǥ� alloca �Ͼ��ˤ�äƤϼ��Τ褦����������褦�ˤʤäƤ��ꡢ�������뤬��Ӥ��Ƥ��ޤ���</p>
1746
#define alloca __builtin_alloc
1748
<p>�ޤ���regex.c �ˤ� #include "regex.c" �Ȥ����Ԥ����ꡢ��ʬ���Ȥ롼�ɤ���褦�ˤʤäƤ��ޤ���ʣ������ʥ������Ǥ���</p>
1750
<h4>3.9.6.6. 'defined' ��Ÿ�������ޥ���</h4>
1751
<p>����� GCC 3.2 �Υ������ˤϸ�������ޤ���</p>
1753
���μ�Υޥ����ν����� GCC 2 / cpp ��Ʊ���Ǥ����ΤΡ���portability ���ʤ��פȤ����������˥�Ф����ȤˤʤäƤ��ޤ����������ƥ��Ȥ��Ƥߤ�ȡ�3.9.4.6 ����Ǥϥ������˥��Фޤ���</p>
1755
<h4>3.9.6.7. .S �ե�����Ρ֥ץ�ץ�������</h4>
1756
<p>GCC 3 / cpp �Υɥ�����Ȥˤϡ����Τ褦�˽�Ƥ��ޤ���</p>
1757
<blockquote>Wherever possible, you should use a preprocessor geared to the
1758
language you are writing in. Modern versions of the GNU assembler have
1759
macro facilities.</blockquote>
1760
<p>��������GCC 3.2 ���ȤΥ������ˤϡ�*.S �ե����뤬 <samp>gcc/config</samp> �ǥ��쥯�ȥ�˿��ܤ���ޤ���</p>
1762
<h4>3.9.6.8. rpcgen �� -dM ���ץ����λ��ͤ�����</h4>
1763
<p>GCC 3.2 �� make �Ǥ� rpcgen �� -dM ���ץ�����Ȥ��ޤ���Ǥ�������������rpcgen �� -dM ���ץ����λ��ͤ��ä��Ѥ�äƤϤ��ʤ��褦�Ǥ���</p>
1765
<h4>3.9.6.9. -include, -isystem, -I- ���ץ����</h4>
1766
<p>�����Υ��ץ����Ϥ��Ф��лȤ��Ƥ��ꡢ-isystem ���ץ����� system include directory ��Ʊ���˿��Ļ��ꤵ����礵������ޤ������������������ƥ�إå����Τ�Τ����륽�եȥ������Υ���ѥ���Ǥϡ����ʤ����ȤʤΤǤ��礦�����Ķ��ѿ��ǰ�礷�ƻ��ꤷ���ۤ������狼��䤹���Ȼפ��ΤǤ�����</p>
1767
<p>�����ǡ�GCC 3 / cpp �Υɥ�����ȤǤϡ�-iwithprefix, -iwithprefixbefore ���ץ����ˤĤ��Ƥϡ��ֻȤ�ʤ��ۤ����ɤ� (discouraged)�פȽ�Ƥ��ޤ���GCC �ˤ� include directory ����ꤹ�륪�ץ���䤿��ˤ���ޤ����������������������äƤ����ΤǤ��礦����*1</p>
1769
<p>*1 ��������GCC 3.2 �� Makefile �� -iprefix ���ץ������դ��Ƥ��롣
1770
�Ȥ����� -iwithprefix, -iwithprefixbefore �ϻȤ��ʤ��ΤǤ��롣-iprefix ���ץ����ϡ����θ�ˤ��Σ��ĤΥ��ץ����Τɤ��餫�����äƽ��ư�̣����ĤΤǤ��뤬��</p>
1772
<h4>3.9.6.10. Undocumented �ʻ�������ޥ���</h4>
1773
<p>GCC 2 �Ǥ� <tt>__VERSION__</tt>, <tt>__SIZE_TYPE__</tt>, <tt>__PTRDIFF_TYPE__</tt>, <tt>__WCHAR_TYPE__</tt> ���λ�������ޥ����ˤĤ��Ƥϡ��ɥ�����Ȥ˵��ܤ��ʤ���-dM ���ץ����Ǥ��Τ뤳�Ȥ��Ǥ��ޤ���Ǥ�������GCC 3 �Ǥϥɥ�����Ȥ˰�̣�����ܤ��졢����Ū���ͤ� -dM ���Τ뤳�Ȥ��Ǥ���褦�ˤʤ�ޤ�����</p>
1775
<h4>3.9.6.11. Undocumented �ʴĶ��ѿ�</h4>
1776
<p>GCC 2 �Ǥϥɥ�����Ȥ˵��ܤΤʤ��ä� <tt>SUNPRO_DEPENDENCIES</tt> �Ȥ����Ķ��ѿ��ˤĤ��Ƥϡ�GCC 3 �Ǥϥɥ�����Ȥ˵��ܤ����褦�ˤʤ�ޤ����ʤ��������ʤ�����ʤ�Τ�ɬ�פʤΤ��Ϥ狼��ʤ��ˡ�</p>
1778
<h4>3.9.6.12. ����¾������</h4>
1779
<p>GCC 3 �Ǥϼ��Τ褦�� #pragma ����������Ƥ��ޤ���</p>
1782
#pragma GCC dependency
1783
#pragma GCC system_header
1785
<p>GCC 3.2 �Υ������Ǥ⡢
1786
���Τ��� poison �� system_header ���Ȥ��Ƥ��ޤ�����������<b>mcpp</b> �ǤϤ����ϥ��ݡ��Ȥ��Ƥ��ޤ����ͤ������Ͼʤ��ޤ�����ɬ���������ޤ괶�����ʤ�����Ǥ���</p>
1787
<p>GCC 3 �Ǥ� #assert ���� assertion directives �ϡֿ侩���ʤ� (deprecated)�פȤ���ޤ����ʤ�������gcc �ϥǥե���Ȥ� -A ���ץ�����ȯ�Ԥ��뤬�ˡ�</p>
1788
<p>�ޤ���GCC 2 �Ǥ� -traditional ���ץ�����Ʊ��� cpp �Ǽ�������Ƥ��ꡢ���Τ������˸Ť����ͤ� C90 �λ��ͤ����ߤ������ʻ��ͤȤʤäƤ��ޤ�������GCC 3.2 �Ǥϥץ�ץ����å����̾�� cpp0 �� tradcpp0 �Ȥ�ʬ�����ޤ�����-traditional ���ץ����� gcc ���Ф��Ƥ���ͭ���ǡ�cpp0 �ˤϤ���ޤ���gcc -traditional �ϥץ�ץ������� tradcpp0 ��ƤӽФ��ޤ���tradcpp0 �� C90 �����ο��� traditional �ʥץ�ץ����å��˶ᤤ��ΤȤʤäƤ��ޤ��������ơ�tradcpp0 �Τۤ��Ϻ��塢����ʥХ��ν����ʳ��ϥ��ƥʥ��ʤ��Ȥ���Ƥ��ޤ���</p>
1789
<p>GCC 2 / cpp �δ�̯�ʻ��ͤϤ����ֽ�������Ƥ����褦�Ǥ���</p>
1791
<h3><a name="3.9.7" href="#toc.3.9.7">3.9.7. GCC 3, 4 �� <b>mcpp</b> ��Ȥ��ˤ�</a></h3>
1793
GCC 3.2 �Υ������Ͼ��ʤ��Ȥ�ץ�ץ�������ϡ�glibc 2.1.3 �ʤɤ���٤�Ȥ��ʤ꤭�줤�ʤ�ΤˤʤäƤ��ޤ���Traditional �ʽ����Ϥۤܰ��ݤ��졢��̣�Τʤ����ץ����ϻȤ��ʤ��ʤäƤ��Ƥ��ޤ���<br>
1794
�ޤ���GCC 3.2 / cpp0 ���Τ�Τ⡢traditional �ʻ��ͤ� obsolete �ʤ�ΤȤ��ư�����token-based �ʸ�§�����Τˤ���ʤɡ�GCC 2 / cpp ����٤�ȳ��ʤ�ͥ�줿��ΤȤʤäƤ��ޤ����ɥ�����Ȥ� undocumented ����ʬ�������˸���ޤ������ޤ���Ű����̤�¿������ޤ����������Ȥ��Ƥ��ɤ������˸����äƤ���Ȼפ��ޤ���</p>
1795
<p>������GNU �Υ����ƥ�Ǥϥ����ƥ�إå���ʣ������������ǡ������ɤ��ʤäƤ���Τ��ưפ��İ��Ǥ��ʤ��褦�ˤʤäƤ��ޤ������줬 GNU �Υ����ƥ�Υȥ�֥�κ�����װ��ȤʤäƤ���ΤǤϤʤ��Ǥ��礦����</p>
1796
<p>�⤦��Ļ�ǰ�ʤΤϡ��ץ�ץ�����������ѥ������Τ˵ۼ�����Ƥ��ޤä����ȤǤ������Τ��ᡢ<b>mcpp</b> ��Ȥ��ˤ� gcc �� g++ �� -no-integrated-cpp �Ȥ������ץ������դ��ƸƤӽФ�ɬ�פ�����ޤ���ʣ���� makefile ��¿���� makefile ������礭�ʥ������ե����뷲��ѥ��뤹����䡢�����Υץ�����फ�� gcc ����ưŪ�˸ƤӽФ������ϡ�gcc, g++ �θƤӽФ��� shell-script ���֤������ơ����Υ��ץ����ưŪ���ղä����褦�ˤ��ʤ���Фʤ�ޤ���</p>
1797
<p>����Ū�ˤϡ�gcc, g++ ���֤���Ƥ���ǥ��쥯�ȥ�ʻ�� Linux ����Ǥ� <samp>/usr/local/gcc-3.2/bin</samp>�ˤ˼��Τ褦�� script �줾�� gcc.sh, g++.sh �Ȥ���̾�����֤��ޤ���</p>
1800
/usr/local/gcc-3.2/bin/gcc_proper -no-integrated-cpp "$@"
1804
/usr/local/gcc-3.2/bin/g++_proper -no-integrated-cpp "$@"
1806
<p>�����ơ����Υǥ��쥯�ȥ�Ǽ��Τ褦�ˤ��ޤ���</p>
1808
chmod a+x gcc.sh g++.sh
1814
<p>�ޤ���cpp ���֤���Ƥ���ǥ��쥯�ȥ�ʻ�� Linux ����Ǥ� <samp>/usr/local/gcc-3.2/lib/gcc-lib/i686-pc-linux-gnu/3.2</samp>�ˤǡ�GCC 2 �ξ���Ʊ�ͤˡ�cpp0 �θƤӽФ��� <b>mcpp</b> ���¹Ԥ����褦�ˤ��Ƥ����ޤ���<a href="#3.9.5"> 3.9.5</a> ���ȡˡ�*1<br>
1815
�������Ƥ����ȡ�gcc �� g++ ����ޤ� <b>mcpp</b> ���ƤӽФ��졢
1816
���θ�� cc1, cc1plus �� -fpreprocessed �Ȥ����ץ�ץ������ѤߤǤ��뤳�Ȥ����ץ������դ��ƸƤӽФ����褦�ˤʤ�ޤ���</p>
1817
<p>�ʤ��������ƥ��ɸ��Ȱۤʤ�С������� GCC �ȡ��뤷�������ղ�Ū�� include directory �����꤬ɬ�פʤ��Ȥ�����ޤ�����<b>mcpp</b> �ǤϤ����� <b>mcpp</b> �Υ���ѥ�������Ȥ߹���Τǡ��̾�ϴĶ��ѿ������ꤹ��ɬ�פϤ���ޤ���</p>
1818
<p>�Ǥ���� cc1, cc1plus �Υץ�ץ�������ʬ�Ǥ��� cpplib �Υ������� <b>mcpp</b> �Τ�Τ��֤����������Ȥ����Ǥ�����cpplib �� cc1, cc1plus �Ȥ�����Ū�� interface ����� cpplib ��Ȥ��桼���ץ������Ȥγ���Ū�� interface ��������Ƥ��륽�����ե����뤬��碌�� 46KB �⤢�ꡢ�ȤƤ��֤��������Բ�ǽ�Ǥ����ɤ����Ƥ�������ʣ���� interface �ˤ���ɬ�פ�����ΤǤ��礦������ǰ�ʤ��ȤǤ���</p>
1820
<p>*1 configure ���� <b>mcpp</b> �ȡ��뤷�����ϡ�
1821
����餬��ưŪ�����ꤵ��롣</p>
1823
<h4>3.9.7.1. GCC 3.3, 3.4-4.1 �� <b>mcpp</b> ��Ȥ��ˤ�</h4>
1824
<p>�ɤ������˸����äƤ��� GCC V.3 �Ǥ�������
1825
V.3.3 �����̯��������ž�����Ƥ��ޤ��ޤ�����V.3.3 �� V.3.2 ����٤�ȡ����Τ褦�������礭���Ѥ�äƤ��ޤ���</p>
1827
<li>ñ�Τ� cpp0 �Ϥʤ��ʤä���gcc -no-integrated-cpp �Ϥޤ��Ȥ��뤬����������ƤӽФ����Τ� cc1 (cc1plus) �Ǥ��롣���ʤ�����ץ�ץ������Ǥ⥳��ѥ���Ǥ� cc1 ���ƤӽФ���롣�����ơ��ץ�ץ������ե������� cc1 �˥ץ�ץ������ѤǤʤ����ץ�����Ф����Ϥ����ʲ��Ȥ��������������ˡ�<br>
1828
<li>60 �Ĥ��� 70 �Ĥ����̤Υޥ����������������Ƥ��롣����ˤ�äƥ����ƥ�إå��� GCC �Ȥδط��������ʣ���ˤʤä���<br>
1829
<li>tradcpp ��ʤ��ʤꡢGCC V.3.2 �Ǥ� obsolete �Ȥ� deprecated �Ȥ��줿�Ť����ͤΰ��������褷����<br>
1831
<p>���ΤȤ��ơ����Ĥε���ʥ���ѥ���ˤ��٤Ƥ�ۼ����������ȤʤäƤ��ꡢ�ý����Ϥι����Τ������Ȥ��Ƥ⡢�����ץ����ν����Ϥγ�ȯ�������Ȥ��Ƥ⡢�礤�˵���Τ���Ȥ����Ǥ���</p>
1832
<p><b>mcpp</b> �ΰܿ��Ǥϡ�gcc ����ɤ�ʥ��ץ�����Ϥ���Ƥ��뤫�狼��ʤ��Ȥ����Τ�����Ȥ����Ǥ����ְ�ä����ץ����⤹�٤ƥ����å�������̵�뤹��ΤǤϴ���������ޤ����Ȥꤢ���������Ф��дְ�ä��Ϥ���Ƥ��륪�ץ�����̵�뤹��褦�ˤ��ޤ�����������ʳ��Υ��ץ�����Ϥ����ȥ��顼�ˤʤ�Ϥ��Ǥ���<br>
1833
����������ѹ��Ǥ⡢<b>mcpp</b> �ν���Υ��ץ�������ˤϻȤ��ʤ��ʤä���Τ�����ޤ���-E ���ץ������ѻߤ���-m ���ץ����� -e �ˡ�-c �� -@compat ���ѹ����ޤ�����<br>
1834
�ޤ���GCC V.3.2 �Ǥ� cpp0 �θƤӽФ��� <b>mcpp</b> ���֤�������Ф�����Ȥ����������٤� cc1 (cc1plus) �θƤӽФ��� <b>mcpp</b> �� cc1 (cc1plus) �Ȥ˿���ʬ���뤳�Ȥ�ɬ�פˤʤ�ޤ������Τ���� shell-script �� src/set_mcpp.sh ������Ѱդ��ޤ��������̤λ�������ޥ����ϣ��ģ����б����Ƥ���櫓�ˤϤ����ʤ��Τǡ�GCC �� -dM ���ץ����ν��Ϥ��礷�����Ѥ���褦�ˤ��ޤ�����*1, *2</p>
1835
<p>GCC V.3.4 �ǤϤ���ˡ��������ե�����Ϥ��٤� UTF-8 ���Ѵ����Ƥ����������褦���Ѥ��ޤ������ɥ�����Ȥˤ��ȡ�����Ū�ˤϼ��Τ褦�ˤʤäƤ��ޤ���*3</p>
1837
<li>�ץ�ץ������κǽ�Υե������ǡ�multi-byte character �� UTF-8 ���Ѵ����롣<br>
1838
<li>�����Ѵ��ˤ� libiconv �δؿ���Ȥ����������äơ�iconv ���б����Ƥ��� encoding �Ϥ��٤ƻȤ��롣<br>
1839
<li>�������ե������ encoding ����ꤹ��ˤ� -finput-charset=<encoding> ���ץ�����Ȥ����ʼºݤˤϡ��������ꤷ�ʤ���� UTF-8 �ˤ��Ѵ�����ʤ��ˡ�<br>
1840
<li>����ѥ����� encoding �ϥǥե���ȤǤ� UTF-8 �Ǥ��뤬��-fexec-charset=<encoding> ���ץ�����¾�� encoding ����ꤹ�뤳�Ȥ��Ǥ��롣<br>
1842
<p>�ֹ�ݲ��פȸ����� Unicode ���б������뤳�Ȥȹͤ�����Ĭ�������Ȥ˼ºݤ� multi-byte character ��Ȥ�ʤ������ο͡��δ֤ˤ���ޤ�����������Ĭ�� GCC �ˤ�ڤ�Ǥ��ޤä��褦�Ǥ���</p>
1843
<p>�����⡢���ͤ��ޤ���ʬ�˼�������Ƥ��ޤ��ºݤ˻ȤäƤߤ�ȡ����Τ褦�ˤʤ�ޤ���</p>
1845
<li>EUC-JP, GB2312, KSC-5601 �� finput-charset ���ץ�������ꤹ��� UTF-8 ���������Ѵ����졢���ꤷ�ʤ���Ф��Τޤ��̤롣<br>
1846
<li>fexec-charset ���ץ����� V.3.4, 4.0 �Ǥϸ����ʤ���V.4.1 �Ǥϸ�����EUC-JP, GB2312, KSC-5601 �ˤĤ��Ƥ�������ư��롣<br>
1847
<li>Big5 �� UTF-8 �ؤ��Ѵ��ϤǤ��뤬��V.4.1 �Ǥ� fexec-charset ���ץ����� Big5 ���᤹�Ȥ����Ǹ�ư��롣<br>
1848
<li>ISO2022-JP �� V.3.4, 4.0 �Ǥϥץ�ץ�������Ǥ��ʤ��ä�����V.4.1 �ǤϤǤ��롣��������fexec-charset ���ץ����� ISO2022-JP ���᤹�Ȥ����Ǹ�ư��롣<br>
1849
<li>�ɤΥС������Ǥ� Shift-JIS �ϥץ�ץ������Ǻ��𤷤Ƥ��ޤ���<br>
1851
<p><b>mcpp</b> �� -e <encoding> ���ץ����� encoding ����ꤷ�ޤ�����GCC-specific-build �Ǥϡ�BIG5, shift-JIS, ISO2022-JP �Ǥ� <backslash> ���Ȱ��פ����ͤΥХ��Ȥ�ľ���� <backslash> ���������ƥ���ѥ���η�٤��䤤�ޤ�����������UTF-8 �ˤ��Ѵ����������� encoding �Τޤ��Ϥ��ޤ���-finput-charset ���ץ����� -e ���ץ�����Ʊ����ΤȤ��ư����ޤ�������ϼ��Τ褦����ͳ�Ǥ���*4, *5</p>
1853
<li>Big5, SJIS, ISO2022-JP �� UTF-8 ���Ѵ����Ƥ��ޤ��� cc1 ������ encoding ���������᤻�ʤ���GCC V.4.1 �Ǥ����Ǥ��롣���������ɤΥС������� GCC �Ǥ⡢�Ѵ������� <backslash> ����äƤ��Ȥ��Τޤ��̤ꡢ�����̤�η�̤ˤʤ롣���ʤ����single byte character sequence �Ǥ��뤫�Τ褦�˰����롣<br>
1854
<li>GCC 4.0 �ޤǤΥС������ǤϤɤ� encoding �� UTF-8 ���鸵�� encoding ���᤻�ʤ���<br>
1855
<li>GCC �ζᤤ����λ����ѹ�����Ԥ�������<br>
1858
<p>*1 MinGW �Ǥ� symbolic link ���Ȥ��ʤ���ln -s �Ȥ������ޥ�ɤϤ��뤬��
1859
�����ñ�˥��ԡ���������Τ�ΤǤ��롣�ޤ���MinGW �� GCC �Ϥ��Ȥ� cc1 �Ȥ���̾���Υե�����Ǥ��äƤ⤽�줬 shell-script �Ǥ���ȡ���ư����ݤ��롣���Τ��ᡢ<b>mcpp</b> �� GCC-specific-build �Ǥϡ�MinGW �˸¤ä� cc1.exe �Ȥ���̾���μ¹ԥץ���������������ʤ���� cc1plus.exe �ˤ⥳�ԡ������ˡ������ơ������椫�� mcpp.exe �ޤ��� GCC �� cc1.exe �ʤ��� cc1plus.exe ��ư����褦�ˤ��Ƥ��롣</p>
1860
<p>*2 CygWIN / GCC �Ǥ� -mno-cygwin �Ȥ������ץ�����ꡢ�������ꤹ��� system include directory ���Ѥ�ꡢGCC �λ�������ޥ������Ѥ�롣���Τ��ᡢ<b>mcpp</b> �� CygWIN GCC-specific-build �Ǥ� V.2.6.1 ����ϣ����åȤλ�������ޥ������Ѱդ���褦�ˤ�����</p>
1861
<p>*3 ��ΤȤ����� FreeBSD 5.3 �ǤϤʤ��� GCC �Τ����Ѵ��Ϥޤä���ư��ʤ���libiconv �ϥ����Ƥ���ΤǤ��뤬��</p>
1862
<p>*4 <b>mcpp</b> �ν��Ϥ� cc1 ���Ϥ����ˤ� finput-charset �Ϥ������ fexec-charset ���ץ������դ��ƤϤ����ʤ���</p>
1863
<p>*5 <b>mcpp</b> V.2.5 �Ǥ� GCC �� V.3.4 �ξ��� <backslash> ���䤦���Ȥ���Ƥ�����GCC ��ư�����ʤΤǤ褦���Ƥ����ΤǤ��롣��������V.4.1 �ˤʤäƤ�ޤȤ��ư�����֤ˤʤäƤ��ʤ��Τǡ�<b>mcpp</b> V.2.6 �Ǥ� V.2.4 �ޤǤλ��ͤ��ᤷ�������ʤ����GCC V.3.4 �ʹߤˤĤ��Ƥ� V.3.3 �ޤǤ�Ʊ���褦�˰�����</p>
1865
<h3><a name="3.9.8" href="#toc.3.9.8">3.9.8. Linux �� stddef.h, limits.h, #include_next ������</a></h3>
1866
<p>Linux �Ǥ� GCC �ΥС�����Ȥ��㤨�� <samp>/usr/lib/gcc-lib/i386-vine-linux/3.3.2/include</samp> �Ȥ��ä� include directory �������ƥ���ɲä���ޤ����������ˤ��� stddef.h, limits.h ���ˤ����꤬����ޤ���CygWIN �Ǥ�Ʊ���Ǥ���</p>
1868
<h4>3.9.8.1. /usr/include ��ɸ��إå����ʤ�</h4>
1869
<p>�ޤ���C ��ɸ��إå��ե�����Τ��� <samp>float.h, iso646.h, stdarg.h, stdbool.h, stddef.h</samp> �Σ��Ĥ� Linux �ǤϤ��� GCC �Υǥ��쥯�ȥ�ˤ������ꡢ<samp>/usr/include</samp> �ˤ� <samp>/usr/local/include</samp> �ˤ�¸�ߤ��ޤ���Linux �Υ����ƥ�إå��Ͻ����Ϥ� GCC �Ǥ���� GCC ��ͭ�� include directory ��Ȥ���GCC �Ǥʤ���� <samp>/usr/include</samp> ������Ȥ��褦�˽�Ƥ���褦�Ǥ�����stddef.h �����ʤ��ΤǤϺ���ޤ���</p>
1870
<p>���Ȥ��äơ�GCC �ʳ��ν����Ϥ� GCC ��ͭ�� include directory ��Ȥ��褦�ˤ���ȡ����٤Ϥ��Υǥ��쥯�ȥ�ˤ��� limits.h �� GCC ��ͭ�γ�ĥ���ͤǤ��� #include_next �ˤ֤Ĥ���ޤ������Ȥ� #include_next ��������Ƥ⡢���٤� limits.h �ν���������������������꤬������ޤ������Ȥ� GCC V.3.3 �ʹߤǤ� limits.h ��������٤��������¾塢�����Ϥǻ����������Ȥ�����˽�ʤ��Ȥ���褦�ˤʤä����ᡢ¾�ν����ϤǤ� limits.h ���Ȥ��ʤ��Ȥ�����̤ˤʤäƤ��ޤ��ޤ���</p>
1871
<p>�ޤ���GCC ���Ȥ⡢���� limits.h �� #include_next �Ǥ��ԲIJ��ư��ޤ���</p>
1872
<p>�����������������Ȥ�䤳�����ΤǤ������ʤ�����ǯ��Τ��������֤���Ƥ�������ʤΤǡ������ˤޤȤ�Ƥ����ޤ���</p>
1874
<h4>3.9.8.2. #include_next �δ�̯�ʽ���</h4>
1875
<p>GCC �Ǥ� include directory ���̾�ϼ��Τ褦�ˤʤ�ޤ���</p>
1878
/usr/lib/gcc-lib/SYSTEM/VERSION/include
1881
<p>�����Υǥ��쥯�ȥ꤬�夫�鲼�إ���������ޤ���
1882
���Σ����ܤ� GCC ��ͭ�� include directory �Ǥ������� SYSTEM ���㤨�� i386-vine-linux, i386-redhat-linux��VERSION �� 3.3.2, 3.4.3 ���Ȥʤ�ޤ���GCC ���̤ΥС������� <samp>/usr/local</samp> ���ɲå��ȡ��뤷�����Ϥ��� <samp>/usr/lib/gcc-lib</samp> �� <samp>/usr/local/lib/gcc</samp> �Ȥʤ�ޤ���C++ �Ǥ� <samp>/usr/local/include</samp> �����ˤ���ˤ����Ĥ��Υǥ��쥯�ȥ꤬�ä��ޤ���GCC V.3.*, 4.* �Ǥϼ��Τ�ΤǤ���</p>
1884
/usr/include/c++/VERSION
1885
/usr/include/c++/VERSION/SYSTEM
1886
/usr/include/c++/VERSION/backward
1888
<p>�����Υǥ��쥯�ȥ��̾���� GCC ��ͭ�Τ�Τ˸����ޤ�����C++ ��ɸ��ǥ��쥯�ȥ�Ϥۤ���¸�ߤ��ʤ��Τǡ�¾�ν����Ϥ� <samp>/usr/include/c++/VERSION</samp> ��Ȥ���������ޤ���GCC V.2.95 �Ǥ� C++ �� include directory �ϼ��Τ�ΤǤ�����</p>
1892
<p>����� -I ���ץ�����Ķ��ѿ��ǻ��ꤵ�줿�ǥ��쥯�ȥ꤬�����Υꥹ�Ȥ������ɲä���ޤ���</p>
1893
<p>�ʲ��Ǥ�������狼��䤹�����뤿��� GCC V.3.3 �ʹߤǤ� C �� limits.h ���ä�¤�ޤ�����Ǥ� <tt>LONG_MAX</tt> ���������ˤȤ�ޤ���limits.h �� <samp>/usr/include</samp> �� GCC ���ѥǥ��쥯�ȥ�Σ��Ľ�ˤ���ޤ���</p>
1895
#include <limits.h>
1897
<p>���ιԤ������ GCC �� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> �� include ���ޤ�������ȡ����Υե��������Ƭ��</p>
1899
#ifndef _GCC_LIMITS_H_
1900
#define _GCC_LIMITS_H_
1901
#ifndef _LIBC_LIMITS_H_
1902
#include "syslimits.h"
1905
<p>�ȤʤäƤ���Τǡ�<samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/syslimits.h</samp> �� include ����ޤ������Υե�����ϼ��Τ褦��û����ΤǤ���</p>
1907
#define _GCC_NEXT_LIMITS_H
1908
#include_next <limits.h>
1909
#undef _GCC_NEXT_LIMITS_H
1911
<p>���ơ������� limits.h ���Ƥ� include ����ޤ�����#include_next �ʤΤ� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include</samp> ���åפ��� <samp>/usr/include</samp> �������������Ϥ��Ǥ���GCC �� cpp.info �ˤϼ��Τ褦�˽Ƥ���ޤ���</p>
1912
<blockquote>This directive works like `#include' except in searching for the specified file: it starts searching the list of header file directories _after_ the directory in which the current file was found.</blockquote>
1913
<p>�Ȥ����� GCC �Ϥʤ��� <samp>/usr/include/limits.h</samp> �ǤϤʤ� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> ��⤦���� include ���Ƥ��ޤ��ޤ���<br>
1914
���٤� <tt>_GCC_LIMITS_H_</tt> ���������Ƥ�����֤ʤΤ�</p>
1916
#ifndef _GCC_LIMITS_H_
1918
<p>�ʲ��Υ֥��å��ϥ����åפ��졢���Υ֥��å���ɾ������ޤ���</p>
1921
#ifdef _GCC_NEXT_LIMITS_H
1922
#include_next <limits.h>
1927
<samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/syslimits.h</samp> �ˤ��ä��ΤȤޤä���Ʊ�� #include_next <limits.h> �Ȥ����ԤǤ����ޤ� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> �������ʤ����ʬ���Ȥ� include �����Τ��Ȼפ��ȡ����٤� GCC �� <samp>/usr/include/limits.h</samp> �� include ����ΤǤ���GCC �� #include_next ��ư��ϰ���ˤ狼��ޤ���</p>
1928
<p><samp>/usr/include/limits.h</samp> �Ǥ� <features.h> ���� include ����ޤ����ޤ������ιԤǻϤޤ�֥��å�������ޤ���</p>
1930
#if !defined __GNUC__ || __GNUC__ < 2
1932
<p>���Υ֥��å��Ǥ� <bits/wordsize.h> �� include ������ǡ�wordsize �� 32 �ӥåȤǤ��뤫 64 �ӥåȤǤ��뤫�˱����Ƶ��ʤ��ᤵ��Ƥ���Ƽ�������������褦�ˤʤäƤ��ޤ������Ȥ��� 32 �ӥåȤǤ���� <tt>LONG_MAX</tt> �ϼ��Τ褦���������ޤ���</p>
1934
#define LONG_MAX 2147483647L
1936
<p>��������GCC �ǤϤ��Υ֥��å������������åפ���ޤ��������ơ����Υե����뤬����ꡢinclude ���� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> �����ޤ������Υե�����⤳��ǣ����ܤ� include ��ꡢ<samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/syslimits.h</samp> ����ꡢ���Υե�����⤳��ǽ���ä� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/limits.h</samp> �κǽ�� include �����ޤ������Υե�����Ͼ嵭����ʬ�Τ��Ȥ˳Ƽ���������������ޤ���<tt>LONG_MAX</tt> �ˤĤ��Ƥϼ��Τ褦�ˤʤäƤ��ޤ���</p>
1939
#define LONG_MAX __LONG_MAX__
1941
<p>����Ǥ��Υե�����⽪���ޤ���</p>
1943
#include <limits.h>
1945
<p>�ν����Ϥ���Ǥ��٤ƽ����Ǥ���
1946
��ɡ�<tt>LONG_MAX</tt> �� <tt>__LONG_MAX__</tt> ���������ƥ����ޥ��ʤΤǤ���<tt>__LONG_MAX__</tt> �ȤϤ��ä������ʤΤǤ��礦�����¤� GCC V.3.3 �ʹߤǤ� <tt>__LONG_MAX__</tt> �䤽��¾��¿���Υޥ����������������Ƥ���ΤǤ���32 �ӥåȥ����ƥ�Ǥ� <tt>__LONG_MAX__</tt> �� 2147483647L �Ȼ����������Ƥ��ޤ���<tt>LONG_MAX</tt> �ʳ��ε��ʤ��ᤵ��Ƥ���Ƽ�ޥ����ˤĤ��Ƥ⡢����������줿�ޥ������������Ƥ���Τǡ��������Ʊ���ۤǤ�������ʤ顢���Τ�䤳�����إå��ե������ #include_next �ν����Ϥ��ä������Τ���ʤΤǤ��礦����</p>
1947
<p>#include_next ��ư��� GCC V.2.95.3, V.3.2, V.3.4, V.4.0, V.4.1 �Ǥ� V.3.3 ��Ʊ���Ǥ������ʤ����</p>
1949
#include_next <limits.h>
1951
<p>�� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/syslimits.h</samp> ���� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> �� include ���졢�����ˤ���Ʊ��</p>
1953
#include_next <limits.h>
1955
<p>�� <samp>/usr/include/limits.h</samp> �� include ����ޤ���</p>
1957
#include <limits.h>
1960
<samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> ������ include ����뤳�Ȥˤʤ�ޤ������Υե������ include ���Ƥ��̤��Ѥ�ޤ�������Ǥ��ꡢ�������ͤ�ư���äƤ��ꡢư���Ӥ��Ƥ��ޤ����Υե�����μ��Υ֥��å�������ϥ������ʬ�Ǥ���</p>
1963
#ifdef _GCC_NEXT_LIMITS_H
1964
#include_next <limits.h>
1968
<h4>3.9.8.3. GCC �Ǥʤ���ɸ��إå���Ȥ��ʤ�</h4>
1969
<p>�Ǥϼ��� GCC �ʳ��ν����Ϥ� Linux �Υ����ƥ�إå���Ȥ��Ȥɤ��ʤ�Ǥ��礦���� GCC ��ͭ�� include directory ��Ȥ�ʤ��ȡ�stddef.h �������Ĥ���ޤ�����ʤ� GCC �� include directory ��Ȥ��Ȥɤ��ʤ�Ǥ��礦���� stddef.h �ϸ��Ĥ���ޤ��������٤� limits.h �����������ʤ�ޤ���</p>
1971
#include <limits.h>
1973
<p>���ιԤǥץ�ץ����å��� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> �� include ���ޤ����������� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/syslimits.h</samp> �� include ����ޤ��������ơ�</p>
1975
#include_next <limits.h>
1977
<p>�ǥ��顼�ˤʤ�ޤ���</p>
1978
<p>�Ǥϡ��ץ�ץ����å��� #include_next
1979
�����������ɤ��ʤ�Ǥ��礦���� #include_next �������̤�˼�������Ƥ���С������� <samp>/usr/include/limits.h</samp> �� include ����ޤ��������ơ��嵭��</p>
1981
#if !defined __GNUC__ || __GNUC__ < 2
1983
<p>�ʲ��Υ֥��å����������졢<tt>LONG_MAX</tt> �����Τ褦��������졢����¾�Υޥ�����Ŭ�ڤ�������������ޤ���</p>
1985
#define LONG_MAX 2147483647L
1987
<p>�����ơ�include ���� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/syslimits.h</samp> ����ꡢ���Υե����뤬����ä� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/limits.h</samp> �����ޤ�������ȡ�����</p>
1990
#define LONG_MAX __LONG_MAX__
1992
<p>����Ǥ��ä���������������줿�ޥ����Ϥ��٤Ƥ��˻��ˤ���� <samp>__LONG_MAX__</samp> ���Ȥ���̤�����̾���ˤʤäƤ��ޤ��ΤǤ���</p>
1993
<p>GCC V.3.2 �ޤǤʤ顢����Ǥ�ޤ�</p>
1995
#define __LONG_MAX__ 2147483647L
1997
<p>�Ȥ����Ԥ����ä��Τǡ�
1998
���˻��ˤ���Ƥ�⤦���١������������ľ����ޤ���������ϥ���ʽ����Ǥ�������̤��������ΤǻȤ����Ȥ��Ǥ��ޤ�������������V.3.3 �ʹߤΥإå��ե�����ǤϤ��٤Ƥ���ϫ�˽����ޤ���</p>
2000
<h4>3.9.8.4. ���̤��к�</h4>
2001
<p>�ʾ��ޤȤ��ȡ�����ϼ������ˤ���ޤ���*1, *2, *3</p>
2003
<li>Linux �Υ����ƥ�إå���
2004
GCC ���Ѥˤ��ʤ�����ˤ� <samp>/usr/include</samp> �� <samp>float.h, iso646.h, stdarg.h, stdbool.h, stddef.h</samp> ��ɬ�פǤ��뤬�����줬�ʤ���<br>
2005
<li>C++ ��ɸ�� include directory �� GCC �ΥС�������¸�ˤ��ʤ�����ˤϡ�<samp>/usr/include/c++/VERSION</samp> �ǤϤʤ� <samp>/usr/include/c++</samp> ��ȤäƤ�餤������ΤǤ��롣<samp>/usr/include/c++/VERSION/*</samp> �� GCC ��ͭ�Τ�Τ˸¤�٤��Ǥ��롣<br>
2006
<li>GCC �� #include_next ��ư��ϻ��ͤȰۤʤäƤ��ꡢ���İ�������ʤ���<br>
2007
<li>GCC �� <limits.h> ���������ޥ�������¾弫���ǻ����������ΤǤϡ���䤳�����إå��ե�����ν������̣���ʤ���<samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> �Ǥ��٤Ƥ� #undef ����ΤǤϤʤ��������Ǥ��롣���ʤ��Ȥ� Linux �� CygWIN �Ǥ� limits.h �Ĥ�ʬ����ɬ�פϤʤ��Ϥ��Ǥ��롣���Υǥ��쥯�ȥ�Υإå��ե������ GCC �ȡ��뤹����˼�ư����������ΤʤΤǡ��������٤ξ�Ĺ���Ϥ��ʤ��Ǥ�������������ˤ��Ƥ�⤦�����������Ƥ�餤������ΤǤ��롣<br>
2009
<p>����������κ����ˤ���Τϥ����ƥ�إå��ι����β���ʣ�����Ǥ��������ơ�#include_next �Ȥ�����ĥ�ǥ��쥯�ƥ��֤�������ؤ��Ƥ��ޤ������Υǥ��쥯�ƥ��֤����ӤϤ����¤��Ƥ��ꡢGCC �� glibc �Υ���ѥ���ȥ��ȡ���ǻȤ��Ƥ����ΤΡ����ȡ��뤵�줿�����ƥ�إå��Ǥ� limits.h �ˤ�������Ǥ������� limits.h �ν������������𤷤Ƥ���ΤǤϡ�����¸����ͳ�������ޤ���</p>
2010
<p>���ơ�Linux ����� CygWIN ��� <b>mcpp</b> �� compiler-independent �ǤǤϰʾ��������н褹�뤿�ᡢ�Ȥꤢ�����ϼ��Τ褦�����ꤹ��ɬ�פ�����ޤ���Compiler-independent �ǤǤϺ�����뤿�ᡢ#include_next �ϼ������ޤ���GCC ��ͭ�� include directory ���Ȥ߹��ߤޤ���</p>
2012
<li><samp>/usr/include/stddef.h</samp> �� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/stddef.h</samp> �ؤΥ�Ȥ��ƺ������Ƥ�����ʣ���� GCC �ΥС�������ȡ��뤵��Ƥ�����⤽�Τɤ줫�˥���Ƥ����С�Linux, CygWIN ��� compiler-independent �ǻȤ�ʬ�ˤ�����ʤ��Ȼפ��롣����� GCC �ˤ⡢GCC �����Ǥ� <b>mcpp</b> �ˤⰭ�ƶ���Ϳ���ʤ���stdarg.h ��Ʊ�ͤǤ��롣�ޥ����� GCC ���Ȥ߹��ߴؿ���Ÿ������뤬��ñ�˥ץ�ץ�������������ʤ餽��Ǥ⤹�ࡣ<br>
2013
<li>iso646.h, stdbool.h �Ϥ�����ñ�ʤ�ΤǤ��ꡢ�����Ϥ䥷���ƥ�˰�¸�����ΤǤϤʤ��Τǡ�GCC �Τɤ줫�ΥС������Τ�Τ� <samp>/usr/include</samp> �˥��ԡ����뤫��ư����Ф��ࡣlimits.h �� GCC �ʳ��ν����ϤǤ� <samp>/usr/include</samp> �Τ�Τ����ǽ�ʬ�Ǥ��롣<br>
2014
<li>float.h �� <tt>DBL_MAX_EXP</tt> �� <samp>__DBL_MAX_EXP__</samp> ����������Ȥ��ä����ƤʤΤǡ�¾�Υץ�ץ����å��ˤ����Ω���ʤ���ɬ�פʤ� GCC ����������ʤɤͤ˽�*4<br>
2015
<li>GCC ��ͭ�� C �� include directory �ϴĶ��ѿ��Ǥ����ꤷ�ʤ���<br>
2016
<li>�Ķ��ѿ� CPLUS_INCLUDE �� <samp>/usr/include/c++/VERSION:/usr/include/c++/VERSION/SYSTEM:/usr/include/c++/VERSION/backward</samp> �� C++ �� include directory �Ȥ������ꤹ�롣<br>
2018
<p>GCC �����Ǥ� <b>mcpp</b> �Ǥ� GCC ��ͭ�� include directory ���Ȥ߹��ߡ�#include_next ������̤�˼��������ߴ��Τ���λ�������ޥ������������Τǡ����̤������ɬ�פ���ޤ���</p>
2020
<p>*1 ���� 3.9.8 �ε��ܤ� Linux / GCC 2.95.3, 3.2, 3.3.2, 3.4.3,
2021
4.0.2, 4.1.1 ����� CygWIN / GCC 2.95.3, 3.4.4 �dz�ǧ������ΤǤ��롣CygWIN / GCC 2.95.3 �Ǥ� #include_next ��ư��ϻ����̤�Ǥ��ä�����3.4.4 �Ǥ� Linux ��Ʊ���ˤʤä����ޤ���CygWIN �� C++ �� include directory �� 2.95.3 �Ǥ� <samp>/usr/include/g++-3</samp> �Ǥ��ä�����3.4.4 �Ǥ� <samp>/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++</samp> �ʲ��ȤʤäƤ��롣</p>
2022
<p>*2 FreeBSD 5.3 / GCC 3.4.2 �Ǥ� <samp>/usr/include</samp> �� C �Τ��٤Ƥ�ɸ��إå������ꡢGCC ��ͭ�� include directory �� C �Ǥ�¸�ߤ��ʤ���#include_next �⥷���ƥ�إå��ˤ�̵����������C++ �� include directory �ϻ�ǰ�ʤ��� <samp>/usr/include/c++/3.4, /usr/include/c++/3.4/backward</samp> �� GCC �ΥС�������¸�ȤʤäƤ��롣<br>
2023
FreeBSD �Ǥ��̥С������� GCC �ȡ��뤹��� GCC-version-specific �� include directory ������롣�����ˤǤ���إå��ե������¿���ϥ���ʤ�ΤǤ��롣��������<samp>/usr/include</samp> �Υإå��ե����뤬�������뤳�ȤϤʤ���</p>
2024
<p>*3 MinGW / GCC 3.4.* �Ǥ� include directories �Ȥ���ͥ���̤�¾�Υ����ƥ�Ȱۤʤ뤬��GCC �� #include_next ��ư���Ʊ���Ǥ��ꡢ�ޤ�ɸ��� include directory �Ǥ��� <samp>/mingw/include</samp> �ˤ����Ĥ���ɸ��إå����ʤ��� version-specific-directory �ˤ������� CygWIN ����Ʊ���Ǥ��롣</p>
2025
<p>*4 GCC ������Ȥ��ƽС����Τ褦�ˤʤ롣</p>
2032
#define FLT_ROUNDS 1
2035
#define FLT_MANT_DIG 24
2036
#define DBL_MANT_DIG 53
2037
#define LDBL_MANT_DIG 64
2043
#define FLT_MIN_EXP (-125)
2044
#define DBL_MIN_EXP (-1021)
2045
#define LDBL_MIN_EXP (-16381)
2047
#define FLT_MIN_10_EXP (-37)
2048
#define DBL_MIN_10_EXP (-307)
2049
#define LDBL_MIN_10_EXP (-4931)
2051
#define FLT_MAX_EXP 128
2052
#define DBL_MAX_EXP 1024
2053
#define LDBL_MAX_EXP 16384
2055
#define FLT_MAX_10_EXP 38
2056
#define DBL_MAX_10_EXP 308
2057
#define LDBL_MAX_10_EXP 4932
2059
#define FLT_MAX 3.40282347e+38F
2060
#define DBL_MAX 1.7976931348623157e+308
2061
#define LDBL_MAX 1.18973149535723176502e+4932L
2063
#define FLT_EPSILON 1.19209290e-7F
2064
#define DBL_EPSILON 2.2204460492503131e-16
2065
#define LDBL_EPSILON 1.08420217248550443401e-19L
2067
#define FLT_MIN 1.17549435e-38F
2068
#define DBL_MIN 2.2250738585072014e-308
2069
#define LDBL_MIN 3.36210314311209350626e-4932L
2071
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
2072
#define FLT_EVAL_METHOD 2
2073
#define DECIMAL_DIG 21
2076
#endif /* _FLOAT_H___ */
2080
<h2><a name="3.10" href="#toc.3.10">3.10. Visual C++ �Υ����ƥ�إå�������</a></h2>
2081
<p>Visual C++ 2003 �Ǥ����Ĥ��Υ���ץ�ץ������Υץ�ץ������� <b>mcpp</b> ��ȤäƤߤޤ��������Υ����ƥ�Υ����ƥ�إå��ˤϡ��ץ�ץ�������θߴ���������Ȥʤ�褦�ʤ�ΤϤ������ʤ��褦�Ǥ������Τ褦�ʤ�ΤϤ���ޤ�����������¾�ν����ϤǤ⤷�Ф��и������Τǡ��ä�����Ȥʤ��ΤǤϤ���ޤ���</p>
2083
<li>C99 �λ��ͤϤ��ޤ��������Ƥ��ʤ��ˤ⤫����餺��C �� // �����Ȥ�¿�Ѥ���Ƥ��롣<br>
2084
<li>Function-like �ޥ�����̾����Ÿ������� object-like �ޥ�������������������롣<br>
2085
<li>limits.h �˴ְ�ä��ޥ�����������Ĥ����<a href="cpp-test.html#5.1.3.1"> cpp-test.html#5.1.3.1</a> ����2 �ȡˡ�
2088
<p>Linux �� glibc �Υ����ƥ�إå��ˤ� GCC local
2089
�ʻ��ͤ����Ф��лȤ��Ƥ��ޤ�����Visual C++ �Υ����ƥ�إå��ˤ� Visual C++ local �ʽ����Ϥ��ޤ긫���ޤ���</p>
2091
<h3><a name="3.10.1" href="#toc.3.10.1">3.10.1. �����Ȥ���������ޥ�����</a></h3>
2092
<p>��������Visual C++ �ˤϣ��Ĥ����Ȥ�Ǥ�ʤ��ޥ���������ޤ���Visual C++ 2003 �� <samp>Vc7/PlatformSDK/Include/wtypes.h</samp> �ˤϼ��Τ褦�ʥޥ������������ޤ���*1</p>
2094
#define _VARIANT_BOOL /##/
2096
<p>�����ơ�<samp>Vc7/PlatformSDK/Include/</samp> �� <samp>oaidl.h, propidl.h</samp> �Ǽ��Τ褦�˻Ȥ��Ƥ��ޤ���</p>
2100
<p>����Ϥ��ä������Ǥ��礦����<br>
2101
����� <tt>_VARIANT_BOOL</tt> �� // ��Ÿ������ơ�
2102
���η�̡����ιԤ������ȥ����Ȥ���뤳�Ȥ���Ԥ��Ƥ����ΤΤ褦�Ǥ��������ơ��ºݤ� Visual C �� cl.exe �ǤϤ����ʤäƤ��ޤ��ޤ���</p>
2103
<p>��������// �ϥȡ����� (preprocessing-token) �ǤϤ���ޤ��ޤ����ޥ����������Ÿ���ϡ����������ȡ������ʬ�쥳���Ȥ����ĤΥ��ڡ������Ѵ����줿���ȤΥե������ǽ���������ΤǤ����������äơ��ޥ����ˤ�äƥ����Ȥ��������뤳�ȤϷ褷�ƤǤ��ʤ��ΤǤ������Υޥ����� // ��Ÿ�����줿�Ȥ����ǡ�// ��ͭ���� preprocessing-token �ǤϤʤ��ΤǷ�̤� undefined �Ȥʤ�Ϥ��Τ�ΤǤ���</p>
2104
<p><b>mcpp</b> �Ǥ����Υإå��ե������Ȥ�����ˤϡ����Υޥ���������ȥ����Ȥ��������ꤢ�� <tt>_VARIANT_BOOL</tt> �����ΤȤ����Τ褦�˽����ʤ���Фʤ�ޤ���</p>
2106
#if !__STDC__ && (_MSC_VER <= 1000)
2110
<p>Visual C 5.0 �ʹߤΥС�������Ȥ�ʤ��ΤǤ���С����ιԤϼ��Τ褦�������˥����ȥ����Ȥ��Ƥ��ޤ��ޤ���</p>
2112
// _VARIANT_BOOL bool;
2114
<p>���Υޥ����������Ǥ���������ʾ������ʤΤϡ�������ȤȤ��ƽ������Ƥ��ޤ� Visual C / cl.exe �Υץ�ץ������μ����Ǥ���������ˤϡ����Υץ�ץ����å��μ��Τ褦�ʿ�������꤬Ϫ�褷�Ƥ��ޤ���</p>
2116
<li>���ʤ��Ȥ⤳����Ǥ� Token-base �ǤϤʤ�ʸ���١����Υץ�ץ�����������Ƥ��롣<br>
2117
<li>�ޥ�����Ÿ����̤������ȤȤ��ư����Ƥ��ꡢtranslation phases �����𤷤Ƥ��롣<br>
2119
<p>�����餯��cl.exe �Υץ�ץ����å������˸Ť����ɤ��餫�ȸ�����ʸ���١����Υץ�ץ����å��Υ������ˤ��Ƥ���ΤǤ��礦���������ʬŪ�˼��ä��ʤ���С�����åפ��֤��Ƥ��Ƥ��뤳�Ȥ���¬����ޤ���</p>
2120
<p>�����������˸Ť��ץ�����¤����äƤ���ȿ�¬�����ץ�ץ����å���¿������ޤ���3.9 �Ǹ��� GCC 2 / cpp �⤽�Σ��ĤǤ������������ץ�ץ����å��Ǥϡ���ʬŪ�˼��ä���вä���ۤɥץ�����¤�������㥴���㤷�Ƥ���Τǡ���������ɤ��Ƥ⤢��Ȥ������ʼ���Ƭ�Ǥ��Ȥʤ�ޤ����Ť���������ΤƤơ���ᤫ���ľ���ʤ��¤ꡢ���ä��ꤷ���ץ�ץ����å��ˤϤʤ�ʤ��Ȼפ��ޤ���</p>
2121
<p>GCC 3 / cpp �Ǥϥ���������������ľ����ơ�GCC 2 �Ȥ��̤Υץ�ץ����å��Ȥʤ�ޤ�����<b>mcpp</b> �⡢DECUS cpp �Ȥ����Ť��ץ�ץ����å��Υ����������ȯ���ʤ��顢��ȯ���Ƥޤ�ʤ�����Ū�˽�ľ���줿��ΤǤ���</p>
2123
<p>*1 Visual C++ 2005 express edition �ˤ� Platform SDK �ϴޤޤ�Ƥ��ʤ�����
2124
"Platform SDK for Windows 2003" �����������ɤ��ƻȤ����Ȥ��Ǥ��롣���� <samp>PlatformSDK/Include</samp> �ǥ��쥯�ȥ�� <samp>wtypes.h, oaidl.h, propidl.h</samp> �Ǥ⡢���Υޥ�����Ʊ���Ǥ��롣</p>
2127
<h1><a name="4" href="#toc.4">4. ������������</a></h1>
2128
<p>�ø���Υץ�ץ��������ͤ���줳���˽櫓�ˤϤ椭�ޤ���cpp-test.html �� Standard C �Υץ�ץ������ˤĤ��ƾܤ��������Ƥ���Τǡ���������ɤ�Ǥ���������<b>mcpp</b> �γƼ�⡼�ɤ�ư����ͤˤĤ��Ƥϡ�<a href="#2.1"> 2.1</a> �Ƥ��������������Ǥ� Standard C �ǽ���������Ȥ���Ƥ����Τ�ޤ�ơ��ץ�ץ������μ��դΤ����Ĥ��λ��ͤ�Ҥ٤ޤ�������ˤ��ޤ��ʽ�����������ͤˤĤ��Ƥϡ�5 ���ǥ�å������˽Ƥ���ޤ���</p>
2131
<h2><a name="4.1" href="#toc.4.1">4.1. ����� status ��</a></h2>
2132
<p><b>mcpp</b> ��λ���˿ƥץ��������֤��ͤ� internal.H �Ȥ����إå����������Ƥ��ޤ������顼���ʤ��ä����� 0 ���֤������顼�����ä����� errno != 0 �ʤ� errno �� errno == 0 �ʤ� 1 ���֤��ޤ���</p>
2135
<h2><a name="4.2" href="#toc.4.2">4.2. Include directory �Υ������ѥ�</a></h2>
2136
<p>#include directive �� include ����ե�����ϼ��ν���ǥ���������ޤ���</p>
2138
<li>#include �ǥ��쥯�ƥ��֤ΰ����� "file-name" �ޤ��� <file-name> �η��Ǥʤ���硢���줬�ޥ����Ǥ���Ф����Ÿ�����롣���η�̤� "file-name", <file-name> �Τɤ��餫�η��Ǥʤ���Фʤ�ʤ��������Ǥʤ����ϥ��顼�Ȥʤ롣<br>
2140
<li>"file-name" �η��Ǥ� <file-name> �η��Ǥ� file-name ���ե�ѥ��ꥹ�ȤǤ���С����Τޤޥ����ץ롣�����ץ�Ǥ��ʤ���Х��顼�Ȥ��롣<br>
2142
<li>�ե�ѥ��ꥹ�ȤǤʤ��� "file-name" �η��Ǥ���С����Υǥ��쥯�ȥ�ʤ�������Хѥ��ˤȲ�ᤷ�ƥ��������롣-I1 ���ץ����Ǥ� 3.1��-I2 �Ǥ� 3.2��-I3 �ǤϤ��������ʤ��ν�ǡˤȤʤ롣�ǥե���ȤǤϡ�UNIX �Ϥν�����, GCC, Visual C �ѤǤ� 3.2������¾�Ǥϸ�§�Ȥ��� 3.1 �Ǥ��롣��������Borland C �ǤǤϡ�BC 4 �ޤǤ� 3.1��BC 5 �� 3.1+3.2�Ǥ��롣�����ȯ���Ǥ��ʤ���С�<file-name> �η���Ʊ�ͤΥ������롣Compiler-independent �ǤǤ� 3.2 �Ǥ��롣<br>
2144
3.1. �����ȥǥ��쥯�ȥ�ʤ������ <b>mcpp</b> ��ư���Ρˡ�#include ���ͥ��Ȥ���Ƥ��Ƥ⡢��˥����ȥǥ��쥯�ȥ����Ȥ��롣<br>
2145
3.2. �������ե�����ʥ��롼�ɸ��ˤΤ���ǥ��쥯�ȥꡣ#include ���ͥ��Ȥ���Ƥ����硢�إå��ե����뤬�̥ǥ��쥯�ȥ�ˤ���ȡ����Τ��Ӥ˴�ब����Ƥ椯��<br>
2147
<li>�ե�ѥ��ꥹ�ȤǤʤ��� <file-name> �η��Ǥ���С����Υǥ��쥯�ȥ�������롣�����Υǥ��쥯�ȥꤽ�Τ�Τ����Хѥ��ǻ��ꤵ��Ƥ�����ϡ������ȥǥ��쥯�ȥ꤫������Хѥ��Ȳ�᤹�롣�������ˤ��٤ƥ��������Ƥ�ե�������ץ�Ǥ��ʤ���Х��顼�Ȥ��롣<br>
2149
4.1. <b>mcpp</b> ��ư���� -I <directory> ���ץ����ǻ��ꤵ�줿�ǥ��쥯�ȥꡣʣ������л��ꤵ�줿��ˡʺ�����˥��������롣<br>
2150
4.2. GCC �ǤǤ� -isystem ���ץ����ǻ��ꤵ�줿�ǥ��쥯�ȥꡣʣ������л��ꤵ�줿��ˡʺ�����˥��������롣<br>
2151
4.3. �Ķ��ѿ��ǻ��ꤵ�줿�ǥ��쥯�ȥꡣ���δĶ��ѿ���̾���ϡ�noconfig.H (configed.H) �� <i>ENV_C_INCLUDE_DIR</i> ���������Ƥ��롣C++ �Ǥ� <i>ENV_CPLUS_INCLUDE_DIR</i> ���������Ƥ���Ф��δĶ��ѿ�����˻Ȥ��롣GCC �ǤǤ� C_INCLUDE_PATH��C++ �Ǥ� CPLUS_INCLUDE_PATH ��ˡ�����¾�Ǥ� INCLUDE��C++ �Ǥ� CPLUS_INCLUDE ��ˤ�ǥե���ȤδĶ��ѿ�̾�Ȥ��Ƥ��롣�Ķ��ѿ���ʣ���Υǥ��쥯�ȥ꤬ separator �Ƕ��ڤäƻ��ꤵ��Ƥ���С�������ǽ�Τ�Τ����˥����������separator �� Windows �Ǥ� ;������¾�Ǥ� :�ˡ�<br>
2152
4.4. noconfig.H (configed.H) �Υޥ��� <i>CPLUS_INCLUDE_DIR?</i> ��������줿 implementation-specific �ʥǥ��쥯�ȥꡣ<br>
2153
4.5. system.c �� set_sys_dirs() �ǻ��ꤵ�줿 site-specific �ʥǥ��쥯�ȥ�(UNIX �ϤǤ� <samp>/usr/local/include</samp>)��<br>
2154
4.6. noconfig.H (configed.H) �Υޥ��� <i>C_INCLUDE_DIR?</i> ��������줿 implementation-specific �ʥǥ��쥯�ȥꡣ<br>
2155
4.7. system-specific �ʥǥ��쥯�ȥ��UNIX �ϤǤ� <samp>/usr/include</samp>�ˡ�<br>
2157
<p>�ǥ��쥯�ȥ�ο��Ͼ嵭�Τ��٤Ƥ��碌�� system.H ���������Ƥ��� <i>NINCLUDE</i> ����Ǥʤ���Фʤ�ޤ���-I- (GCC �Ǥ� -nostdinc��Visual C �Ǥ� -X) ���ץ�������ꤹ��ȡ��嵭�� 4.4 �ʹߤΥ������ϹԤ��ޤ���</p>
2158
<p>�ѥ��δ����ȥǥ��쥯�ȥ�Ȥ���Τϡ�ANSI C Rationale �ǤϰѰ���Ρְտ� (intent)�פǤ���Ȥ���Ƥ��ޤ������ǥ��쥯�ȥ꤬ư�����Ȥ��ʤ����ͤ����ΤʤΤǡ��������Ȼפ��ޤ�����������UNIX �Ϥν��������Ǥϡ����ʤ��Ȥ� #include "header" �η����Ǥ� include ���Υ������ե�����Τ���ǥ��쥯�ȥ����Ȥ��뽬��������褦�Ǥ���<b>mcpp</b> �� compiler-independent �ǤǤ������˽��äƥ������ե�����Υǥ��쥯�ȥ����Ȥ��ޤ�����</p>
2161
<h2><a name="4.3" href="#toc.4.3">4.3. Header name �ι���ˡ</a></h2>
2162
<p>Header-name �Ȥ��� pp-token �ι���ˡ�ȡ���������ºݤ� include file �Υե�����̾����Ф���ˡ�ϡ������̤�Ǥ���</p>
2164
<li>���������ʸ�����ƥ��η����ǽ�Ƥ���С�����Τޤ� header-name �Ȥ��롣��������˥ޥ����ǽ�Ƥ��ơ������Ÿ��������̤�ʸ�����ƥ��ˤʤä����⡢Ʊ�ͤǤ��롣ʸ�����ƥ��η����� header-name �Ǥϡ�ñ�ˤ���ξü�� " ��Ȥä���Τ�ե�����̾�Ȥ��롣<br>
2165
<li>��������� <filename> �η��ǽ�Ƥ���С�����Τޤ� header-name �Ȥ��롣��������˥ޥ����ǽ�Ƥ��ơ������Ÿ��������̤� <filename> �η��ˤʤä����⡢Ʊ�ͤǤ��롣�ޥ������ space ��ʣ���� spaces �Ĥ� space �˰��̤��������¸����롣ñ��ξü�� <, > ��Ȥä���Τ�ե�����̾�Ȥ��롣<br>
2166
<li>�ɤξ��Ǥ⡢Windows �Ǥ� path-delimiter �Ȥ��� \ �� / ��Ȥ��뤬��\ �� / ���Ѵ����롣<br>
2167
<li>Windows �Ǥϥե�����̾�������ʸ���Ϥ��٤ƾ�ʸ�����Ѵ����롣<br>
2171
<h2><a name="4.4" href="#toc.4.4">4.4. #if ����ɾ��</a></h2>
2172
<p>#if ����ɾ���ϥۥ��Ƚ����ϡ�<b>mcpp</b> ��ѥ��뤷�������ϡˤȥ������åȽ����ϡ�<b>mcpp</b> ��Ȥ������ϡˤ����ĺ�����������ˤ�äƷ�ޤ�ޤ��������η����ۤʤ���ϡ��������ۤ��η��� #if ���η��ˤʤ�ޤ���Compiler-independent �Ǥ� <b>mcpp</b> �Ǥϥ������åȽ����Ϥ�¸�ߤ��ʤ��Τǡ��ۥ��Ƚ����Ϥˤ�äƷ�ޤ�ޤ���</p>
2173
<p>pre-Standard �⡼�ɤǤ� #if ���� (signed) long ������ɾ�����ޤ���</p>
2174
<p>long long ������ʤ������Ϥ� Standard �⡼�ɤǤϡ�long ����� unsigned long �ǹԤ��ޤ���</p>
2175
<p>long long ����Ľ����Ϥ� Standard �⡼�ɤǤϡ�#if ���� long long / unsigned long long ��ɾ�����ޤ���C90, C++98 �Ǥ� long / unsigned long ��ɾ������Τ�����Ǥ�����<b>mcpp</b> �Ǥ� C90, C++98 �Ǥ� long long / unsigned long long ��ɾ������long / unsigned long ���ϰϤ�Ķ������ϥ������˥�Ф��ޤ���*1</p>
2176
<p>Visual C, Borland C 5.5 �Ǥ� long long �Ϥ���ޤ��������Ʊ�������� __int64 �Ȥ�����������Τǡ�#if ���� __int64 / unsigned __int64 ��ɾ�����ޤ��ʤ�������Visual C++ 2002 �ޤǤ� Borland C 5.5 �Ǥ� LL, ULL �Ȥ��� suffix ���Ȥ��ʤ��Τǡ������� suffix �� #if �ԤǤϻȤ��뤬�Ϥ�ʸ�ǻȤäƤϤ����ʤ��ˡ�</p>
2177
<p>�ޤ���-+ ���ץ����� C++ �Υץ�ץ���������ϡ�#if ����� true, false �Ȥ��� pp-token ���ͤϤ��줾�� 1L, 0L ��ɾ�����ޤ���</p>
2178
<p>Standard �⡼�ɤǤζ���Ū��ɾ���Τ������ʲ����������ޤ���long long ������ʤ������Ϥξ��ϡ��ʲ��� 4.4, 4.5 �ε��ܤϤ��٤ơ�long long / unsigned long long �줾�� long / unsigned long ���ɤ��ؤ��Ƥ���������Pre-Standard �⡼�ɤǤϤ��٤� long ���ɤ��ؤ��Ƥ���������</p>
2180
<li>�ġ�����������ȡ������ʸ�������ޤ�ˤϡ����ͥȡ������������ U ���դ��Ƥ���� unsigned long long ��ɾ�������pre-Standard �⡼�ɤǤ������� U ��ǧ�Τ��ʤ��ˡ�<br>
2181
<li>�����Ǥʤ���С�long long ��������ϰϤˤ����ޤ�� long long ��ɾ�����롣<br>
2182
<li>�����Ǥʤ��� unsigned long long ���ϰϤ������ unsigned long long ��ɾ�����롣<br>
2183
<li>�����ۤ����ͤ� out of range �Υ��顼�Ȥ��롣<br>
2184
<li>���黻����黻���Τɤ��餫�����ʤ��Ǥ�������ʤ��ǡ�
2185
�����Ǥʤ�������Ĥ��ǹԤ���<br>
2187
<p>�ɤ���ˤ��Ƥ���������ȡ�����Ͼ��������ͤ�Ȥ�ޤ���<br>
2188
pre-Standard �⡼�ɤǤ���������ȡ������ɾ��������� long ���ϰϤǹԤ��������ۤ����ͤ� out of range �Ȥ��ޤ������α黻�⤹�٤� long �ǹԤ��ޤ���</p>
2189
<p>�ޤ����ۥ��Ȥ� unsigned long long �Τۤ����������åȤ����ϰϤ��������ϡ������Ķ�����ͤ� out of range �Ȥʤ�ޤ���<br>
2190
���Ʊ�Τα黻��̤��ϰϳ��Ȥʤä����ϡ�long long �Ǥ� out of range �Υ��顼�Ȥʤꡢunsigned long long �Ǥϥ������˥��Фޤ����黻����ַ�̤ˤĤ��Ƥ�Ʊ�ͤǤ���</p>
2191
<p>����α��ӥåȥ��եȤ������ޤ��껻�ˤϰܿ������ʤ��Τǡ��������˥�Ф��ޤ������ʤ��������Ĥ����κ���黻�ˤ�ä����Ĥ���������ͤ����ʤ����������ͤ��Ѵ����줿���⡢�������˥�Ф��ޤ����ºݤα黻�ϡ��ۥ��Ƚ����ϤΥ���ѥ������Τλ��ͤ˽����ޤ���</p>
2192
<p>C90, C++98 �Ǥϥץ�ץ������Ǥ� #if ����ɾ���Ϥ��٤� long / unsigned long �ǡ�C99 �ǤϤ��ν����Ϥκ�����������ǡ˹Ԥ����ȤˤʤäƤ��ޤ���<b>mcpp</b> �Ǥ� C90, C++98 �Ǥ� long long / unsigned long long ��ɾ������long / unsigned long ���ϰϤ�Ķ������ϥ������˥�Ф��ޤ����ɤ���ˤ��Ƥ⡢����ѥ������ΤǤ� if (expression) ��ɾ���λ��������礶�äѤʤ�ΤǤ�������ĥ���ط�������ˤϡ�����ѥ������ΤȤϰ㤦��̤ˤʤ뤳�Ȥ������ˤ��Ƥ���ޤ���</p>
2193
<p>�ޤ���Standard C �Υץ�ץ������Ǥ� keyword �Ȥ�����Τ�¸�ߤ��ʤ��Τǡ�sizeof �䥭�㥹�ȤϻȤ��ޤ���������ѿ�������������ư���������ϻȤ��ޤ���Standard �⡼�ɤǤ� #if ���� defined �黻�Ҥ��Ȥ���#elif �ǥ��쥯�ƥ��֤�Ȥ��ޤ������Ȥϥ���ѥ������ΤǤ� if (expression) ��Ʊ�ͤˡ��Ʊ黻�Ҥ�ͥ���̤ȥ��롼�ԥ�§�ʤ������絬§�ˤ˽��ä�ɾ�����Ԥ��ޤ�������黻�Ҥ�¿���Ǥϡ�ξ�դ�Ʊ���ˤ��뤿��λ����Ѵ����Ԥ�졢������ unsigned long long �ξ���¾���� long long �Ǥ��äƤ� unsigned long long ���Ѵ�����ޤ���</p>
2195
<p>*1 <b>mcpp</b> V.2.5 �ޤǤ� C90, C++98 �Ǥ�����Ū�ˤ� long long
2196
/ unsigned long long ��ɾ�����ʤ��顢long / unsigned long ���ϰϤ�Ķ������ϥ��顼�Ȥ��Ƥ�������V.2.6 ����� GCC �� Visual C �Ȥθߴ����Τ���˥��顼�����˥˳ʲ���������</p>
2199
<h2><a name="4.5" href="#toc.4.5">4.5. #if ���Ǥ�ʸ�������ɾ��</a></h2>
2200
<p>#if ��������ȡ�����Ȥ��Ƥϼ��̻ҡʥޥ�������ޥ����ˡ������ο��ͥȡ�����ʸ�����������ޤ��������Τ���ʸ�������ɾ���λ����ϤۤȤ�� implementation-defined �Ǥ��ꡢportability �Ϥ��ޤꤢ��ޤ���#if 'const' �� compiler-proper �Ǥ� if ('const') �Ȥδ֤Ǥ������̤��㤦��礬����ޤ���Standard C �Ǥ⡢���줬Ʊ���Ǥ��뤳�Ȥ��ݾڤ���Ƥ��ʤ��ˡ�</p>
2201
<p><i>POSTSTD</i> �⡼�ɤǤϤ��ΤۤȤ�ɰ�̣�Τʤ� #if �����ʸ�������ɾ���ϹԤ��ޤ���ʥ��顼�Ȥʤ�ˡ�</p>
2202
<p>ʸ�������ɾ����¾����������ȡ������Ʊ�ͤˡ�long long, unsigned long long ���ϰϤǾ�������ͤ�ɾ�����ޤ���pre-Standard �⡼�ɤǤ� long ���ϰϤǤ���</p>
2203
<p>Single character �Ǥʤ� multi-byte character ����� wide character �ϡ�encoding �� UTF-8 �ξ��ϣ��Х��ȡ�����ʳ��ǤϤ��٤ƣ��Х��Ȥη���ɾ�����ޤ���UTF-8 �ϥ����������ѤʤΤǡ����Х��Ȥη���ɾ�����ޤ���EUC-JP �Σ��Х��� encoding �ˤ��б����Ƥ��ޤ���ʣ��Х���ʸ���ϣ��Х��ȡܣ��Х��ȤΣ�ʸ���Ȥ���ǧ������롣���η�̡��ͤ�������ɾ������뤳�Ȥˤʤ�ˡ����Х��Ȥ� encoding �Ǥ���ʤ��顢wchar_t �����Х��Ȥη��Ǥ�������Ϥ⤢��ޤ�����<b>mcpp</b> �� wchar_t �ˤϴ��Τ��ޤ��ʲ��Ǥϣ��Х��Ȥ� multi-byte character encoding �ξ��ˤĤ����������ޤ���</p>
2204
<p>'��' �Ȥ����褦�� multi-byte character constant �� ((���Х����ܤ��� << 8) + ���Х����ܤ���) ��ɾ�����ޤ���8 �� <limits.h> �� <tt>CHAR_BIT</tt> ���͡ˡ�</p>
2205
<p>'ab', '\x12\x3', '\x123\x45' �Ȥ����褦�� multi-character character constant �Ǥϡ�'a', 'b', '\x12', '\x3', '\x123', '\x45' ���줾�죱�Х��ȤȤ��� [0, 0xFF] ���ϰϤ�ɾ���������η�̤��̥Х��Ȥ���缡 8 ���ĺ����եȤ����ʤ������Ƥ椭�ޤ���0xFF �� <limits.h> �� <tt>UCHAR_MAX</tt> ���͡ˡ����Ĥ� escape sequence ���ͤ� 0xFF ��Ķ�������ϡ�out of range �Υ��顼�Ȥʤ�ޤ����������äơ�ʸ�����åȤ� ASCII �Ǥ���С����Σ��ĤΥȡ�������ͤϤ��줾�� 0x6162, 0x1203, ���顼�Ȥʤ�ޤ���</p>
2206
<p>L'��' �� '��' ��Ʊ���ͤȤʤ�ޤ���L'ab', L'\x12\x3', L'\x123\x45' ���� multi-character wide character constant �ˤĤ��Ƥϡ�L'a', L'b', L'\x12', L'\x3', L'\x123', L'\x45' �줾�죱�Ĥ� wide character �Ȥ��� [0, 0xFFFF] ���ϰϤ�ɾ���������η�̤��̤� wide character ����缡 16 ���ĺ����եȤ����ʤ������Ƥ椭�ޤ������Ĥ� escape sequence ���ͤ����Х������ʤ������κ����ͤ�Ķ�������ϡ�out of range ���顼�Ȥʤ�ޤ����������äơ�ʸ�����åȤ� ASCII �Ǥ���С����Σ��ĤΥȡ�������ͤϤ��줾�� 0x00610062, 0x00120003, 0x01230045 �Ȥʤ�ޤ���</p>
2207
<p>Multi-character character constant, multi-character wide character constant ���ͤ� unsigned long long ���ϰϤ�Ķ�������� out of range ���顼�Ȥʤ�ޤ���</p>
2208
<p><tt>__STDC_VERSION__</tt> �ޤ��� <tt>__cplusplus</tt> ���ͤ� 199901L �ʾ�ξ��ϡ�\uxxxx, \Uxxxxxxxx �η��� UCN (universal-character-name) ���� escape sequence �Ȥ���ɾ�����ޤ��ʤ�������ɾ���Ƥⲿ�ΰ�̣��ʤ���������������ɾ�����뤷���ʤ��ΤǤ���ˡ�</p>
2209
<p>�������åȽ����ϤΥ���ѥ������Τ� char �� wchar_t ����椢��ξ��ϡ�#if ���Ǥ�ʸ�������ɾ���ȥ���ѥ������ΤǤ� if (expression) �ˤ��ʸ�������ɾ���Ȥϡ���̤���äƤ��뤳�Ȥ�����ޤ����ϰϥ��顼�Ȥʤ��ϰϤ�㤦��ǽ��������ޤ����ޤ���multi-character character constant, multi-byte character constant ��ɾ���ϡ��ץ�ץ����å������Ǥʤ�����ѥ������ΤǤ�����Ϥˤ�äƤޤ��ޤ��Ǥ���<tt>CHAR_BIT</tt> �����Ǥ��äƤ⡢'ab' �� 'a' * 256 + 'b' ��ɾ�����뤫������Ȥ� 'a' + 'b' * 256 ��ɾ�����뤫�����⡢Standard C �ǤϷ����Ƥ��ޤ���</p>
2210
<p>���̤ˡ�#if ���Ǥ�ʸ������Ϥ����������ʤ�����¤�ϻȤ��٤��ǤϤ���ޤ������������ʤ��ʤ����Ȥ����Τϡ���ˤϻפ��դ��ޤ���</p>
2213
<h2><a name="4.6" href="#toc.4.6">4.6. #if sizeof (type)</a></h2>
2214
<p>Standard C �Ǥϥץ�ץ������ϼ¹Ի��Ķ��䥳��ѥ������Τλ��ͤ�����Ω����ʸ���̤�Υץ�ץ������Ȥ��Ƶ��꤬���Τˤ��졢���η�̡�#if �ԤǤ� sizeof �ȥ��㥹�ȤϻȤ��ʤ����Ȥˤʤ�ޤ�������������pre-Standard �⡼�ɤǤ� #if �Ԥ� sizeof (type) ���Ȥ���褦�ˤʤäƤ��ޤ�������� DECUS cpp ��Ѿ����ơ������ long long, long double �ν������ɲä������μ��ä�����ΤǤ��ʤ������˥��㥹�Ȥ��������Τ��ѻ��ʤΤǡ���äƤ��ʤ�����뵤��ʤ��ˡ�</p>
2215
<p>eval.c �� <i>S_CHAR</i> ���� S_* �Ȥ����ޥ����ǤϳƷ��Υ��������������Ƥ��ޤ����������������ϤǻȤ����ϡ��⤷�ۥ��Ȥȥ������åȤȤǤ����η��ΰ������ۤʤ�ʤ顢�����ͤȤ��ƥ������åȽ����ϤΤ����η��Υ������������ͤ�ľ�ܽ�ɬ�פ�����ޤ���</p>
2216
<p><b>mcpp</b> �� #if sizeof �ˤϼ�ȴ��������ޤ���char, short, int, long, long long ��Ƭ���դ� signed, unsigned ��ñ��̵�뤷�ޤ����ޤ���sizeof (void *) �ϥ��ݡ��Ȥ��ޤ�������������Ⱦü�Ǥ���������������������ε�ǽ�Τ���� system.H �Υե饰�����䤷���ѻ��ˤ������ʤ��ΤǤ����ɤ������㥹�Ȥ⥵�ݡ��Ȥ��ʤ��Τ����� sizeof �Ϻ�����褦���Ȥ�פ��ޤ����������ä������Ǥˤ��ä���ΤʤΤǡ��㴳�μ��ä��������ǻĤ��Ƥ���ޤ���</p>
2219
<h2><a name="4.7" href="#toc.4.7">4.7. White-space sequence ���</a></h2>
2220
<p><b>mcpp</b> �� translation phase 3 �� tokenization �˺ݤ��ơ�token separator �Ȥ��Ƥ�ʣ���� white spaces �� sequence �ϡ����ԥ����ɰʳ��� one space �˰��̤��ޤ����ޤ��������� white space sequence �Ϻ�����ޤ�����Ƭ�� white spaces �� <i>POSTSTD</i> �⡼�ɤǤϺ������¾�Υ⡼�ɤǤ� one space �˰��̤�����¸���ޤ���</p>
2221
<p>������������ϥץ�ץ�����������ʳ����äǤ������θ�� phase 4 �����äơ��ޥ���Ÿ���ȥץ�ץ������ǥ��쥯�ƥ��ֹԤν������Ԥ��ޤ����ޥ���Ÿ���θ�ǤϤ��������ʣ���� spaces ���Ǥ��뤳�Ȥ�����ޤ����������space �������Ĥ������ȡ�����ѥ���η�̤ϲ����Ѥ��ޤ���</p>
2222
<p>Standard C �Ǥ� translation phase 3 �Ǥ���� one space �˰��̤��뤫�ɤ����� implementation-defined �Ȥ���Ƥ��ޤ������̾�ϥ桼���Ϥޤä������ˤ���ɬ�פϤ���ޤ���Portability ������ˤʤ�Τϡ�preprocessing directive �Ԥ� <vertical-tab> �ޤ��� <form-feed> ������������Ǥ������ξ��� Standard C �Ǥ� undefined �Ǥ���<b>mcpp</b> �ǤϤ����� space ���Ѵ����ޤ���</p>
2225
<h2><a name="4.8" href="#toc.4.8">4.8. <b>mcpp</b> �¹ԥץ������Υǥե���Ȥλ���</a></h2>
2226
<p>noconfig �ǥ��쥯�ȥ�ˤ���ƽ������Ѥκ�ʬ�ե������ makefile ��Ȥäƥǥե���Ȥ�����ǥ���ѥ��뤷������ <b>mcpp</b> �¹ԥץ������λ��ͤ��˽Ƥ����ޤ���Configure ������ץȤ�������������ƥ���ѥ��뤷������ configure �η�̤ˤ�äư�äƤ��ޤ�����OS �Ƚ����ϤΥС������Ʊ��Ǥ���С����ʤ��Ȥ⥤�롼�ɥǥ��쥯�ȥ�ʳ���Ʊ����̤ˤʤ�Ϥ��Ǥ���</p>
2227
<p>Compiler-independent �Ǥ� <b>mcpp</b> �λ��ͤˤϽ����Ϥˤ�����ϤۤȤ�ɤ���ޤ���long long ����Ľ����ϤȻ����ʤ������ϤȤǤ� #if ����ɾ���˰㤤������ޤ����ޤ���OS �ˤ����㤬��������ޤ���</p>
2228
<p><b>mcpp</b> �ˤ� compiler-independent-build �� compiler-specific-build �Ȥ����ꡢ���Τɤ���Ǥ⤤���Ĥ���ư��⡼�ɤ�����ޤ�������ˤĤ��Ƥ� <a href=#2.1>2.1</a> �Ƥ��������������Ǥ� <i>STD</i> �⡼�ɤ��濴���������ޤ���</p>
2229
<p>�����κ�ʬ�ե������ makefile �ϼ��ν������ѤΤ�ΤǤ���</p>
2232
<tr><th>FreeBSD 5.3 </th><td>GCC V.3.4</td></tr>
2233
<tr><th>VineLinux 3.2-x86 </th><td>GCC V.2.95, V.3.2, V.3.3, V.3.4</td></tr>
2234
<tr><th>openSUSE Linux 10.0</th><td>GCC V.4.0</td></tr>
2235
<tr><th>CygWIN </th><td>1.3.10 (GCC V.2.95), 1.5.18 (GCC 3.4)</td></tr>
2236
<tr><th>MinGW & MSYS </th><td>GCC 3.4</td></tr>
2237
<tr><th>WIN32 </th><td>LCC-Win32 2003-08, 2006-03</td></tr>
2238
<tr><th>WIN32 </th><td>Visual C++ 2002, 2003, 2005</td></tr>
2239
<tr><th>WIN32 </th><td>Borland C++ V.4.0, V.5.5</td></tr>
2242
<p>������⤽���ν����ϼ��Ȥǥ���ѥ��뤵��ޤ���
2244
<p>noconfig.H, system.H ����������ޥ����Τ�����
2245
���Τ�ΤϤɤν������Ѥ⤹�٤�Ʊ������ˤ��Ƥ���ޤ���</p>
2246
<p><i>DIGRAPHS_INIT</i> == <i>FALSE</i> �ǥ���ѥ��뤵��Ƥ���Τǡ�digraph �� -2 (-digraphs) ���ץ�����ͭ���Ȥʤ�ޤ���<br>
2247
<i>TRIGRAPHS_INIT</i> == <i>FALSE</i> �Ȥ��Ƥ���Τǡ�trigraph �� -3 (-trigraphs) ���ץ�����ͭ���Ȥʤ�ޤ���<br>
2248
<i>OK_UCN</i> �� <i>TRUE</i> �ˤ��Ƥ���Τǡ�C99, C++ �� UCN (universal character name) ���Ȥ��ޤ���<br>
2249
<i>DOLLAR_IN_NAME</i> �� <i>FALSE</i> �Ȥ��Ƥ��ޤ����������äơ�̾���� $ �ϻȤ��ޤ���<br>
2250
<i>OK_MBIDENT</i> �� <i>FALSE</i> �Ȥ��Ƥ���Τǡ����̻���� multi-byte-character �ϻȤ��ޤ���<br>
2251
<i>STDC</i> �� 1 �Ȥ��Ƥ���Τǡ�<tt>__STDC__</tt> �ν���ͤ� 1 �Ȥʤ�ޤ���</p>
2252
<p>�Ƽ�� translation limits �ϼ��Τ褦�ˤ��Ƥ��ޤ���</p>
2255
<tr><th><i>NMACPARS</i>�ʥޥ����ΰ����κ������ </th><td>255</td></tr>
2256
<tr><th><i>NEXP</i> ��#if ����������κ���ͥ��ȥ�٥�� </th><td>256</td></tr>
2257
<tr><th><i>BLK_NEST</i>��#if section �κ���ͥ��ȥ�٥�� </th><td>256</td></tr>
2258
<tr><th><i>RESCAN_LIMIT</i>�ʥޥ����������κ���ͥ��ȥ�٥��</th><td>64</td></tr>
2259
<tr><th><i>IDMAX</i> ��identifier ��ͭ��Ĺ�� </th><td>1024</td></tr>
2260
<tr><th><i>NINCLUDE</i>��include directory ������ </th><td>64</td></tr>
2261
<tr><th><i>INCLUDE_NEST</i>��#include �κ���ͥ��ȥ�٥�� </th><td>256</td></tr>
2262
<tr><th><i>NBUFF</i>�ʥ������κ����Ĺ��*1 </th><td>65536</td></tr>
2263
<tr><th><i>NWORK</i>�ʽ��Ϥκ����Ĺ�� </th><td>65536</td></tr>
2264
<tr><th><i>NMACWORK</i>�ʥޥ���Ÿ�����������Хåե��Υ�������</th><td>262144</td></tr>
2267
<p>���Υޥ����� OS �ˤ�äưۤʤä�����ˤ��Ƥ��ޤ���build type �ˤϴط����ޤ���</p>
2268
<p><i>MBCHAR</i> �ʥǥե���Ȥ� multi-byte character encoding��</p>
2271
<tr><th>FreeBSD, Linux </th><td>EUC_JP</td></tr>
2272
<tr><th>Win32, CygWIN, MinGW</th><td>SJIS</td></tr>
2275
<p>���Υޥ����Ͻ����Ϥˤ�äưۤʤä�����ˤ��Ƥ��ޤ���
2277
<p><i>STDC_VERSION</i> ��<tt>__STDC_VERSION__</tt> �ν���͡�</p>
2280
<tr><th>Compiler-independent, GCC 2</th><td>199409L</td></tr>
2281
<tr><th>����¾ </th><td>0L</td></tr>
2284
<p><i>HAVE_DIGRAPHS</i> ��digraphs �Τޤ��Ϥ��뤫��</p>
2287
<tr><th>Compiler-independent, GCC, Visual C</th><td><i>TRUE</i></td></tr>
2288
<tr><th>����¾ </th><td><i>FALSE</i></td></tr>
2291
<p><i>EXPAND_PRAGMA</i> ��C99 �� #pragma �Ԥΰ�����ޥ���Ÿ�����뤫��</p>
2294
<tr><th>Visual C</th><td><i>TRUE</i></td></tr>
2295
<tr><th>����¾ </th><td><i>FALSE</i></td></tr>
2298
<p>GCC 2.7-2.95 �Ǥ� <tt>__STDC_VERSION__</tt> �� 199409L �ȤʤäƤ��ޤ�������3.*, 4.* �Ǥ� <tt>__STDC_VERSION__</tt> �ϥǥե���ȤǤϻ���������줺���¹Ի����ץ����˱�������������褦�ˤʤ�ޤ�����<b>mcpp</b> �� GCC �Ѥ�����Ϥ�����б�������ΤǤ���</p>
2299
<p><i>STDC_VERSION</i> �� 0L �Τ�ΤǤϡ�<tt>__STDC_VERSION__</tt> �ϥǥե���ȤǤ� 0L �� pre-define ����ޤ���-V199409L ���ץ����� <tt>__STDC__</tt> �� 1 �� <tt>__STDC_VERSION__</tt> �� 199409L����������ޥ����� '_' �ǻϤޤ��Τ����Ȥ�������̩�� C95 �⡼�ɤȤʤ�ޤ����ޤ���-V199901L ���ץ����� C99 �⡼�ɤȤʤ�ޤ���</p>
2300
<p>C99 �⡼�ɤǤ� <tt>__STDC_HOSTED__</tt> �� 1 �� pre-define ����ޤ���<tt>__STDC_ISO_10646__</tt>, <tt>__STDC_IEC_559__</tt>, <tt>__STDC_IEC_559_COMPLEX__</tt> �� <b>mcpp</b> ���Ȥ� pre-define ���ޤ������ϤΥ����ƥ�إå���Ǥ���ޤ����ºݤˤϡ�glibc 2 / x86 �Υ����ƥ�Ǥϥ����ƥ�إå��ˤ�ä� <tt>__STDC_IEC_559__</tt>, <tt>__STDC_IEC_559_COMPLEX__</tt> �� 1 ��������졢¾�ν����ϤǤϤɤ���������ޤ���</p>
2301
<p><i>HAVE_DIGRAPHS</i> �� <i>FALSE</i> �Τ�ΤǤϡ�digraph ��������Ƥ��ʤ������ϡˡ�digraph �� <b>mcpp</b> ���̾�� token ���Ѵ�����Ƥ�����Ϥ���ޤ���</p>
2302
<p><i>EXPAND_PRAGMA</i> �� <i>TRUE</i> �Ǥ��äƤ⡢STDC, MCPP, GCC �Τɤ줫�ǻϤޤ� #pragma �Ԥϥޥ���Ÿ�����ޤ���</p>
2303
<p>Include �ǥ��쥯�ȥ�ϼ��Τ褦�����ꤷ�Ƥ���ޤ���<br>
2304
�ޤ���UNIX ���Ǹ��������� system-specific �ʤ�Τ���� site-specific �ʤ�Τϼ����̤�Ǥ�������� compiler-independent �ǤǤ�Ʊ���Ǥ���</p>
2307
<tr><th>FreeBSD, Linux, CygWIN</th><td>/usr/include, /usr/local/include</td></tr>
2310
<p>�����Ϥ䤽�ΥС������ˤ�äưۤʤ� implementation-specific �ʤ�ΤˤĤ��Ƥ� *.dif �ե�����Ƥ���������Compiler-independent �ǤǤϤ������������ޤ���Windows �ν����ϤǤϤ������ä����ꤻ�����Ķ��ѿ��Ȥ��ޤ����Ķ��ѿ��� INCLUDE, CPLUS_INCLUDE �Ǥ���Compiler-independent �ǤǤ�Ʊ�͡�<br>
2311
����ǤĤ�����������С�������Ѥ��� <b>mcpp</b> ��ꥳ��ѥ��뤹�뤫���Ķ��ѿ��ǻ��ꤹ�뤫��-I ���ץ����ǻ��ꤹ�뤫���Ƥ���������</p>
2312
<p><b>mcpp</b> �ϥץ�ץ�����������̤� <i>NWORK</i>-1 ��Ķ������ϡ�����ʲ���Ĺ���˹Ԥ�ʬ�䤷�ƽ��Ϥ��ޤ���ʸ�����ƥ���Ĺ���� <i>NWORK</i>-2 �ʲ��Ǥʤ���Фʤ�ޤ���</p>
2313
<p>ǰ�Τ���˷����֤��ޤ������ʾ�� <i>italic</i> ��ɽ������Ƥ���ޥ����Ϥ������ <b>mcpp</b> ��ѥ��뤷�����Τ�ΤǤ��ꡢ<b>mcpp</b> �μ¹ԥץ�����ब���äƤ����Ȥ߹��ߥޥ����ǤϤ���ޤ���</p>
2314
<p>���ϥե��������ꤻ���� <b>mcpp</b> ��ư���ơ�#pragma MCPP put_defines ���Ǥ�����ȡ��Ȥ߹��ߥޥ����ΰ�����ɽ������ޤ���</p>
2315
<p><tt>__STDC__</tt> �� 1 �ʾ�ξ��֤Ǥϡ�_ �ǻϤޤ�ʤ��Ȥ߹��ߥޥ����Ϻ������ޤ���-N (-undef) ���ץ����Ǥ� <tt>__MCPP</tt> �ʳ������٤ƺ������ޤ������ξ�� -D ���ץ��������ꤷľ���Ƥ⤫�ޤ��ޤ������ϤΥС���������㤦������ include directory �����ʤ����ϡ�<b>mcpp</b> ��ꥳ��ѥ��뤷�ʤ��Ƥ⡢������ˡ�ǥС������ޥ������������뤳�Ȥ��̥С��������б������뤳�Ȥ��Ǥ��ޤ���-N �� -U ��Ȥ�ʤ��Ƥ⡢-D ������Υޥ���������������뤳�Ȥ��Ǥ��ޤ���</p>
2316
<p>-+ (-lang-c++) ���ץ����� C++ �Υץ�ץ���������ꤷ�����ϡ�<tt>__cplusplus</tt> �������������ޤ��������ν���ͤ� 1L �Ǥ������Τۤ��ˤ���ˤ����Ĥ��Υޥ����������������ޤ���</p>
2317
<p>GCC �Ǥ� V.3.2 �ޤǤϻ�������ޥ����ȸ��äƤ� GCC ��������������ΤϾ��ʤ���¿���� gcc ���� cpp �� -D ���ץ������Ϥ�����ΤǤ���������Ȥθߴ����Τ���ˤ� <b>mcpp</b> ���������ɬ�פϤʤ��ΤǤ�����<b>mcpp</b> ���"pre-preprocess" ���ǡ�ñ�Τ�ư���������ص��Τ���� <b>mcpp</b> ���������Ƥ��ޤ���<br>
2318
GCC V.3.3 �ʹߤ�������60 �Ĥ��� 70 �ĤΥޥ�����������������褦�ˤʤ�ޤ�����<b>mcpp</b> V.2.5 �ʹߤǤ� GCC �����ǤǤϤ��ʤ�����������Ǥ��ޤ����������äơ�GCC V.3.3 �ʹ��Ѥ� <b>mcpp</b> �ǤϾ嵭�Τۤ���¿���Υޥ����������������ޤ����������Ƥ� <b>mcpp</b> �ȡ��뤹�������������� mcpp_g*.h �Ȥ����إå��ե�����Ǥ狼��ޤ���</p>
2319
<p>FreeBSD, Linux, CygWIN, MinGW / GCC, LCC-Win32 �� long long ����äƤ���Τǡ�#if ���� long long, unsigned long long ��ɾ�����ޤ���Visual C, Borland C 5.5 �Ǥ� long long �Ϥ���ޤ���__int64, unsigned __int64 �Ȥ�����������ΤǤ����Ȥ��ޤ���Borland C 4.0 �Ǥ� long long �� __int64 ��ʤ��Τǡ�#if ���� long, unsigned long ��ɾ�����ޤ���</p>
2320
<p>�����ν����ϤǤ� long ���ϰϤϤ������</p>
2322
[-2147483647-1, 2147483647] ([-0x7fffffff-1, 0x7fffffff])
2324
<p>�Ǥ���unsigned long
2327
[0, 4294967295] ([0, 0xffffffff])
2331
<p>long long ����Ľ����ϤǤϤ������ long long
2334
[-9223372036854775807-1, 9223372036854775807]
2335
([-0x7fffffffffffffff-1, 0x7fffffffffffffff])
2337
<p>�ǡ�unsigned long long
2340
[0, 18446744073709551615] ([0, 0xffffffffffffffff])
2344
<p>�����ν��������ΤǤϤ���������Ĥ�������������ɽ���ϣ�������Ǥ��ꡢ
2345
�ӥåȱ黻�⤽����б����Ƥ���Τǡ�<b>mcpp</b> �� #if ���Ǥ�Ʊ�ͤǤ���<br>
2346
��������α����եȤϤ������ѥ��եȤǤ��ꡢ<b>mcpp</b> �� #if ���Ǥ�Ʊ�ͤǤ��ʣ��ӥåȤα����եȤ��ͤ����Ĥ��Τޤ� 1/2 �ˤʤ�ˡ�<br>
2347
�����ν�������;���� operand �������ޤ�����������Ǥ�����Ϥ������ Standard C �� ldiv() �ؿ���Ʊ�����Ū�黻���Ԥ���Τǡ�<b>mcpp</b> �� #if ���Ǥ�Ʊ�ͤǤ���</p>
2348
<p>�����Υ����ƥ�ʣϣӡˤǤϤ���������ʸ�����åȤ� ASCII �ʤΤǡ�<b>mcpp</b> �Ǥ�Ʊ�ͤǤ���</p>
2349
<p>�䤬�� kmmalloc �Ȥ�����������롼�����ꡢmalloc(), free(), realloc() ����ޤ�Ǥ��ޤ�����CygWIN, Visual C 2005 �ʳ��ǤϤ��줬���ȡ��뤵��Ƥ�����ϡ�make ������� MALLOC=KMMALLOC�ʤޤ��� -DKMMALLOC=1�ˤȤ������ץ�������ꤹ��Ȥ��줬 link ����ޤ����ҡ��ץ���ΥǥХå��ѥ롼����������褦�ˤʤäƤ��ޤ���errno ���ֹ� <i>EFREEP</i>, <i>EFREEBLK</i>, <i>EALLOCBLK</i>, <i>EFREEWRT</i>, <i>ETRAILWRT</i> �ˤ� Linux, LCC-Win32 �ǤϤ��줾�� 2120, 2121, 2122, 2123, 2124 ����ʳ��ǤϤ��줾�� 120, 121, 122, 123, 124 �������ƤƤ��ޤ���<a href="mcpp-porting.html#4.extra"> mcpp-porting.html#4.extra</a> ���ȡˡ�*2</p>
2350
<p>GNU �Υ����ƥप��� Visual C �ʳ��Ǥϡ��Ķ��ѿ�
2351
TZ �Ϥ��餫���� JST-9 �˥��åȤ��Ƥ���ɬ�פ�����ޤ����������ʤ��ȡ�<tt>__DATE__</tt>, <tt>__TIME__</tt> �ޥ������ͤ�����Ƥ��ޤ��ޤ���</p>
2353
<p>*1 ����� <backslash><newline> �ˤ�����³����ι�Ĺ�ˤ⡢
2354
�����Ȥ� a space ���Ѵ�������ι�Ĺ�ˤ�Ŭ�Ѥ���롣�����Ȥ�ʣ���Ԥˤޤ����äƤ����硢�����Ȥ��Ѵ��ˤ�äƤ��줬���Ԥ�Ϣ�뤵��뤳�Ȥ����ա�</p>
2355
<p>*2 CygWIN 1.3.10, 1.5.18 �Ǥ� malloc() �� _malloc_r() ���Ȥ��ä������롼�����ꡢ¾�Υ饤�֥��ؿ��ˤϤ�����ƤӽФ���Τ������Ĥ����롣���Τ��ᡢ¾�� malloc() ��Ȥ����Ȥ��Ǥ��ʤ���Visual C 2005 �Ǥ⡢�ץ�����ཪλ�����Υ롼���� Visual C �� malloc() �������롼�����ƤӽФ��Τǡ���Ϥ�¾�� malloc() ��Ȥ����Ȥ��Ǥ��ʤ���</p>
2358
<h1><a name="5" href="#toc.5">5. ���ǥ�å�����</a></h1>
2360
<h2><a name="5.1" href="#toc.5.1">5.1. ���ǥ�å������η���</a></h2>
2361
<p><b>mcpp</b> ���Ф����ǥ�å������Ȥ��ΰ�̣�ϡ��ʲ����̤�Ǥ������ǥ�å������Ϥ������ɸ�२�顼���Ϥ˽��Ϥ��졢-Q ���ץ����ǥ����ȥǥ��쥯�ȥ���� mcpp.err �Ȥ����ե�����˥�����쥯�Ȥ���ޤ���</p>
2362
<p>���ǥ�å������ϼ��η���ȤäƤ��ޤ���</p>
2364
<li>"filename:line: " �� "fatal error: ", "error: ", "warning: " �Τɤ줫��³��������� 5.3 - 5.9 �Υ�å������Τ����Τɤ줫��³����"filename:line: " �˻Ϥޤ룱�Ԥο��ǥ�å������Ȥ����ΤϤ�����������ʻ��ͤǤ��뤬��UNIX ��Σý����ϤǤ�����Ū�ʿ��Ƿ����ǡ��Ƽ�Υġ��뤬���������Ȥ��Ƥ���ΤǺ��Ѥ��Ƥ��롣���̾�Σ��Ԥˤ����ޤ�ʤ����Ȥ����Ф��Ф��롣<br>
2365
<li>�ޥ���Ÿ����Ǥ���С����Υޥ����ƤӽФ���ɽ������롣�ͥ��Ȥ��줿�ޥ����ƤӽФ��Ǥ���С����줾��Υޥ���̾��ɽ������롣���Υޥ��������ɽ�����졢���Υޥ�������Τ��륽�����ե�����̾�ȹ��ֹ��ɽ������롣<br>
2366
<li>�������ե�����̾�ȹ��ֹ�Ȥ��ιԤ�ɽ������롣�ե����뤬 include ���줿��ΤǤ���С�include ���Υե������̾���ȹ��ֹ�ȹԤ��缡ɽ������롣<br>
2368
<p>ɽ�������Ԥ��̾�ϡ��������Ρ�ʪ���ԡפ������� \ �ˤ�ä���³���줿���ȤΡ������ԡפ��餵��˥����Ȥ� a space ���Ѵ�������Τ�ΤǤ��ꡢ�����Ȥ��Ԥ�ޤ����Ǥ������ʣ���������Ԥ�Ϣ�뤵�줿��ΤȤʤ롣���ֹ��Ϣ�뤵�줿�Ǹ��ʪ���Ԥ��ֹ�Ǥ��롣�������������Ƚ����������� translation phase �ǤΥ��顼���Ǥϡ����� phase �ιԤ�ɽ������롣</p>
2369
<p>��������-j ���ץ�������ꤷ�����ϡ��嵭�Σ��ȣ��Ͻ��Ϥ��ޤ���</p>
2370
<p>���ǥ�å������ˤϼ��Σ��ĤΥ�٥뤬����ޤ���</p>
2373
<tr><th>fatal error</th><td>�ץ�ץ�������ʾ�³���Ƥ��̣���ʤ����</td></tr>
2374
<tr><th>error </th><td>��ʸ�����ˡ���ְ�äƤ�����</td></tr>
2375
<tr><th>warning </th><td>Portability �Τʤ�����ְ㤤�β�ǽ���Τ�����</td></tr>
2379
�ˤϤ���˼��Σ��ĤΥ��饹������ޤ���Class 1, 2 �ʳ��Ϥ���ü�ʤ�ΤǤ���</p>
2382
<tr><th>class 1 </th><td>�ְ㤤�β�ǽ���Τ��롢�ޤ��� portability ��礤��������</td></tr>
2383
<tr><th>class 2 </th><td>���ʾ�����꤬���뤬�ºݤˤϤ��֤�����Τʤ�������</td></tr>
2384
<tr><th>class 4 </th><td>�ºݤˤϤ��֤����꤬�ʤ� portability �˴ؤ��� warning</td></tr>
2385
<tr><th>class 8 </th><td>�����åפ���� #if group �䡢#if �����ɾ�����åפ�����������ˤĤ��ƤΤ����� warning</td></tr>
2386
<tr><th>class 16</th><td>trigraph, digraph �ˤĤ��Ƥ� warning</td></tr>
2389
<p><b>mcpp</b> �Ϥ�����¿��ο��ǥ�å��������Ѱդ��Ƥ��ޤ���<i>STD</i> �⡼�ɤǤϼ��Τ褦�ʼ���ˤΤܤäƤ��ޤ���</p>
2392
<tr><th>fatal error </th><td>19 ��</td></tr>
2393
<tr><th>error </th><td>72 ��</td></tr>
2394
<tr><th>warning class 1 </th><td>46 ��</td></tr>
2395
<tr><th>warning class 2 </th><td>14 ��</td></tr>
2396
<tr><th>warning class 4 </th><td>15 ��</td></tr>
2397
<tr><th>warning class 8 </th><td>30 ��</td></tr>
2398
<tr><th>warning class 16</th><td>2 ��</td></tr>
2401
<p>�����ˤĤ��ơ���§�Ȥ��Ƥ��ιԤ�����������ʬ�����Ū�˻�Ŧ���ޤ���</p>
2402
<p>�ʤ����ʲ��������Ǥϡ����ǥ�å������ǰ��Ѥ���륽������Υȡ��������ͤ���ʬ�ˤ���Ȥ��Ʋ����Υȡ������Ϥᤳ��Ǥ��ޤ������Τ��������ͤΤ����˥ޥ���̾��Ƥ���Ȥ����ϡ��ºݤˤϤ��Υޥ�����Ÿ�������ͤ�ɽ������ޤ���<br>
2403
�ޤ������ˤ�äƥ��顼�Ȥ��ƽФ��ꥦ�����˥Ȥ��ƽФ��ꤹ���å������⤢��ޤ����ʲ��������Ǥ�Ʊ��Υ�å������ˤĤ��ƤϺǽ�˵��ܤ���Ȥ����Ǥ��������ä������Ȥ�ñ�˥�å��������¤٤�����ˤ��ޤ���</p>
2404
<p>�ʤ������ǥ�å������˽ФƤ��� path-list ��ե�����̾�� Windows �Ǥ��������Τ���ˤ��٤ƾ�ʸ�����Ѵ����Ƥ��ޤ���</p>
2407
<h2><a name="5.2" href="#toc.5.2">5.2. Translation limits</a></h2>
2408
<p>�ʲ��Υ��顼����ˤϡ��Хåե��Υ����С��ե������� <b>mcpp</b> �λ��;�����¤ˤ���Τ�����ޤ����Хåե����������� translation limits �� system.H �Υޥ������������Ƥ��ޤ���ɬ�פʾ��Ϥ���������礭������ <b>mcpp</b> ��ꥳ��ѥ��뤷�Ƥ��������ʤ�����������ξ��ʤ������ƥ�Ǥϡ����ޤ���ͤ��礭������� out of memory ��ȯ�����䤹���ʤ�Τǡ��ۤɤۤɤˡˡ�</p>
2411
<h2><a name="5.3" href="#toc.5.3">5.3. Fatal error</a></h2>
2412
<p>I/O ���顼������������ץ�ץ�������ʾ�³���뤳�Ȥ��Ǥ��ʤ���硢�Хåե������С��ե��������ץ�ץ�������³���Ƥ��̣���ʤ����ˡ����Υ��顼��å��������Фơ��ץ�ץ���������ߤ��ޤ����ƥץ������ˤϡּ��ԡפξ����ͤ��֤��ޤ���</p>
2415
<h3><a name="5.3.1" href="#toc.5.3.1">5.3.1. <b>mcpp</b> ���ȤΥХ�</a></h3>
2417
<li><samp>Bug:</samp><br>
2418
���Υ�å������Ͽ��濫��ޤ������������ <b>mcpp</b> ���ȤΥХ����̣���ޤ������줬�Ф뤳�ȤϤʤ��Ȼפ��ޤ������⤷�Ф��餼�Ҥ��ξ�����Ϣ������������<br>
2421
<h3><a name="5.3.2" href="#toc.5.3.2">5.3.2. ʪ��Ū���顼</a></h3>
2423
<li><samp>File read error</samp><br>
2424
�������ե������ɤ߹��ߤΥ��顼�Ǥ����ǥ��������ե����륷���ƥब����Ǥ���ΤǤ��礦��<br>
2425
<li><samp>File write error</samp><br>
2426
���ϥե�����νФ����顼�Ǥ����ǥ��������ե����륷���ƥब����Ǥ��뤫���äѤ��ˤʤäƤ���ΤǤ��礦��<br>
2427
<li><samp>Out of memory (required size is 0x1234 bytes)</samp><br>
2428
���꤬��ʤ��ʤ�ޤ�����<b>mcpp</b> ���ҡ��פ��� 0x1234 bytes ��������褦�Ȥ��������Ǥ��ʤ��ä��ˡ�����ξ��ʤ������ƥ��Ĺ��ʥޥ�����������ޤ�ˤ�¿���������ȯ�����ޤ����������ե������ʬ�䤷�ơ�1 translation unit �Υޥ�������餷�Ƥ���������<br>
2431
<h3><a name="5.3.3" href="#toc.5.3.3">5.3.3. Translation limits �������Хåե��Υ��顼</a></h3>
2433
<li><samp>Too long header name "long-file-name"</samp><br>
2434
Include ���٤��ե�����Υѥ��ꥹ�ȡʻ���Υǥ��쥯�ȥ�Υѥ��ꥹ�Ȥ�Ϣ�뤷����Ρˤ� <i>FILENAMEMAX</i> �Υ�������Ķ���Ƥ��ޤ���<br>
2435
<li><samp>Too long source line</samp><br>
2436
��������ʪ���Ԥ�Ĺ���� <i>NBUFF</i>-2 ��Ķ���Ƥ��ޤ����äΥ������ǤϤʤ��ΤǤ��礦��<br>
2437
<li><samp>Too long logical line</samp><br>
2438
��������ʪ���Ԥ������ \ �ˤ�ä���³���������Ԥ�Ĺ���� <i>NBUFF</i>-2 ��Ķ���Ƥ��ޤ������ޤ�ˤ�Ĺ��ʥޥ����������������ȯ�����뤳�Ȥ�����ޤ������Τ褦�ʥ����ɤϥޥ����ǤϤʤ��ؿ��Ȥ��ƽ٤��Ǥ��礦��<br>
2439
<li><samp>Too long line spliced by comments</samp><br>
2440
�����Ȥ� a space ���Ѵ��������ȤιԤ�Ĺ���� <i>NBUFF</i>-2 ��Ķ���Ƥ��ޤ����Ԥ�ޤ��������Ȥˤ�ä�¿���ιԤ�Ϣ�뤷������ȯ�����ޤ��������Ȥ�ʬΥ���Ƥ���������<br>
2441
<li><samp>Too long token</samp><br>
2442
�ץ�ץ�������ιԤ� <i>NWORK</i>-2 ��Ķ����Ĺ���Υȡ����ޤޤ�Ƥ��ޤ���<b>mcpp</b> �ϥ���ѥ������Τμ��������Ĺ <i>NWORK</i> �˽��ϹԤ�ʬ�䤷�褦�Ȥ��ޤ�������ü��Ĺ���ȡ��������ʬ�䤷�Ƥ���ϤǤ��ʤ����Ȥ�����ޤ���<br>
2444
<p>���Σ��ĤΥ��顼�ϥȡ������ۤ�Ĺ���ʤ��Ƥ⡢�ޥ���Ÿ����ˤ��Υȡ�����ΤȤ����ǥХåե������С��ե����ˤʤä����ˤⵯ����ޤ������ξ��ϥޥ����ƤӽФ���ʬ�䤷�Ƥ���������</p>
2446
<li><samp>Too long quotation "long-string"</samp><br>
2447
ʸ�����ƥ�롢ʸ������ޤ��� header-name ��Ĺ�����ޤ���ʸ�����ƥ��Ǥ����ʬ�䤷�Ƥ������������ܤ���ʸ�����ƥ��� Standard C �ν����ϤǤ���Х���ѥ������Τ�Ϣ�뤷�Ƥ���ޤ���<br>
2448
<li><samp>Too long pp-number token "1234567890toolong"</samp><br>
2449
Preprocessing-number token ��Ĺ�����ޤ���Standard �⡼�ɤξ��Ǥ���<br>
2450
<li><samp>Too long number token "12345678901234......"</samp><br>
2451
Number token ��Ĺ�����ޤ���pre-Standard �⡼�ɤξ��Ǥ���<br>
2452
<li><samp>Buffer overflow scanning token "token"</samp><br>
2454
����Ƥ��뤦���˥Хåե������С��ե����Ȥʤ�ޤ�����ʸ�����ƥ�롢ʸ�������header-name��pp-number �ʳ��Υȡ�����Ǥϡ�������Υ�å��������Фޤ���<br>
2456
<li><samp>More than <i>BLK_NEST</i> nesting of #if (#ifdef) sections</samp><br>
2457
#if, #ifdef, #ifndef ���Υͥ��Ȥ� <i>BLK_NEST</i> ��Ķ���Ƥ��ޤ���<i>BLK_NEST</i> ���Υޥ���̾����ʬ�ϼºݤˤϤ����ͤ�ɽ������롣�ʲ�Ʊ�͡ˡ�#if section ��ʬ�䤷�Ƥ���������<br>
2458
<li><samp>More than <i>INCLUDE_NEST</i> nesting of #include</samp><br>
2459
#include �Υͥ��Ȥ� <i>INCLUDE_NEST</i> ��Ķ���Ƥ��ޤ���#include ��̵�ºƵ��ˤʤäƤ���ΤǤ��礦��<br>
2460
<li><samp>Too many include directories "dir"</samp><br>
2461
Include directory �λ��꤬ <i>NINCLUDE</i> ��Ķ���Ƥ��ޤ���<br>
2462
<li><samp>Too many include files</samp><br>
2463
���ܤΥ������ե�����Υץ�ץ��������
2464
#include �����إå��ե�����ο��� <i>NINCLUDE</i>*4 ��Ķ���ޤ�������ʣ���� include �����إå��ե�����ϣ��Ĥȿ����ޤ���<br>
2467
<h3><a name="5.3.4" href="#toc.5.3.4">5.3.4. #pragma MCPP preprocessed �˴ؤ��륨�顼</a></h3>
2469
<li><samp>This is not the preprocessed source</samp><br>
2470
#pragma MCPP preprocessed ������ޤ���������� <b>mcpp</b> �ˤ�äƥץ�ץ��������줿�������ե�����ǤϤ���ޤ���<br>
2471
<li><samp>This preprocessed file is corrupted</samp><br>
2472
����� <b>mcpp</b> �ˤ�äƥץ�ץ��������줿�������ե�����Τ褦�Ǥ���������Ƥ��ƻȤ��ޤ���<br>
2476
<h2><a name="5.4" href="#toc.5.4">5.4. Error</a></h2>
2477
<p>ʸˡŪ�ʴְ㤤��������ˤ��Υ��顼��å��������Фޤ���<br>
2479
C �Ǥϡ�violation of syntax rule or constraint �����ä����Ͻ����Ϥϲ��餫�ο��ǥ�å�������Ф��ʤ���Фʤ�ʤ����ȤˤʤäƤ��ޤ�����Standard �⡼�ɤǤϤ��� violation ���Ф��Ƥϸ�§�Ȥ��ƥ��顼��å��������Фޤ��������ϥ������˥Ǥ���</p>
2480
<p>�ޤ���Standard C �� undefined �Ȥ���Ƥ����Τ�¿���ˤĤ��Ƥ� error ��å������ޤ��� warning ���Фޤ���Undefined �Ǥ���ʤ��� error �� warning ��Фʤ��Τϡ����Τ�Τ����Ǥ���</p>
2482
<li>ʸ�����ƥ��η��� header name ��� ' �� /*�������ñ�ʤ�ʸ���Ȥ��ư����롣�ºݤˤϤ���ϡ��ե�������ץ褦�Ȥ��ƥ��顼�ˤʤ�Ϥ��Ǥ����<, > �ǰϤޤ줿 header name ����ǤϤ�����ʸ���������ӥ����Ȥγ��ϤȲ�ᤵ���Τǡ����餫�Υ��顼�Ȥʤ�ˡ�header name ����Ǥ� \ �� undefined �Ǥ��뤬�����������å����ʤ����ºݤˤϤ�Ϥ�ե�����Υ����ץ�ǥ��顼�ˤʤ�Ǥ�������Windows �ǤǤ� \ �� class 2 �� warning ��Ф������ / ���Ѵ����ƽ�������ˡ�<br>
2483
<li>#undef defined��defined �Ȥ���̾���� #undef ����Τ� undefined �Ǥ��뤬��<b>mcpp</b> �Ǥ� defined �Ȥ���̾���Υޥ�����������뤳�ȤϤǤ��ʤ��褦�ˤʤäƤ���Τǡ����줬���ä���뤳�Ȥ�ʤ���<br>
2484
<li>��������� illegal �� multi-byte character sequence �����ä����� undefined �Ǥ��뤬������ϼ³��Ϥʤ��Τǿ��Ǥ��ʤ���ʸ�����ƥ�롢ʸ�������header name ��� illegal multi-byte character sequence �ˤϥ������˥��Ф�ˡ�<br>
2485
<li>_ �ǻϤޤ� identifier �Ͻ����ϤΤ����ͽ��Ƥ��ꡢ�桼���ץ��������������ȷ�̤� undefined �Ǥ��뤬���ץ�ץ����å��Ǥϥ桼���ץ�����फ�����Ǥʤ�����ɬ������Ƚ�̤Ǥ��ʤ��Τǡ����Ǥ��ʤ���<br>
2486
<li>C99 �ǥ��ץ����Ȥ��Ƶ��ꤵ��Ƥ����������ޥ����Τ�����<tt>__STDC_ISO_10646__</tt>, <tt>__STDC_IEC_559__</tt>, <tt>__STDC_IEC_559_COMPLEX__</tt> �� #define ������ #undef �����ꤹ��� undefined �Ǥ��뤬�����Ǥ��ʤ��������Υޥ����Ͻ����ϤΥإå��ե�������������뤳�Ȥˤʤ�Ǥ����������ץ�ץ����å��ϥ桼���ץ�����फ�ɤ�����ɬ������Ƚ�̤Ǥ��ʤ�����Ǥ��롣<br>
2487
<li>C99 �� UCN �ˤĤ��Ƥϡ�translation phase 2 �� <backslash><newline> ����������� UCN ���������� sequence ���Ǥ�����硢�����ʸ�����ƥ���Ϣ��ˤ�ä� UCN sequence ���������줿���� undefined �Ǥ��뤬������Ͽ��Ǥ��ʤ��ʤ������ UCN �Ȥ��ư����ˡ�<br>
2489
<p>Standard C �Υץ�ץ������Ƕ���Ū�˲��� violation of syntax rule or constraint �ǡ����� undefined �Dz��� unspecified �Dz��� implementation-defined �Ǥ��뤫�ˤĤ��Ƥϡ�cpp-test.html �Ȥ��Ƥ���������</p>
2490
<p>Fatal �Ǥʤ� error ��å��������ФƤ�ץ�ץ�������³���ޤ�����λ����ȡ����顼�ο���ɽ�������ƥץ������ˡּ��ԡפξ����ͤ��֤��ޤ���</p>
2492
<h3><a name="5.4.1" href="#toc.5.4.1">5.4.1. ʸ���ȥȡ�����˴ؤ��륨�顼</a></h3>
2494
<li><samp>Illegal control character 0x1b, skipped the character</samp><br>
2495
ʸ�����ƥ�롢ʸ�������header name�������Ȱʳ��ΤȤ����� white space �ʳ��Υ���ȥ����륳���ɤ�����ޤ�������ʸ�����åפ��ƽ�����³���ޤ���<br>
2497
<p>���ϥȡ�����Υ��顼�Ǥ������Σ��ĤϤ�����⤽�ιԤ��åפ��ƽ�����³���ޤ������Σ��Ĥ�ʸ�����ƥ�����Υȡ�����ǡ������Ԥι����ޤǤ˰����䤬�Ĥ����Ƥ��ʤ����Ȥ��ޤ���</p>
2499
#error I can't understand.
2501
<p>�ʤɤȡ�preprocessing-token sequence �η��������ʤ��ƥ����Ȥ�ʸ�����ƥ��Ǥ⥳���ȤǤ�ʤ��Ȥ����˽ȡ����μ�Υ��顼�Ȥʤ�ޤ���Pre-processing-token ������Ρʥ���ѥ������ΤǤΡˣä� token ��ꤪ���ޤ��ʤ�Τǡ�ʸ���� source character set �˴ޤޤ�Ƥ�������ФۤȤ�ɤ� character sequence �����餫�� pp-token sequence �Ȥ����̤�Τǡ�preprocessing-token ���顼�Ȥʤ�ΤϤ�������Ǥ���</p>
2502
<p>�ʤ��������åפ���� #if group ����Ǥ� pp-token ���顼�ϥ��顼�Ȥʤ�ޤ���</p>
2504
<li><samp>Unterminated string literal</samp><br>
2505
ʸ�����ƥ�뤬���뤷�Ƥ��ޤ���ʸ�����ƥ��������Ԥ�ޤ������ȤϤǤ��ޤ���ɬ�פʤ顢ʣ���Ԥ�ʸ�����ƥ���ơ������Ϥˤ����Ϣ�뤵���Ƥ������������Υ��顼�� # �黻�Ҥˤ��ʸ����ȯ�����뤳�Ȥ⤢��ޤ��������ξ��ϹԤϥ����åפ��ޤ���<br>
2506
<i>OLDPREP</i> �⡼�ɤǤϤ���ϥ��顼�ˤʤ�ޤ���ʹ�������ƥ��ν����Ȥߤʤ��ˡ�<br>
2507
�ޤ���-a (-lang-asm, -x assembler-with-cpp) ���ץ����ǵ�ư���줿���ϡ��Ԥ�ޤ���ʸ�����ƥ���Ƚ�Ǥ��ơ�\n ���������Ƽ��ιԤ�Ϣ�뤹��Τǡ����顼�ˤϤʤ�ޤ���ʥ������˥ϽФ�ˡ�<br>
2508
<li><samp>Unterminated character constant 't understand.</samp><br>
2509
ʸ����������뤷�Ƥ��ޤ���<i>OLDPREP</i> �⡼�ɤǤϤ���ϥ��顼�ˤʤ�ޤ���ʹ�������ƥ��ν����Ȥߤʤ��ˡ�<br>
2510
<li><samp>Unterminated header name <header.h</samp><br>
2511
header-name �����뤷�Ƥ��ޤ���<, > �ǰϤޤ�� header-name ��� " �ޤ��� ' �����ä����Ϥ��Υ��顼�ǤϤʤ��嵭���ĤΥ��顼�Ȥʤ�ޤ����ޤ���<, > �ǰϤޤ�� header-name ��� /* �����ä����Ϥ�������夬�����ȤȲ�ᤵ��ޤ���<br>
2512
<li><samp>Empty character constant ''</samp><br>
2513
ʸ���������Ȥ�����Ǥ���<br>
2514
<li><samp>Illegal UCN sequence</samp><br>
2515
std �⡼�ɤ� <tt>__STDC_VERSION__</tt> ���ͤ�
2516
199901L �ʾ�ξ�硢�ޤ��� C++ �ξ��ϡ�UCN ��ǧ������ޤ��������̻���� \u, \U �ǻϤޤ룱���� sequence �Υ������������줾�죴�������������������Ƥ��ޤ���#if �����ʸ������Ǥ��줬�����ä��Ȥ��ϡ�Undefined escape sequence �Υ������˥Ȥʤ롣����ʳ��ξ��Ͽ��Ǥ���ʤ��ˡ�<br>
2517
<li><samp>UCN cannot specify the value "0000007f"</samp><br>
2518
UCN �ϣ����ʤ� [0, 9f], [d800, dfff] ���ϰϤ��ͤ���ꤹ�뤳�ȤϤǤ��ޤ������������ԤΤ��� 0x24 ($), 0x40 (@), 0x60 (`) �ϲĤǤ������ԤϤ��Σ�ʸ��������Ȥ��٤� basic source character set ���ͤȰ��פ���Τǡ��Ȥ��ޤ��ޤ�����Ԥ� special characters �Τ���� reserved area �ȤʤäƤ��ޤ�����������C++ �Ǥϸ�Ԥ����¤Ϥ���ޤ���ʤʤ������ʤ���̯�˰�äƤ���ˡ���������C++ �Ǥ� -V199901L �Ȥ��ƥޥ��� <tt>__cplusplus</tt> �� 199901L �ʾ�˻�������������ϡ�����˴ؤ��Ƥ� C99 ��Ʊ�����ͤˤʤ�ޤ���<br>
2519
<li><samp>Illegal multi-byte character sequence "XY"</samp><br>
2520
<i>OK_MBIDENT</i> == <i>TRUE</i> �ǥ���ѥ��뤷�� Standard �⡼�ɤξ�硢C99 �Ǥ� identifier ��� multi-byte character ���Ȥ��ޤ�����multi-byte character �Ȥ���ǧ����ʤ� character sequence ������ȥ��顼�ˤʤ�ޤ���identifier �ʳ��� pp-token �Ǥϥ������˥ˡ�<br>
2523
<h3><a name="5.4.2" href="#toc.5.4.2">5.4.2. ���뤷�ʤ��������ե�����Υ��顼</a></h3>
2524
<p>���Υ�å������ϥ������ե����뤬���뤷�ʤ� #if section���ޥ����ƤӽФ����ǽ���äƤ�����˽Фޤ������Υե���������Ϥ������ξ���include ���줿�ե�����Ǥʤ����ˤϡ�"End of file" �ǤϤʤ� "End of input" ��ɽ������ޤ���<br>
2525
�����ο��ǥ�å������� <b>mcpp</b> �Υ⡼�ɤˤ�äơ����顼�Ȥʤ���ȥ������˥Ȥʤ���Ȥ���ޤ���<br>
2526
Standard �⡼�ɤǤϤ����Ϥ��٤ƥ��顼�Ǥ������Υޥ����ƤӽФ��ϥ����åפ���#if section ���б��ط��Ϥ��Υե����뤬 include ���줿���ν�����֤��ᤷ�ޤ���<br>
2527
pre-Standard �⡼�ɤǤϤ��٤ƥ������˥Ǥ���pre-Standard �⡼�ɤǤ⡢<i>OLDPREP</i> �⡼�ɤǤ� unterminated macro call �ʳ��ϥ������˥�����Фޤ���</p>
2529
<li><samp>End of file within #if (#ifdef) section started at line 123</samp><br>
2530
123 �Ԥ� #if (#ifdef, #ifndef) ���б����� #endif ������ޤ���<br>
2531
<li><samp>End of file within macro call started at line 123</samp><br>
2532
123 �ԤǻϤޤä��ޥ����ƤӽФ����ե�����ν����ޤǤ˴��뤷�Ƥ��ޤ������Υ��å����б����Ƥ��ʤ�����ȡ����顼�����ä����ˡ��Ĥ����ʬ������Ȥ����ɤ�Ǥ��äƥե�����κǸ�ޤ�ã���뤳�Ȥ�����ޤ��ʤ������� Buffer overflow �Ȥʤ뤫�⤷��ʤ��ˡ��ޤ����ޥ���Ÿ���λ��ͤ��⡼�ɤˤ�äưۤʤ�Τǡ�����⡼�ɤǤϰտ��̤��Ÿ�������ޥ�����¾�Υ⡼�ɤǤϤ��Υ��顼�ˤʤ뤳�Ȥ�����ޤ���<br>
2535
<h3><a name="5.4.3" href="#toc.5.4.3">5.4.3. Preprocessing group �����б��ط��Υ��顼</a></h3>
2536
<p>���� #if, #else ���� group ���б��ط��Υ��顼�Ǥ��������ιԤ�̵�뤷�ơʤ���ޤǤ� group ��³���Ƥ����ΤȤ��ơ˽�����³���ޤ��������Υ����å��Ϥ��Ȥ������åפ���� #if group ����ˤ��äƤ�Ԥ��ޤ���<br>
2537
�ʤ���#if (#ifdef) section �Ȥ� #if, #ifdef, #ifndef ���� #endif �ޤǡ�#if (#elif, #else) group �Ȥϣ��Ĥ� #if (#ifdef) section �Τ����� #if (#ifdef, #ifndef), #elif, #else, #endif ���ǤϤ��ޤ줿���Ĥιԥ֥��å���ؤ��ޤ���</p>
2539
<li><samp>Already seen #else at line 123</samp><br>
2540
123 �Ԥ� #else �����줿��ˤޤ� #else (#elif) ������Ƥ��ޤ���#endif ���˺�줿�Τ��⤷��ޤ���<br>
2541
<li><samp>Not in a #if (#ifdef) section</samp><br>
2542
#if (#ifdef, #ifndef) �ʤ��� #else (#elif, #endif) ������Ƥ��ޤ���<br>
2543
<li><samp>Not in a #if (#ifdef) section in a source file</samp><br>
2544
Include ���줿�������ե��������ǡ�#if (#ifdef, #ifndef) �ʤ��� #else (#elif, #endif) ������Ƥ��ޤ���Include ���줿�ե����뤬���ե��������ˤ���Х��顼�ˤʤ�ʤ�����ñ��Υե��������ǤϥХ���Ȥ�Ƥ��ʤ��Ȥ������Ǥ���Standard �⡼�ɤλ������Ǥ���pre-Standard �⡼�ɤǤϥ������˥ˡ�<br>
2546
<p>���Σ��Ĥ� #asm, #endasm ���б��ط��Υ��顼�Ǥ����������pre-Standard �⡼�ɤ�����ν����Ϥξ������Ǥ���</p>
2548
<li><samp>In #asm block started at line 123</samp><br>
2549
123 �Ԥ���Ϥޤä� #asm �֥��å�����ˤޤ� #asm ������ޤ���#asm ������ҤˤǤ��ޤ����֤�#endasm ���˺�줿�ΤǤ��礦��<br>
2550
<li><samp>Without #asm</samp><br>
2551
#asm �֥��å�����ǤϤʤ��Ȥ����� #endasm ������ޤ���<br>
2554
<h3><a name="5.4.4" href="#toc.5.4.4">5.4.4. �ǥ��쥯�ƥ��ֹԤ�ñ��ʹ�ʸ���顼</a></h3>
2555
<p>����ʹߡ�5.4.12 �ޤǡˤΥ��顼�ϥ����åפ���� #if group ����Ǥϵ�����ޤ����-W8 ���ץ����ǵ�ư����ȡ�Unknown directive �ˤĤ��Ƥϥ������˥�Ф��ˡ�<br>
2556
���� # �ǻϤޤ�ǥ��쥯�ƥ��ֹԤ�ñ���ʸˡ���顼�Ǥ��������ιԤ�̵�뤷�ƽ�����³���ޤ��ʤ��ʤ����#if �� section �γ��ϤȤߤʤ�����#line �ǤϹ��ֹ���Ѥ��ʤ����ˡ�#include, #line �Ԥΰ������ޥ����Ǥ���С������Ÿ�����������ǥ����å����Ԥ��ޤ���pre-Standard �⡼�ɤǤ�Ÿ�����ʤ��ˡ�<br>
2557
�����Υ�å��������Τ�Τˤϥǥ��쥯�ƥ���̾���ФƤ��ޤ��������³����ɽ������륽�����Ԥǥǥ��쥯�ƥ��֤��狼��ޤ��ʥǥ��쥯�ƥ��ֹԤϥ����Ȥ� space ���Ѵ������ȡ�ɬ�����Ԥˤʤ�ˡ�</p>
2559
<li><samp>Illegal #directive "123"</samp><br>
2560
# ��³���ȡ�����̾���ǤϤ���ޤ���# ��³���Τϥǥ��쥯�ƥ���̾�Ǥʤ���Фʤ�ޤ���ʤ�������<i>OLDPREP</i> �⡼�ɤǤ� #123 �� #line 123 ��Ʊ����ΤȤ��ư����ˡ�<br>
2561
<li><samp>Unknown #directive "pseudo-directive"</samp><br>
2562
pseudo-directive �Ȥ����ǥ��쥯�ƥ��֤ϼ�������Ƥ��ޤ���-a (-lang-asm, -x assembler-with-cpp) ���ץ����ǵ�ư���줿���ϡ����顼�ˤϤʤ餺�������˥ˤʤ�ޤ���<br>
2563
<li><samp>No argument</samp><br>
2564
#if, #elif, #ifdef, #ifndef, #assert, #line �ΰ���������ޤ���<br>
2565
<li><samp>No header name</samp><br>
2566
#include �Ԥΰ���������ޤ��ޤ��ϰ������ޥ����Ǥ����������Ÿ�������Ȥ��������ˤϥȡ�������ʤ��ʤ�ޤ�����<br>
2567
<li><samp>Not a header name "UNDEFINED_MACRO"</samp><br>
2568
������ header name �ǤϤ���ޤ���header name ���������Ϥ��Υޥ������������Ƥ��ʤ����ʤɤǤ���<, > �ޤ��� ", " �ǰϤޤ줿��Τ� header name �Ǥ���<br>
2569
<li><samp>Not an identifier "123"</samp><br>
2570
#ifdef, #ifndef, #define, #undef �ˤ� identifier �ΰ�����ɬ�פǤ�����123 �� identifier �ǤϤ���ޤ���<br>
2571
<li><samp>No identifier</samp><br>
2572
#define, #undef �ΰ���������ޤ���<br>
2573
<li><samp>No line number</samp><br>
2574
#line �ΰ������ޥ����Ǥ�����
2575
�����Ÿ�������Ȥ��� �����ˤϲ���ȡ����Ĥ�ʤ��ʤäƤ��ޤ��ޤ�����<br>
2576
<li><samp>Not a line number "name"</samp><br>
2577
#line �����ΰ��������ͥȡ������preprocessing number�ˤǤϤ���ޤ���<br>
2578
<li><samp>Line number "0x123" isn't a decimal digits sequence</samp><br>
2579
#line ���������Ͻ��������ȡ�����Ǥʤ���Фʤ�ޤ���Standard �⡼�ɤξ��Ǥ���pre-Standard �⡼�ɤϥ������˥ϽФ����������ʡ��������������ȡ������ǧ���ˡ�<br>
2580
<li><samp>Line number "2147483648" is out of range of [1,2147483647]</samp><br>
2581
#line ���������� [1,2147483647] ���ϰϤˤʤ���Фʤ�ޤ���0 �⥨�顼�Ǥ���Standard �⡼�ɤξ��Ǥ���<br>
2582
<li><samp>Not a file name "name"</samp><br>
2583
#line �������������������̾��ʸ�����ƥ��Ǥʤ���Фʤ�ޤ���Identifier ��磻��ʸ�����ƥ�����ǤϤ����ޤ���<br>
2585
<p>���Υ��顼�� Standard �⡼�ɤξ������ǡ������Υǥ��쥯�ƥ��֤�̵�뤵��ޤ���<i>OLDPREP</i> �⡼�ɤǤϥ��顼�⥦�����˥�Ф���<i>KR</i> �⡼�ɤǤϥ������˥Ȥʤꡢ���� "junk" ���ʤ��ä���ΤȤ��ƥץ�ץ�������³���ޤ���</p>
2587
<li><samp>Excessive token sequence "junk"</samp><br>
2588
#else, #endif, #asm, #endasm �ιԤ�;�פʥƥ����� junk ������ޤ���#ifdef, #ifndef, #include, #line, #undef �ιԤ������������θ����;�פʥƥ����� junk ������ޤ��������ϥ����ȤȤ��ƽƤ���������<br>
2591
<h3><a name="5.4.5" href="#toc.5.4.5">5.4.5. #if ���ι�ʸ���顼��</a></h3>
2592
<p>���� #if, #elif, #assert �ǥ��쥯�ƥ�����μ��ι�ʸ�˴ؤ��륨�顼�Ǥ���</p>
2593
<p>#if (#elif) �ǥ��顼�������ä����ϡ����� #if (#elif) �Ԥϵ���ɾ�����줿��ΤȤ��ơʤ��ʤ������ group ���åפ��ơˡ��ץ�ץ�������³���ޤ���</p>
2594
<p>�����åפ���� #if (#ifdef, #ifndef, #elif, #else) group �ˤĤ��Ƥϡ����줬�ä� legal �� preprocessing token ������Ω�äƤ��뤫�ɤ����ȡ�#if ���� group ���б��ط��ϥ����å����ޤ���������¾��ʸˡ���顼�ϥ��顼�ˤϤʤ�ޤ���</p>
2595
<p>#if �Ԥ��Τ�Τ���Ǥϡ�ɾ�����åפ������ʬ��������ޤ����㤨�� #if a || b �Τ褦�ʼ��� a �����Ǥ�����ϡ�b ��ɾ���ϹԤ��ޤ������������Σ������ʸˡ���顼�ʤ��� translation limit �Υ��顼�Ϥ��Ȥ�ɾ�����åפ������ʬ����ˤ��äƤ�����å�����ޤ���</p>
2597
<li><samp>More than <i>NEXP</i>*2-1 constants stacked at "12"</samp><br>
2598
#if ����ɾ���ǡ������å����Ѥޤ�Ƥ�������� 12 �ΤȤ����� <i>NEXP</i>*2-1 �ʾ�ˤʤ�ޤ�����#if ���Υͥ��Ȥ��������ޤ���<br>
2599
<li><samp>More than <i>NEXP</i>*3-1 operators and parens stacked at "+"</samp><br>
2600
#if ����ɾ���ǡ������å����Ѥޤ�Ƥ���黻�Ҥȥ��å��ι�פ� + �ΤȤ����� <i>NEXP</i>*3-1 �ʾ�ˤʤ�ޤ����ʥ��å��ϰ��ФĤȿ�����ˡ�#if ���Υͥ��Ȥ��������ޤ���<br>
2601
<li><samp>Misplaced constant "12"</samp><br>
2602
#if ��������Τ���٤��Ǥʤ����֤���� 12 ������ޤ���#if �Ǥϥ��㥹�ȤϻȤ��ޤ���(int)0x8000 �ʤɤȥ��㥹�Ȥ�Ȥä��ꤹ��ȡ�int ���ޥ����Ȥ����������Ƥ��ʤ� identifier �Ȥߤʤ��� 0 ��ɾ�������Τǡ�(0)0x8000 �Ȥʤꡢ���Υ��顼��ȯ�����ޤ���<br>
2603
<li><samp>Operator ">" in incorrect context</samp><br>
2604
#if ����̯�ʰ��֤� > �Ȥ����黻�Ҥ�����ޤ����ޥ��� MACRO �����ĤΥȡ�������������Ƥ�����ˡ�#if MACRO > 0 �ʤɤȤ���ȡ��ޥ���Ÿ���η�� #if > 0 �Ȥʤ�Τǡ����Υ��顼�Ȥʤ�ޤ��ʤ��ξ��Ϥ���ľ���� Macro "MACRO" is expanded to 0 token �Ȥ����������˥��Ф�Τǡ�����Ȥ狼��ˡ�<br>
2605
<li><samp>Unterminated expression</samp><br>
2606
#if �������뤷�Ƥ��ޤ���MACRO �����ĤΥȡ�������������Ƥ������ #if a || MACRO �ʤɤξ��Ǥ���<br>
2607
<li><samp>Excessive ")"</samp><br>
2608
#if ���� ( ���б����ʤ�;�פ� ) ������ޤ���<br>
2609
<li><samp>Missing ")"</samp><br>
2610
#if ���� ( �������
2612
<li><samp>Misplaced ":", previous operator is "+"</samp><br>
2613
? ���б����ʤ� : ������ޤ���
2615
<li><samp>Bad defined syntax</samp><br>
2616
#if defined ��ʸˡ���ְ�äƤ��ޤ������ä����б����Ȥ�Ƥ��ʤ��ä��ꡢ
2617
identifier �������ˤʤäƤ��ʤ��ä���ξ��Ǥ����ޥ���Ÿ���η�̡����Υ��顼�������ä����ϡ����Υ�å�������³���Ƥ���Ÿ����̤�ɽ�����ޤ���<br>
2618
<li><samp>Can't use a string literal "string"</samp><br>
2619
#if ��������ˤ�ʸ�����ƥ��ϻȤ��ޤ���<br>
2620
<li><samp>Can't use a character constant 'a'</samp><br>
2621
<i>POSTSTD</i> �⡼�ɤǤ�
2622
#if ���������ʸ��������磻��ʸ������ϻȤ��ޤ���<br>
2623
<li><samp>Can't use the operator "++"</samp><br>
2625
���˻Ȥ��ʤ��黻�Ҥ�����ޤ���=, ++ ���Ǥ���<br>
2626
<li><samp>Not an integer "1.23"</samp><br>
2628
�Ԥ�����ˤ�������ʸ�������ޤ�ˤ����Ȥ��ޤ���<br>
2629
<li><samp>Can't use the character 0x24</samp><br>
2631
���˻Ȥ��ʤ�ʸ���ʥ����� 0x24�ˤ�����ޤ���identifier, operator, punctuator, string literal, character constant, preprocessing number �Τɤ� preprocessing token �ˤ���פ��ʤ�������ʸ�������Υȡ�����Ǥ��ʥ���ȥ����륳���ɤϤ������˥����å�����Ƥ���Τǡ�����ʳ���ʸ���ˡ�$ �� identifier ���ǧ�������ϤǤϡ�<b>mcpp</b> �� <i>OK_DOLLAR</i> == <i>TRUE</i> �Ȥ��ƥ���ѥ��뤷�Ƥ����ʤ��ȡ����Υ��顼��ȯ�����ޤ�������������åפ���� group ����ˤ����Τϥ����å�����ޤ���<br>
2633
<p>���� #if sizeof �˴ؤ��륨�顼�Ǥ����������pre-Standard �ξ������Ǥ���</p>
2635
<li><samp>sizeof: Syntax error</samp><br>
2636
#if sizeof ��ʸˡ���ְ�äƤ��ޤ������ä����ʤ��ä��ꡢ���ä���¿�������ꡢ���ä����б����Ȥ�Ƥ��ʤ��ä��ꡢ�������ʤ��ä��ꤹ����Ǥ���<br>
2637
<li><samp>sizeof: No type specified</samp><br>
2638
#if sizeof (type) �� type �����ꤵ��Ƥ��ޤ���sizeof (*) �ʤɤǤ���sizeof ((*)()) �ϴؿ��ؤΥݥ��Υ���������� legal �ʹ�ʸ�Ǥ���<br>
2641
<h3><a name="5.4.6" href="#toc.5.4.6">5.4.6. #if ����ɾ���˴ؤ��륨�顼</a></h3>
2642
<p>���Υ��顼��ɾ�����åפ������ʬ���ˤ�����ϵ�����ޤ����-W8 ���ץ����ǤϤ����ˤĤ��Ƥ⥦�����˥��Ф�ˡ�</p>
2643
<p>#if ���� C99 �ǤϤ��ν����Ϥλ��ĺ�����������ǡ�C90, C++98 �Ǥ� long / unsigned long ��ɾ������Τ�����Ǥ�����<b>mcpp</b> �Ǥ� C90, C++98 �Ǥ� long long / unsigned long long ��ɾ�����ޤ�����������C90, C++98 �� long / unsigned long ���ϰϤ�Ķ�������ϥ������˥�Ф��ޤ���<br>
2644
long long �Τʤ������ϤǤϡ�������� long long / unsigned long long �� long / unsigned long ���ɤ��ؤ��Ƥ���������pre-Standard �ǤϤ��٤� (signed) long ���ɤ��ؤ��Ƥ���������<i>POSTSTD</i> �Ǥ� #if ����ʸ������ϻȤ��ʤ��Τǡ��̤Υ��顼�ˤʤ�ޤ���</p>
2646
<li><samp>Constant "123456789012345678901" is out of range</samp><br>
2647
����������ͤ� unsigned long long ��ɽ���Ǥ����ϰϤ�Ķ���Ƥ��ޤ���<br>
2648
<li><samp>Integer character constant 'abcdefghi' is out of range</samp><br>
2649
ʸ����� 'abcdefghi' ���ͤ� unsigned long long ��ɽ���Ǥ����ϰϤ�Ķ���Ƥ��ޤ���<br>
2650
<li><samp>Wide character constant L'abcde' is out of range</samp><br>
2651
�磻��ʸ����� L'abcde' ���ͤ� unsigned long long ��ɽ���Ǥ����ϰϤ�Ķ���Ƥ��ޤ���<i>STD</i> �⡼�ɤλ������Ǥ���<br>
2652
<li><samp>8 bits can't represent escape sequence '\x123'</samp><br>
2653
ʸ�������Σ��Ĥ� escape sequence ���ͤ� 8 bits ��ɽ���Ǥ����ϰϡ�[0, 0xFF]�ˤ�Ķ���Ƥ��ޤ���<br>
2654
<li><samp>16 bits can't represent escape sequence L'\x12345'</samp><br>
2655
�磻��ʸ�������Σ��Ĥ� escape sequence ���ͤ� 16 bits ��UTF-8 �ξ��� 32 bits�ˤ�ɽ���Ǥ����ϰϤ�Ķ���Ƥ��ޤ���<i>STD</i> �⡼�ɤλ������Ǥ���<br>
2656
<li><samp>Division by zero</samp><br>
2657
#if ���� 0 �ˤ���껻������ޤ�����껻�� / �ˤ���Τ� % �ˤ���Τ�����ޤ���#if dividend / divisor .. �� divisor ���ޥ����Ȥ����������Ƥ��ʤ����ʤɤ˵�����ޤ���#if defined divisor && (dividend / divisor ..) �Ƚ��Ȥǡ����Υ��顼���뤳�Ȥ��Ǥ��ޤ���<br>
2658
<li><samp>Result of "op" is out of range</samp><br>
2659
�黻�� op �ˤ��黻�η�̤� long long ���ϰϳ��Ȥʤ�ޤ�����op �ϣ���黻�� *, /, %, +, - �Τɤ줫�Ǥ�������������ɽ������������ξ��ϡ�ñ�� '-' �黻�Ҥ� -<tt>LLONG_MIN</tt> �ǥ����С��ե����Ȥʤ�ޤ���Unsigned long long �ϥ����С��ե������뤳�Ȥ��ʤ��Τǥ��顼�ˤϤʤ�ޤ������Ū�ʱ黻��̤��ϰϳ��Ȥʤ���ϥ������˥��Фޤ���<br>
2661
<p>���� sizeof �˴ؤ��륨�顼�Ǥ��������åפ������ʬ���ǤϽФޤ����-W8 ���ץ����Ǥϥ������˥��Ф�ˡ�pre-Standard �ξ��Ǥ���</p>
2663
<li><samp>sizeof: Unknown type "type"</samp><br>
2664
#if sizeof (type) �� type ���ѤǤ���<br>
2665
<li><samp>sizeof: Illegal type combination with "type"</samp><br>
2666
#if sizeof (long float)
2667
���ȡ������Ȥ߹�碌���ѤǤ���<br>
2670
<h3><a name="5.4.7" href="#toc.5.4.7">5.4.7. #define �Υ��顼</a></h3>
2671
<p>���� #define �˴ؤ��륨�顼�Ǥ���
2672
�ޥ������������ޤ���</p>
2673
<p>#, ## �黻�Ҥ˴ؤ��륨�顼�� Standard
2675
__VA_ARGS__ �˴ؤ��륨�顼�� Standard �⡼�ɤξ��Ǥ���
2676
���Ѱ����ޥ����� C99 �λ��ͤǤ�����GCC, Visual C++ 2005 �Ȥθߴ����Τ���� C90 �Ǥ� C++ �Ǥ�ͭ���Ȥ��Ƥ��ޤ��ʤ��������������˥��Ф�ˡ�</p>
2678
<li><samp>"defined" shouldn't be defined</samp><br>
2679
defined �Ȥ���̾���Υޥ���������Ǥ��ޤ������ Standard �⡼�ɤǥ����å�����ޤ���<br>
2680
<li><samp>"__STDC__" shouldn't be redefined</samp><br>
2681
�ޥ��� <tt>__STDC__</tt> �� #define �Ǥ��ޤ���<tt>__STDC_VERSION__</tt>, <tt>__FILE__</tt>, <tt>__LINE__</tt>, <tt>__DATE__</tt>, <tt>__TIME__</tt> ���C99 �⡼�ɤǤ� <tt>__STDC_HOSTED__</tt> ��-+ ���ץ����Ǥ� <tt>__cplusplus</tt> ���Ʊ�ͤǤ�������� Standard �⡼�ɤǥ����å�����ޤ���<br>
2682
<li><samp>"__VA_ARGS__" shouldn't be defined</samp><br>
2683
C99 �Ǥϲ��Ѱ����ޥ�����������ִ��ꥹ����� __VA_ARGS__ �Ȥ����ѥ������Ȥ��ޤ��������� identifier �ϥޥ����Ȥ���������뤳�ȤϤǤ��ޤ���<br>
2684
<li><samp>More than <i>NMACPARS</i> parameters</samp><br>
2685
�ޥ�������ǥѥ����ο��� <i>NMACPARS</i> ��Ķ���Ƥ��ޤ���<br>
2686
<li><samp>Empty parameter</samp><br>
2687
�ޥ�������˥���Υѥ���������ޤ���
2689
<li><samp>Illegal parameter "123"</samp><br>
2690
�ޥ�������� identifier �ʳ��Υȡ����ѥ����˻Ȥ��Ƥ��ޤ���
2691
Standard �⡼�ɤǤϡ�identifier �Ǥ��äƤ� __VA_ARGS__ �ϥѥ����Ȥ��ƻȤ��ޤ���<br>
2692
<li><samp>Duplicate parameter name "a"</samp><br>
2693
�ޥ�������� a �Ȥ����ѥ���̾����ʣ���Ƥ��ޤ���<br>
2694
<li><samp>Missing "," or ")" in parameter list "(a,b"</samp><br>
2695
�ޥ�������ǥѥ����ꥹ�Ȥ��Ĥ���
2696
) ������ޤ��ޤ��ϥѥ�����ľ��� ',' �Ǥ� ')' �Ǥ�ʤ��̤Υȡ�������ޤ���<br>
2697
<li><samp>No token before ##</samp><br>
2698
�ޥ���������ִ��ꥹ����� ## �黻�Ҥ����˥ȡ�������ޤ���<br>
2699
<li><samp>No token after ##</samp><br>
2700
�ޥ���������ִ��ꥹ����� ## �黻�Ҥθ�˥ȡ�������ޤ���<br>
2701
<li><samp>## after ##</samp><br>
2702
�ޥ���������ִ��ꥹ����� ## ## �Ȥ����ȡ�������¤Ӥ�����ޤ�����������ϥ��顼�ǤϤʤ��Ȥ������⤢�뤫�⤷��ޤ���## �Ȥ����ȡ�����¾�Υȡ������Ϣ�뤵����ɬ�� valid �Ǥʤ��ȡ�����Ȥʤ�Τǡ����Υޥ�����Ÿ�����ˤ�ɬ�����顼�ˤʤ�ޤ���<b>mcpp</b> �ǤϤ���ϥޥ���������˥��顼�ˤ��ޤ���<br>
2703
<li><samp>Not a formal parameter "id"</samp><br>
2704
�ؿ��ͥޥ���������� # �黻�ҤΥ��ڥ��� id ���ѥ���̾�ǤϤ���ޤ���<br>
2705
<li><samp>"..." isn't the last parameter</samp><br>
2706
"..." �Ȥ����ѥ����ϥޥ�������κǸ�Υѥ����Ǥʤ���Фʤ�ޤ���pre-Standard �⡼�ɤǤ� ... �� Illegal parameter ���顼�ˤʤ�ˡ�<br>
2707
<li><samp>"__VA_ARGS__" without corresponding "..."</samp><br>
2708
�ִ��ꥹ����� __VA_ARGS__ �Ȥ��� identifier �� ... �Ȥ����ѥ����������礷���Ȥ��ޤ���<br>
2711
<h3><a name="5.4.8" href="#toc.5.4.8">5.4.8. #undef �Υ��顼</a></h3>
2712
<p>���� #undef �˴ؤ��륨�顼�Ǥ���</p>
2714
<li><samp>"__STDC__" shouldn't be undefined</samp><br>
2715
�ޥ��� <tt>__STDC__</tt> �� #undef �Ǥ��ޤ���
2716
<tt>__STDC_VERSION__</tt>, <tt>__FILE__</tt>, <tt>__LINE__</tt>, <tt>__DATE__</tt>, <tt>__TIME__</tt> ���C99 �⡼�ɤǤ� <tt>__STDC_HOSTED__</tt> �� -+ ���ץ����Ǥ� <tt>__cplusplus</tt> ���Ʊ�ͤǤ�������� Standard �⡼�ɤξ��˥����å�����ޤ���<br>
2719
<h3><a name="5.4.9" href="#toc.5.4.9">5.4.9. �ޥ���Ÿ���Υ��顼</a></h3>
2720
<p>���ϥޥ���Ÿ���˴ؤ��륨�顼�Ǥ��������Υޥ��������ɽ�����졢���Υޥ�������Τ��륽�����ե�����̾�ȹ��ֹ��ɽ������ޤ���#, ## �黻�Ҥ˴ؤ��륨�顼�� Standard �⡼�ɤ����Ǥ���</p>
2722
<li><samp>Less than necessary N argument(s) in macro call "macro( a)"</samp><br>
2723
�ޥ����ƤӽФ��ΰ�������ޤ���macro �ˤϰ����� N ��ɬ�פǤ�����ʤ������ˤ� 0 �ĤΥȡ�����������Ƥơ�������³���ޤ����ѥ��������Ĥǰ����������ξ��ϥ�������Ȱ����η���Ȥζ��̤��Ĥ��ޤ�������ϥ��顼�ˤ��ޤ���<i>OLDPREP</i> �⡼�ɤǤϤ���ϥ������˥Ǥ���<br>
2724
<li><samp>More than necessary N argument(s) in macro call "macro( a, b, c)"</samp><br>
2725
�ޥ����ƤӽФ��ΰ�����¿�����ޤ���macro �ΰ����� N �ĤΤϤ��Ǥ���;�פʰ�����ΤƤơ�������³���ޤ���<i>OLDPREP</i> �⡼�ɤǤϤ���ϥ������˥Ǥ���<br>
2726
<li><samp>Not a valid preprocessing token "+12"</samp><br>
2727
## �黻�Ҥˤ�äƣ��Ĥ� pp-token ��Ϣ�뤷���Ȥ�����"+12" �Ȥ��� invalid �ʤ�Τˤʤ�ޤ���������ϸ���ڤ�Υ����뤫�⤷��ޤ������Τޤ�����³���ޤ���-lang-asm (-x assembler-with-cpp, -a) ���ץ����Ǥϡ�����ϥ������˥Ǥ���<br>
2728
<li><samp>Not a valid string literal "\\"str\""</samp><br>
2729
# �黻�Ҥˤ�äƥޥ����ƤӽФ��ΰ�����ʸ�������Ȥ�����ͭ���ʡ�ñ��Ρ�ʸ�����ƥ��ȤϤʤ餺��"\\"str\"" �Ȥ��� token sequence �ˤʤ�ޤ�������ƥ��γ��� \ �Τ��뤳�Ȥ������Ǥ��ʥ�ƥ��γ��� \ �����������ʸ������ȡ�Unterminated string literal �Υ��顼�ˤʤ뤳�Ȥ⤢�ꡢ���Υ��顼�ˤʤ�ʤ����Ȥ⤢��ˡ����Τޤ�����³���ޤ��������֤�ѥ���ե������Ǻ��٥��顼�ˤʤ�Ǥ��礦��<i>POSTSTD</i> �⡼�ɤǤϤ��Υ��顼��ȯ�����ޤ����Unterminated string literal �Ϥ��ꤦ��ˡ�<br>
2731
<p>�ʲ��Υ��顼�Ǥϡ����Υޥ����ƤӽФ��ϥ����åפ���ޤ���</p>
2733
<li><samp>Buffer overflow expanding macro "macro" at "something"</samp><br>
2735
something �ΤȤ����ǥХåե��������С��ե������ޤ������ޥ�����ʬ�䤷�Ƥ���������<br>
2736
<li><samp>Unterminated macro call "macro( a, (b, c)"</samp><br>
2737
�ޥ����ƤӽФ������뤷�Ƥ��ޤ����Υ��顼��������ΤϤ����Ƥ��ϡ��ǥ��쥯�ƥ��ֹԤǤΥޥ����ƤӽФ������ιԤǴ��뤷�Ƥ��ʤ����Ǥ����ޤ���Standard �⡼�ɤǤϰ�����Υޥ����ϰ������ִ�����Ω�ä�Ÿ������ޤ��������λ��ˤ��Υޥ����ƤӽФ��Ϥ��ΰ�������Ǵ��뤷�Ƥ��ʤ���Фʤ�ޤ���<i>POSTSTD</i> �⡼�ɤǤϥޥ������ִ��ꥹ����ˤ���ޥ����ƤӽФ����ִ��ꥹ�Ȥ���Ǵ��뤷�Ƥ��ʤ����⡢���Υ��顼�Ȥʤ�ޤ���<br>
2738
<li><samp>Rescanning macro "macro" more than <i>RESCAN_LIMIT</i> times at "something"</samp><br>
2739
�ޥ����Υͥ��Ȥ��������ơ�Ÿ����� "something" �ΤȤ����Ǻ������β���� <i>RESCAN_LIMIT</i> ��Ķ���ޤ�����Standard �⡼�ɤξ������Ǥ������ޤ������ꤨ�ޤ���<br>
2740
<li><samp>Recursive macro definition of "macro" to "macro"</samp><br>
2741
�ޥ�����������Ƶ�Ū�Ǥ�������� pre-Standard �⡼�ɤλ����������ꤦ�륨�顼�Ǥ����������β���� <i>PRESTD_RESCAN_LIMIT</i> ��ã����ȺƵ�Ū�ޥ�������Ȥߤʤ��ޤ���<br>
2744
<h3><a name="5.4.10" href="#toc.5.4.10">5.4.10. #error, #assert</a></h3>
2746
<li><samp>#error</samp><br>
2747
#error �ǥ��쥯�ƥ��֤��¹Ԥ���ޤ��������� #error �Ԥ�ɽ������ޤ��ʰ������Τ�Τ˥ȡ����顼��unterminated string ���ˤ����ä����� #error �ϼ¹Ԥ���ʤ��ˡ�#error �� Standard �⡼�ɤξ������Ǥ���<br>
2748
<li><samp>Preprocessing assertion failed:</samp><br>
2749
#assert �ǥ��쥯�ƥ��֤��¹Ԥ���ޤ��������θ��դ�³���� #assert �Ԥΰ��������Ϥ���ޤ��������μ����Τ�Τ˥��顼�����ä����ϡ�assertion �����Ԥ�����ΤȤߤʤ��ޤ���#assert �� pre-Standard �⡼�ɤ� COMPILER != GNUC �ξ������Ǥ���<br>
2752
<h3><a name="5.4.11" href="#toc.5.4.11">5.4.11. #include ���</a></h3>
2754
<li><samp>Can't open include file "file-name"</samp><br>
2755
Include ���٤��ե����뤬¸�ߤ��ʤ����ˤ��Υ��顼��ȯ�����ޤ������֤�ե�����̾�Υ��ڥ�ߥ��� include directory �λ���δְ㤤�Ǥ��礦��<br>
2758
<h3><a name="5.4.12" href="#toc.5.4.12">5.4.12. ����¾�Υ��顼</a></h3>
2760
<li><samp>Operand of _Pragma() is not a string literal</samp><br>
2761
_Pragma() operator �ΰ����ϣ��Ĥ�ʸ�����ƥ��ޤ��ϥ磻��ʸ�����ƥ��Ǥʤ���Фʤ�ޤ���Standard �⡼�ɤ� C99 �����Τ�ΤǤ���<br>
2762
C++ �Ǥ� -V199901L ���ץ����ǵ�ư��������Ʊ�ͤǤ���<br>
2766
<h2><a name="5.5" href="#toc.5.5">5.5. Warning (class 1)</a></h2>
2767
<p>ʸˡŪ�ˤϴְ㤤�ǤϤʤ��������νְ㤤�β�ǽ�����������
2768
portability ������Τ�����ˡ�warning ���Фޤ���Warning �ˤ� 1, 2, 4, 8, 16 �Σ��Ĥ� class ������ޤ���<b>mcpp</b> �ε�ư���� -W <n> �Ȥ������ץ�������ꤹ�뤳�Ȥǡ�����餬ͭ���ˤʤ�ޤ���<n> �� 1, 2, 4, 8, 16 �Τ�����Ǥ�դΤ�Τ� OR ��Ȥä���ΤǤ����ʤ����ʲ��������� -W4 ���ȸ��äƤ���Τϡ�-W<n> �� <n> & 4 �����ξ��Τ��Ȥǡ�1|4, 1|2|4, 2|4, 1|4|8, 4|8, 4|16 ����ޤߤޤ���</p>
2769
<p>Standard �⡼�ɤǤ� Standard C �� undefined �Ȥ���Ƥ���ư��������������������¿���� error �ˤ��ޤ����������ˤĤ��Ƥ� warning ��Ф��ޤ���</p>
2770
<p>Ʊ�ͤ� Standard �⡼�ɤǤ� Standard C �� unspecified �Ȥ���Ƥ�����ͤ�Ȥ����������Ф��Ƥϡ��������ʳ���ɬ�� warning ��Ф��ޤ���</p>
2772
<li>#if ����� sub-expression ��ɾ������ˤĤ��Ƥϡ�warning �ϽФ��ʤ���||, &&, ? : �ʳ��α黻�Ҥ˴ؤ��Ƥ� operand ��ɾ������� unspecified �Ǥ��뤬��#if ���������Ѥ������ʤ��Τǡ�����ɾ������Ϸ�̤ˤϱƶ����ʤ�����Ǥ��롣<b>mcpp</b> �Ǥϡ���������ȡ������ɾ���Ͼ�˽и���Ʊ���˺����鱦�˹Ԥ��������δ֤α黻�Ͼ�˱黻�ҤΥ��롼�ԥε�§�˽��äơ����ι���ͤ�ɬ�פˤʤä����˽��ƹԤ���<br>
2774
<p>Standard �⡼�ɤǤϡ�implementation-defined �Ȥ���Ƥ���ư���¿���ˤĤ��Ƥ� warning ��Ф��ޤ���Implementation-defined �Ǥ���ʤ��� warning �νФʤ��Τϡ������������Ǥ���</p>
2776
<li>#include directive �� include ����ե������õ����ꡢ����� #include �ΰ������� header-name �Ȥ��� pp-token ���ۤ�����ˡ����������� warning ��Ф��Ƥ����ΤǤϤ��뤵����header-name �ϥޥ����Ǥʤ���С��������Υȡ����� space ��̵ͭ��ޤ�Ƥ��ΤޤȤ��롣�ޥ����Ǥ���С������Ÿ��������̤� space ��̵ͭ��ޤ�Ƥ��ΤޤȤ����<i>POSTSTD</i> �⡼�ɤǤϡ��ޥ���Ÿ���ˤ�ä� pp-token �֤� space ����������뤬�����ξ�� < ���� > �ޤǤ� space �������Ƥ��äĤ�����Τ� header-name �Ȳ�᤹�롣�ɤ���ˤ��Ƥ� <i>POSTSTD</i> �Ǥ� <, > �ˤ�� header-name �� obsolescent feature �Ǥ���ˡ�Warning �ϽФ��ʤ�������������ˡ�#pragma MCPP debug path, #debug path �ǥ������ѥ���ɽ�����롣<br>
2777
<li>#if ���Ǥ� single byte ʸ�������'a' ���ˤ�ɾ���ȡ�ñ��� multi- byte character �Υ磻��ʸ�������L'��' ���ˤ�ɾ��������ϴ���ʸ�����åȤ�Ʊ��Ǥ��äƤ⡢single byte �Υ������ʤȤ�������̵ͭ�Ȥ��������� en-coding �Ȥ��ˤ�ä� portability �Ϥ����¤���ΤǤ��뤬�����꤬�ʤ���UCN �ˤĤ��Ƥ�Ʊ�ͤǤ��롣<br>
2778
<li>#if ��������������ӥåȱ黻������������ɽ���ˤ�äƷ�̤��ͤ��ۤʤ뤬����Ⱦ�Υޥ���ϣ��������ɽ����ȤäƤ���Τǡ����������Ȥ���� portability ������ϤۤȤ��¸�ߤ��ʤ���������������α��ӥåȥ��եȤ���� operand �������ޤ�������������ν����� portability ��˳�����Τǡ�warning ��Ф���<br>
2779
<li>Token separator �Ȥ��Ƥ�ʣ���� white spaces �� sequence��Standard C �Ǥ� translation phase 3 �Ǥ���� one space �˰��̤��뤫�ɤ����� implementation-defined �Ȥ���Ƥ��뤬���̾�ϥ桼���Ϥޤä������ˤ���ɬ�פϤʤ���Portability ������ˤʤ�Τϡ�preprocessing directive �Ԥ� <vertical-tab> �ޤ��� <form-feed> ������������Ǥ��롣<b>mcpp</b> �ǤϤ����� space ���Ѵ����뤬�����λ��� warning ��Ф���ʣ���� space, tab �� sequence �� one space ���ۤäư��̤��롣<br>
2780
<li>�������ȼ����Ȥ߹��ߥޥ����ˤĤ��Ƥ� warning �ϽФ��ʤ���<br>
2782
sub-directive �ˤĤ��Ƥ⸶§�Ȥ��� warning �ϽФ��ʤ���<b>mcpp</b> ���Ȥ��������� #pragma once, #pragma __setlocale, #pragma MCPP * �ǰ������ְ�äƤ�����ϡ�warning ��Ф����ޤ���GCC V.3 �Ǥ� #pragma GCC poison (dependency, system_header) �Τ褦�ˡ���������°�Υץ�ץ����å��Ͻ������뤬 <b>mcpp</b> �Ͻ������ʤ� #pragma �ˤĤ��Ƥ� warning ��Ф���<br>
2783
<li>C99 �Ǥϡ�UCN sequence �� # �黻�Ҥˤ�ä�ʸ��������硢\ �� \\ �Ȥ����դ��˽Ťͤ뤫�ɤ����� implementation-defined �ȤʤäƤ��뤬������ˤĤ��Ƥ� warning �ϽФ��ʤ���<b>mcpp</b> �Ǥ� \ �ϽŤͤʤ���<br>
2785
<p>�������äơ�<b>mcpp</b> �Ǥϥץ�ץ������Υ�٥�Ǥ� portability �Υ����å���ܴۤ����˹Ԥ����Ȥ��Ǥ��ޤ���</p>
2786
<p><i>POSTSTD</i> �⡼�ɤǤϡ�<a href="#2.1"> 2.1</a> �ˤ�����ͤΰ㤤������� <i>STD</i> �⡼�ɤ�Ʊ�ͤǤ���
2788
<p>�������˥������ĽФƤ⡢�������פξ����ͤ��֤��ޤ���-W0
2789
�Υ��ץ����ǵ�ư����ȡ��������˥ϽФޤ���</p>
2791
<h3><a name="5.5.1" href="#toc.5.5.1">5.5.1. ʸ�����ȡ�����ӥ����Ȥ˴ؤ��륦�����˥�</a></h3>
2793
<li><samp>Converted [CR+LF] to [LF]</samp><br>
2795
[CR+LF] ���� [LF] ���Ѵ����ޤ�����Windows �ѤΥ������ե������ UNIX �ϤΥ����ƥ�ǥ���ѥ��뤹��ȡ����Υ������˥��Фơ����ԥ����ɤ���ưŪ���Ѵ�����ޤ������Υ������˥ϣ����Фޤ���Compiler-independent-build �Ǥϥ��饹���ǡ�compiler-specific-build �Ǥϥ��饹���Ǥ���<br>
2796
<li><samp>Illegal control character 0x1b in quotation</samp><br>
2797
ʸ�����ƥ�롢ʸ�������header name ��� white space �Ǥʤ�����ȥ����륳���ɤ�����ޤ��������ϥ���ѥ������Τǥ��顼�ˤʤ뤫�⤷��ޤ������Ǥʤ��Ƥ⡢�������ʤ��������Ǥ�������ȥ����륳���ɤ�ʸ�����ƥ�롢ʸ������Ǥ� escape sequence �ǽ٤��Ǥ���<br>
2798
<li><samp>Illegal multi-byte character sequence "XY" in quotation</samp><br>
2799
ʸ�����ƥ�롢ʸ�������header name ��� XY �Σ��Х����ܤ� multi-byte character�ʴ����ˤΣ��Х����ܤǤ��������Х����ܤ� multi-byte character �Σ��Х����ܤǤϤ���ޤ����"XY" ��ɽ���ϲ�����Ϥ��ˡ������ multi-byte character �Ȥߤʤ��������Х����ܤ� single byte character �Ȥ��ơ����Х����ܤϼ���ʸ���Ȥ��ư����ޤ���<br>
2800
�����볰�������ϰϤΥ����ɤǤ���С��������˥ϽФޤ��ޤ���������ϰϤˤ�ºݤˤ�ʸ���Τʤ��꤬�Ȥ����ɤ����ˤ���ޤ�����<b>mcpp</b> �Ϥ����ޤǤϥ����å����ޤ�������ϰϤϼ����̤�Ǥ���<br>
2803
<tr><th>encoding </th><td>first byte </td><td>second byte</td></tr>
2804
<tr><th>shift-JIS </th><td>0x81-0x9f, 0xe0-0xfc</td><td>0x40-0x7e, 0x80-0xfc</td></tr>
2805
<tr><th>EUC-JP </th><td>0x8e, 0xa1-0xfe </td><td>0xa1-0xfe</td></tr>
2806
<tr><th>KS C 5601 </th><td>0xa1-0xfe </td><td>0xa1-0xfe</td></tr>
2807
<tr><th>GB 2312-80 </th><td>0xa1-0xfe </td><td>0xa1-0xfe</td></tr>
2808
<tr><th>Big Five </th><td>0xa1-0xfe </td><td>0x40-0x7e, 0xa1-0xfe</td></tr>
2809
<tr><th>ISO-2022-JP</th><td>0x21-0x7e </td><td>0x21-0x7e</td></tr>
2812
ISO-2022-JP �ˤ�ʸ�������ɤΤۤ��� shift sequence �Ȥ�����Τ�����ޤ���Shift sequence ���̤ˤ���ȡ�UTF-8 �ʳ��Ϥ��٤� multi-byte character �ϣ��Х��ȤǤ���<br>
2813
UTF-8 �Ǥ� multi-byte character �ϣ��Х��Ȥޤ��ϣ��Х��ȤǤ��ꡢ�����ϣ��Х��Ȥ� encode ����ޤ������Х����ܤ� 0xc2-0xef�����Х����ܤȣ��Х����ܤ� 0x80-0xbf ���ϰϤˤ���ޤ������ܺ٤Ͼ�ά���ޤ����ɤ���ˤ��Ƥ⡢���Х����ܤޤǤ�����٤��ϰϤˤʤ���Фʤ�ޤ���<br>
2814
�ʤ���EUC-JP �� 0x8f + 0xa1-0xfe + 0xa1-0xfe �Σ��Х��� encoding ��JIS X 0212 �Τ�������������ˤϣ�ʸ���Ȥ��Ƥ�ǧ���Ǥ�����0x8f, 0xa1-0xfe + 0xa1-0xfe �Σ�ʸ���Ȥ���ǧ������ޤ��������η�̡��������˥�Ф���#if ����Υ磻��ʸ�������ɾ���ʳ��ϡ�������ư��ޤ���EUC-JP �Ǥϣ��Х����ܤ� 0x8e ��ʸ����JIS X 0201 �Τ�����Ⱦ�ѥ������ʡˤϣ��Х��� encoding �Ǥ���Τǡ�multi-byte character �Ȥ��ư����ޤ���<br>
2815
���Υ������˥ϥ����åפ���� #if group ����ǤϽФޤ���<br>
2816
<li><samp>"/*" in comment</samp><br>
2817
��������� /* �Ȥ��� sequence ������ޤ����տޤ��ƽ��ΤǤʤ���С������Ȥ��Ĥ�˺��Ǥ��礦�������Ȥϥͥ��ȤǤ��ޤ���<br>
2818
<li><samp>Too long identifier, truncated to "very_long_identifier"</samp><br>
2819
Identifier ��Ĺ���� <i>IDMAX</i> ��Ķ���Ƥ���Τǡ�<i>IDMAX</i> �˽̤�ޤ�����<br>
2820
<li><samp>Illegal digit in octal number "089"</samp><br>
2821
���ʤο��ͥȡ�������� 8 �ޤ��� 9 ��ʸ��������ޤ���pre-Standard �⡼�ɤǤ����Фޤ���Standard �⡼�ɤǤ��̾�ιԤο��ͥȡ�����ˤĤ��Ƥ�������Ƚ��Ϥ��ޤ���#if ���ˤ��Υȡ�������С������ Not an integer ���顼�ΰ��Ȥʤ�ޤ���<br>
2822
<li><samp>Unterminated string literal, catenated to the next line</samp><br>
2823
����������Ĥ��Ƥ��ʤ�ʸ�����ƥ����̾�ϥ��顼�Ǥ�����-lang-asm (-x assembler-with-cpp, -a) ���ץ����ǵ�ư���줿���ϡ�����ϹԤ�ޤ���ʸ�����ƥ��Ȳ�ᤷ�ơ�'\n' ���������Ƽ��ιԤ�Ϣ�뤷�ޤ������������������ν�������åȤϲ���ʤ��Τǡ������ܤ���ʸ�����ƥ���Ϣ��פε�ǽ��ȤäƽƤ���������<br>
2826
<h3><a name="5.5.2" href="#toc.5.5.2">5.5.2. ���뤷�ʤ��������ե�����Υ������˥�</a></h3>
2827
<p>�������ե�����κǸ�ιԤ�����Ⱦü�Ǥ�����ˡ����Υ������˥��Фޤ���old_prep �⡼�ɤǤϥ������˥�Фޤ���</p>
2829
<li><samp>End of file with no newline, supplemented newline</samp><br>
2830
�ե����뤬���ԥ����ɤΤʤ��Ԥǽ���äƤ��ƤϤʤ�ޤ����ԥ����ɤ��䤤�ޤ���<br>
2831
<li><samp>End of file with \, deleted the \</samp><br>
2832
�ե����뤬 <backslash><newline> �ǽ���äƤ��ƤϤʤ�ޤ���<backslash> �������ޤ���<br>
2833
<li><samp>End of file with unterminated comment, terminated the comment</samp><br>
2834
�����Ȥ��Ĥ�˺��Ǥ��������Ȥ��Ĥ��ޤ���<br>
2837
pre-Standard �⡼�ɤǤ����Фޤ����Standard �⡼�ɤǤϥ��顼�ˡ����Ϥν����Ǥʤ����ϡ������Υ������˥�̵�뤷�ƽ�����³���ޤ��������η�̤Ϥ����̯�ʥ��顼������������Ǥ��礦��<i>OLDPREP</i> �⡼�ɤǤ� unterminated macro call �ʳ��ϥ������˥�����Фޤ���</p>
2839
<li><samp>End of file within #if (#ifdef) section started at line 123</samp><br>
2840
<li><samp>End of file within macro call started at line 123</samp><br>
2841
<li><samp>End of file with unterminated #asm block started at line 123</samp><br>
2842
123 �Ԥ� #asm ���б����� #endasm ������ޤ���<br>
2845
<h3><a name="5.5.3" href="#toc.5.5.3">5.5.3. �ǥ��쥯�ƥ��ֹԤ˴ؤ���Ƽ�Υ������˥�</a></h3>
2847
<li><samp>The macro is redefined</samp><br>
2848
�����³���ư���������Τ���ե�����̾�ȹ��ֹ椬ɽ������ޤ���
2850
�ޥ����������Ȥϰ�ä����ƤǺ��������ޤ�����
2851
����������������Ƥ��ʤ��˰㤤����ޤ���Ʊ��̾���Υޥ������������ʣ���Ƥ�����ϡ����ξ����������Ƥ��ʤ��Ⱥ�����Ȥʤꡢ���Υ������˥��Фޤ���<br>
2853
<li>�ѥ����ο���Ʊ����<br>
2854
<li>�ִ��ꥹ�Ȥ�Ʊ���ʤ��������ȡ�����֤Σ��İʾ��
2855
white spaces �Ϥ����Ĥ��äƤ⣱�ĤȤߤʤ���<i>POSTSTD</i> �Ǥ� token separator �����äƤ�ʤ��Ƥ⼫ưŪ�� a space ���Ѵ�����Τǡ�token separator �ΰ㤤������ˤʤ�ʤ��ˡ�<br>
2856
<li><i>STD</i> �⡼�ɤǤϥѥ���̾��Ʊ����<i>POSTSTD</i> �ǤϤ���ϥ����å����ʤ���pre-Standard �⡼�ɤǤ�����å����ʤ���<br>
2859
<li><samp>Unknown argument "name"</samp><br>
2860
#pragma MCPP debug, #debug �ΰ����Ȥ��� "name" �ϼ�������Ƥ��ޤ���<br>
2861
<li><samp>No argument</samp><br>
2862
#pragma MCPP debug, #debug �ΰ���������ޤ���<br>
2863
<li><samp>Not an identifier "123"</samp><br>
2865
debug, #debug �ΰ����� identifier �ǤϤ���ޤ���<br>
2870
<li><samp>"and" is defined as macro</samp><br>
2871
C++ �� and ���ޥ����Ȥ����������ޤ�����
2873
C95 �Ǥ� <iso646.h> �ǥޥ����Ȥ����������� "and" ���Σ������̾���ϡ�
2874
C++ �Ǥ� operator token �Ǥ���C++ �ǤϤ���ϥޥ����Ȥ���������뤳�Ȥ��Ǥ��ʤ��ΤǤ���������� operator �Ȥ��Ƽ������Ƥ��ʤ������ϤǤ�Ȥ���褦�ˡ��ޥ����Ȥ���������뤳�Ȥ�����ʤ��饦�����˥�Ф��ޤ���<br>
2876
<p>���� <i>STD</i> �⡼�ɤξ������Ǥ���</p>
2878
<li><samp>No space between macro name "MACRO" and repl-text</samp><br>
2880
�ԤΥޥ���̾���ִ��Υꥹ�ȤȤδ֤˥��ڡ���������ޤ����̾�Ϥ��ꤨ�ʤ����ȤǤ�����<br>
2881
<pre>#define THIS$AND$THAT(a, b) ((a) + (b))</pre>
2882
�Ȥ����դ��˥ޥ���̾�˵��ʳ���ʸ�����Ȥ��Ƥ���ȡ�<br>
2883
<pre>#define THIS $AND$THAT(a, b) ((a) + (b))</pre>
2885
���Υ������˥��Фޤ���<br>
2887
<p>�ʲ��� #pragma �˴ؤ��륦�����˥�
2888
Standard �⡼�ɤξ������Ǥ����������˥ϽФƤ⤽�ιԤϸ�§�Ȥ��Ƥ��Τޤ��Ϥ���ޤ�����#pragma MCPP, #pragma GCC �ǻϤޤ�ԤϽ��Ϥ��ޤ���</p>
2890
<li><samp>No sub-directive</samp><br>
2891
#pragma �Ԥ˲��ΰ����⤢��ޤ����ιԤ�̵�뤵��ޤ���<br>
2892
<li><samp>Unknown encoding "encoding"</samp><br>
2894
__setlocale( "encoding") �ǻ��ꤵ�줿 "encoding" �Ȥ��� encoding �ϼ������Ƥ��ޤ���encoding ̾�ˤĤ��Ƥ� <a href=#2.8>2.8</a> �Ƥ���������<br>
2895
<li><samp>Too long encoding name "encoding"</samp><br>
2896
#pragma __setlocale( "long-long-encoding") �ǻ��ꤵ�줿 "long-long-encoding" �Ȥ��� encoding ̾�� 19 �Х��Ȥ�Ķ���Ƥ���Τǡ�̵�뤷�ޤ���<br>
2898
<li><samp>Bad push_macro syntax</samp><br>
2899
<li><samp>Bad pop_macro syntax</samp><br>
2900
#pragma MCPP push_macro, #pragma MCPP pop_macro, #pragma push_macro, #pragma pop_macro �ι�ʸ���ְ�äƤ��ޤ��������� #pragma �Ǥϰ����ϥޥ���̾�� ", " �ǰϤߡ�����ˤ���� (, ) �ǰϤ�ǡ�("MACRO") �Ȥ��ʤ���Фʤ�ޤ����Visual C �ߴ��Τ���ξ�Ĺ�ʻ��ͤǤ���ˡ�<br>
2901
<li><samp>"MACRO" has not been defined</samp><br>
2902
#pragma MCPP push_macro, #pragma MCPP pop_macro, #pragma push_macro, #pragma pop_macro �ΰ����Ǥ��� ("MACRO") �� MACRO �Ϥ��⤽��ޥ����Ȥ����������Ƥ��ޤ���<br>
2903
<li><samp>"MACRO" is already pushed</samp><br>
2904
#pragma MCPP push_macro( "MACRO") �� MACRO �Ϥ��Ǥ� push ���졢����ˤ��θ�� #undef ����Ƥ��ޤ���MACRO �κ�������ʤ��� push �Ǥ��ޤ���<br>
2905
<li><samp>"MACRO" has not been pushed</samp><br>
2906
#pragma MCPP pop_macro( "MACRO") �� MACRO �� push ����Ƥ��ޤ����Ǥ� pop ���줿�Τ��⤷��ޤ���<br>
2908
<p>GCC �ǤǤϼ��Υ������˥��Фޤ���</p>
2910
<li><samp>Ignored #ident</samp><br>
2911
<li><samp>Ignored #sccs</samp><br>
2912
#ident, #sccs �ιԤ�̵�뤷�ޤ���
2915
<p>��������GCC �ѤǤ� #pragma GCC �� poison, dependency, system_header
2916
�Τɤ줫��³���Ԥ� class 2 �Υ������˥�Ф��������ǼΤƤޤ�������� GCC V.3 �Ǥϥץ�ץ����å������������ΤǤ�����<b>mcpp</b> �Ͻ������ޤ���</p>
2917
<p>���� pre-Standard �⡼�ɤǽФޤ���Standard �⡼�ɤǤϥ��顼�ˡ�</p>
2919
<li><samp>Not in a #if (#ifdef) section in a source file</samp><br>
2920
<li><samp>Line number "0x123" isn't a decimal digits sequence</samp><br>
2922
<p>���� <i>KR</i> �⡼�ɤξ��ȡ�Standard �⡼�ɤ� #pragma once, #pragma MCPP push_macro, #pragma MCPP pop_macro, #pragma push_macro, #pragma pop_macro, #pragma __setlocale, #pragma setlocale, #pragma MCPP put_defines, #pragma MCPP debug, #pragma MCPP end_debug �ξ������Фޤ���Standard �⡼�ɤΤ���¾�ξ��ϥ��顼��<i>OLDPREP</i> �Ǥϥ��顼�⥦�����˥�Фʤ��ˡ�</p>
2924
<li><samp>Excessive token sequence "junk"</samp><br>
2927
<h3><a name="5.5.4" href="#toc.5.5.4">5.5.4. #if ���˴ؤ��륦�����˥�</a></h3>
2928
<p>���Σ��Ĥ� #if, #elif, #assert �ΰ����˴ؤ��륦�����˥Ǥ���</p>
2930
<li><samp>Macro "MACRO" is expanded to "defined"</samp><br>
2931
#if ���ǥޥ��� MACRO ��Ÿ�������Ȥ��� defined �ˤʤ�ޤ���������� identifier �ǤϤʤ��黻�ҤȤ��ư����ޤ��������䤷���ʥޥ����Ǥ���Standard C �Ǥ� undefined�ˡ�<br>
2932
<li><samp>Macro "MACRO" is expanded to "sizeof"</samp><br>
2933
#if ���ǥޥ��� MACRO ��Ÿ�������Ȥ��� sizeof �ˤʤ�ޤ���������� identifier �ǤϤʤ��黻�ҤȤ��ư����ޤ��������䤷���ʥޥ����Ǥ���pre-Standard �ξ��Ǥ���<br>
2934
<li><samp>Macro "MACRO" is expanded to 0 token</samp><br>
2935
�ޥ��� MACRO �����ĤΥȡ������Ÿ������ޤ�����#if ���Ǥ��줬ȯ������ȡ������Ƥ��ϲ��餫�Υ��顼�ˤʤ�ޤ������Υ������˥ϥ��顼�θ��������餫�ˤ��뤿��Τ�ΤǤ���<br>
2937
<p>���� #if, #elif, #assert �ΰ����˴ؤ��륦�����˥Ǥ�����ɾ�����åפ������ʬ���ǤϽФޤ����-W8 ���ץ����ǤϽФ�ˡ�</p>
2939
<li><samp>Undefined escape sequence '\x'</samp><br>
2940
\x �Ȥ��� escape sequence �Ϥ���ޤ���ñ�ʤ� \x �Ȥ������Х��Ȥ� sequence �Ȥ���ɾ�����ޤ���\x �ˣ�����ʸ����³�� escape sequence �Ϥ������ˡ�UCN �Υ���������ʤ�����Ʊ�ͤǤ���<br>
2942
<p>���� #if (#elif, #assert) �Ԥ�������α黻�ȷ��˴ؤ��륦�����˥Ǥ�����Ϥꥹ���åפ������ʬ���˴ؤ��ƤϽФޤ����-W8 ���ץ����ǤϽФ�ˡ�</p>
2943
<p>Standard �⡼�ɤǤ� #if ���� C90, C++98 �Ǥ� long long / unsigned long long ��ɾ�����ޤ�����������C90, C++98 �� long / unsigned long ���ϰϤ�Ķ�������ϥ������˥�Ф��ޤ���LL �Ȥ��� suffix �ˤĤ��Ƥ�Ʊ�ͤˡ�C99 �ʳ��Ǥϥ������˥��Фޤ��������Υ������˥� compiler-independent-build �Ǥ� class 1 �ǡ�compiler-specific-build �Ǥ� class 2 �Ǥ���<br>
2944
<i>POSTSTD</i> �⡼�ɤǤ�ʸ������� #if ���ˤϻȤ��ʤ��Τǡ��������˥�Фޤ���ʥ��顼�ˤʤ�ˡ�</p>
2946
<li><samp>Constant "123456789012" is out of range of (unsigned) long</samp><br>
2947
����������ͤ� (unsigned) long ��ɽ���Ǥ����ϰϤ�Ķ���Ƥ��ޤ���<br>
2948
<li><samp>Integer character constant 'abcde' is out of range of unsigned long</samp><br>
2949
ʸ����� 'abcde' ���ͤ� unsigned long ��ɽ���Ǥ����ϰϤ�Ķ���Ƥ��ޤ���<br>
2950
<li><samp>Wide character constant L'abc' is out of range of unsigned long</samp><br>
2951
�磻��ʸ����� L'abc' ���ͤ� unsigned long ��ɽ���Ǥ����ϰϤ�Ķ���Ƥ��ޤ���<br>
2952
<li><samp>Result of "op" is out of range of (unsigned) long</samp><br>
2953
�黻�� op �ˤ��黻�η�̤� (unsigned) long ���ϰϳ��Ȥʤ�ޤ�����op �ϣ���黻�� *, /, %, +, - �Τɤ줫�Ǥ�������������ɽ������������ξ��ϡ�ñ�� - �黻�Ҥ� -<tt>LONG_MIN</tt> �ǥ����С��ե����Ȥʤ�ޤ���Unsigned long �ϥ����С��ե������뤳�Ȥ��ʤ��Τǥ��顼�ˤϤʤ�ޤ������Ū�ʱ黻��̤��ϰϳ��Ȥʤ���ϥ������˥��Фޤ���<br>
2954
<li><samp>LL suffix is used in other than C99 mode "123LL"</samp><br>
2955
C99 �ʳ��Υ⡼�ɤ� LL �Ȥ��������Ҥ��Ȥ��Ƥ��ޤ���<br>
2956
<li><samp>Shift count "40" is larger than bit count of long</samp><br>
2958
<<, >> �α� operand ���ͤ� long �Υӥå�����Ķ���Ƥ��ޤ���<br>
2960
<li><samp>Negative value "-1" is converted to positive "18446744073709551615"</samp><br>
2961
���ʤ������Ĥ��Ȥκ���黻�η�̡����Ĥ�����������ʤ����������Ѵ�����ޤ���������ϥ��顼�ǤϤ���ޤ������֤����β��餫�δְ㤤�Ǥ��礦������黻�� *, /, %, +, -, <, >, <=, >=, ==, !=, &, ^, | ��ξ�ա�����ӣ���黻�� ? : ���裲���裳 operand �ˤĤ��Ƥϡ��������������ʤ��ξ��ϡ�¾�������Ĥ��Ǥ����ʤ����Ѵ�����ޤ���<br>
2962
<li><samp>Illegal shift count "-1"</samp><br>
2963
�ӥåȥ��եȱ黻�� <<, >> �α� operand ���ͤ�����Ǥ����ޤ��� long long �Υӥå�����Ķ���Ƥ��ޤ�������⥽�����δְ㤤�Ǥ��礦��<br>
2964
<li><samp>"op" of negative number isn't portable</samp><br>
2965
����黻�� op �η�̤ϡ�operand �ΰ����ޤ�������������Ǥ������ portability ������ޤ���op �� /, %, >> �Τɤ줫�Ǥ����� operand ������ξ��� >> �黻�Ҥϡ����ѥ��ե�̿������ CPU ��ν����Ϥδ֤Ǥ� portability ������Ϥ��Ǥ����ʣ��ӥåȤΥ��եȤǣ��dz�ä���̤ˤʤ�ˡ������Ǥʤ� CPU ��ν����ϤȤδ֤Ǥ� portability ������ޤ���<br>
2968
<h3><a name="5.5.5" href="#toc.5.5.5">5.5.5. �ޥ���Ÿ���˴ؤ��륦�����˥�</a></h3>
2969
<p>�����Υ������˥ǤϤ��Υޥ��������ɽ�����졢���Υޥ�������Τ��륽�����ե�����̾�ȹ��ֹ��ɽ������ޤ���</p>
2971
<li><samp>Macro started at line 123 swallowed directive-like line</samp><br>
2972
123 �Ԥ���Ϥޤä��ޥ����� # �ǻϤޤ�Ԥ�����Ȥ����ɤ߹��ߤޤ��������֤ޥ����ƤӽФ��δְ㤤�Ǥ��礦���ޥ������ʤ���С�# �ǻϤޤ�Ԥ� directive line �Ȥ��Ʋ�ᤵ���Ϥ��Ǥ��������åפ���� #if group �Ǥϥޥ��������äƤ�Ÿ������ʤ��Τǡ����ιԤ� directive line �Ȥ��Ʋ�ᤵ��ޤ���<br>
2973
<li><samp>Replacement text "sub(" of macro "head" involved subsequent text</samp><br>
2974
�ޥ��� "head" ���ִ��ꥹ�� "sub(" �κ������ǥޥ����ƤӽФ��θ���Υƥ����Ȥ������ޤ�ޤ���������� K&R 1st. ���� Standard C �˻��ޤǥ��顼�ǤϤ���ޤ����⤷�տޤ����ˤ��μ�Υޥ�����ȤäƤ��Υ������˥��Ф��ʤ顢����ϥޥ�������ޤ��ϥޥ����ƤӽФ��δְ㤤�Ǥ����տޤ��ƻȤä��ΤǤ���а۾�ʥޥ����Ǥ���<br>
2975
���Υ������˥� <i>STD</i> �⡼�ɤξ������Ǥ���<i>COMPAT</i> �⡼�ɤǤϤ��Υ������˥� class 8 �Ǥ����Фޤ���pre-Standard �⡼�ɤǤ�Ʊ�����ݤϵ�����ޤ������������˥ϽФޤ���<i>POSTSTD</i> �ǤϺ��������ִ��ꥹ�Ȥθ���Υƥ����Ȥϼ����ޤʤ��Τǡ����Υ������˥Ϸ褷�ƽФޤ����unterminated macro call �Υ��顼�ˤʤ���ȡ��ޤä�����ä�Ÿ����̤ˤʤ���Ȥ���ˡ�<br>
2976
<li><samp>Less than necessary N argument(s) in macro call "macro( a)"</samp><br>
2977
�ޥ����ƤӽФ��ΰ�������ޤ����̾�Ϥ���ϥ��顼�Ǥ��������Ѱ����ޥ����ǰ�������Ĥ�����ʤ��ä����ϥ������˥ˤȤɤ�Ƥ��ޤ���GCC �β��Ѱ����ޥ����� C99 �Τ���Ȥδ֤ΰܿ���ξ㳲�餹����Ǥ���<br>
2979
<p>���Σ��Ĥ� <i>OLDPREP</i> �⡼�ɤ����Ǥ���¾�Υ⡼�ɤǤϥ��顼�ˡ�</p>
2981
<li><samp>Less than necessary N argument(s) in macro call "macro( a)"</samp><br>
2982
<li><samp>More than necessary N argument(s) in macro call "macro( a, b, c)"</samp><br>
2985
<h3><a name="5.5.6" href="#toc.5.5.6">5.5.6. ���ֹ�˴ؤ��륦�����˥�</a></h3>
2986
<p>���Ϲ��ֹ�˴ؤ��륦�����˥Ǥ���</p>
2988
<li><samp>Line number "32768" is out of range of [1,32767]</samp><br>
2989
C90, C++ �Ǥ� #line ����������
2990
[1,32767] ���ϰϤˤʤ���Фʤ�ޤ���0 �⥨�顼�Ǥ���<tt>__STDC_VERSION__</tt> >= 199901L �ޤ��� <tt>__cplusplus</tt> >= 199901L �ξ��Ϥ��ΰ�����ͭ���ϰϤ� [1,2147483647] �Ǥ����������äơ�C90, C++ �Ǥ� [32768,2147483647] ���ϰϤϥ��顼�ǤϤʤ��������˥ˤȤɤ�Ƥ��ޤ���<br>
2991
Standard �⡼�ɤξ��Ǥ���<br>
2993
<p>C90 �Ǥ� #line �� 32767
2994
���Ͼ�����������˶ᤤ�ֹ����ꤷ����硢���λ����Ǥϥ��顼�ˤʤ�ʤ���ΤΡ������줳���ϰϤ��С����ޤ��������С�������硢<b>mcpp</b> �Ǥ� warning ��Ф�����ǹ��ֹ�Τޤ����䤷³���Ƥ����ޤ�����������������ѥ������Τˤ�äƤϤ����������ʤ����⤷��ޤ���#line �λ��꤬���ߤ��礭�����Ȥ�����Ǥ���</p>
2996
<li><samp>Line number 32768 got beyond range</samp><br>
2997
�������ι��ֹ椬 32768 ��ã���ޤ��������λ����ǣ������ warning ���Фޤ���<br>
2998
<li><samp>Line number 32769 is out of range</samp><br>
2999
�ޥ��� <tt>__LINE__</tt> ��Ÿ�������Ȥ�����32767 ��Ķ���ޤ�����<br>
3002
<h3><a name="5.5.7" href="#toc.5.5.7">5.5.7. #pragma MCPP warning (#warning)</a></h3>
3004
<li><samp>#warning</samp><br>
3005
<li><samp>#pragma MCPP warning</samp><br>
3007
<b>mcpp</b> warning (#warning) �ǥ��쥯�ƥ��֤��¹Ԥ���ޤ��������ιԤ�ɽ������ޤ��ʰ������Τ�Τ˥ȡ����顼��Unterminated string ���ˤ����ä����� #pragma MCPP warning �ϼ¹Ԥ���ʤ��ˡ����Υǥ��쥯�ƥ��֤��ص��� warning level 1 �ΤȤ����˷Ǻܤ��Ƥ��ޤ������ºݤˤ� warning level �˴ط��ʤ�ɬ��ɽ������ޤ���<br>
3008
#pragma MCPP warning �� Standard �⡼�ɤξ��ǡ�pre-Standard �⡼�ɤǤ� #warning �Ǥ���<br>
3011
<h2><a name="5.6" href="#toc.5.6">5.6. Warning (class 2)</a></h2>
3012
<p>�ְ㤤�ǤϤʤ��� portability ������Τ��륱�����ˤĤ��ƤΥ������˥Ǥ���</p>
3014
<li><samp>Converted [CR+LF] to [LF]</samp><br>
3015
���ԥ����ɤ� [CR+LF] ���� [LF] ���Ѵ����ޤ��������Υ������˥� compiler-independent-build �Ǥϥ��饹���ǡ�compiler-specific-build �Ǥϥ��饹���Ǥ���<br>
3017
<p>#if ���� Standard �⡼�ɤǤ� C90, C++98 �Ǥ� long long / unsigned long long ��ɾ�����ޤ�����������C90, C++98 �� long / unsigned long ���ϰϤ�Ķ�������ϥ������˥�Ф��ޤ���LL �Ȥ��� suffix �ˤĤ��Ƥ�Ʊ�ͤˡ�C99 �ʳ��Ǥϥ������˥��Фޤ���Visual C, Borland C �� compiler-specific-build �Ǥ� I64 �Ȥ��� suffix ���Ȥ��ޤ���������ˤĤ��Ƥ�Ʊ�ͤǤ��������Υ������˥� compiler-independent-build �Ǥ� class 1 �ǡ�compiler-specific-build �Ǥ� class 2 �Ǥ���</p>
3019
<li><samp>Constant "123456789012" is out of range of (unsigned) long</samp><br>
3020
<li><samp>Integer character constant 'abcde' is out of range of unsigned long</samp><br>
3021
<li><samp>Wide character constant L'abc' is out of range of unsigned long</samp><br>
3022
<li><samp>Result of "op" is out of range of (unsigned) long</samp><br>
3023
<li><samp>LL suffix is used in other than C99 mode "123LL"</samp><br>
3024
<li><samp>I64 suffix is used in other than C99 mode "123i64"</samp><br>
3025
<li><samp>Shift count "40" is larger than bit count of long</samp><br>
3027
<p>���Σ��Ĥ� Standard �⡼�ɤξ������Ǥ���</p>
3029
<li><samp>Parsed "//" as comment</samp><br>
3030
// ��������ޤǤ��ȤȤ��Ʋ�ᤷ�ޤ���C99 ����� C++ �ǤϹ�ˡ�Ǥ�����C90 �Ǥ⥦�����˥�Ф�����ǥ����ȤȤ��ư����ޤ���<br>
3031
<li><samp>Variable argument macro is defined</samp><br>
3032
���Ѱ����ޥ����� C99 �λ��ͤǤ���C90, C++ �Dz��Ѱ����ޥ������������ޤ�����<br>
3033
<li><samp>Empty argument in macro call "MACRO( a, ,"</samp><br>
3034
�ޥ����ƤӽФ��˥���ΰ���������ޤ���<b>mcpp</b> �ǤϤ��ΰ����ϣ��Ĥ� pp-token sequence �Ǥ���Ȥߤʤ��� reasonable �ʽ����ޤ�������������������� C99 �ǤϹ�ˡ�Ǥ����Τ� C90 �Ǥ� undefined �Ǥ��ꡢportability ������ޤ����',' ������ʤ��Τϥ�������ǤϤʤ��������ʤ��Ȥߤʤ������顼�Ȥ��롣���Ĥΰ����ȣ��ĤΥ�������ȤϹ�ʸ�塢���̤��Ĥ��ʤ������ɤ���Ǥ��äƤ⥨�顼�ˤϤ��ʤ��ˡ��������˥��������Τϰ��̤ˤ��ɤ���������ǤϤ���ޤ���ǽ�ʾ��ϡ�<br>
3038
���Ȥ��ơ����� <tt>EMPTY</tt> ���������ʬ�˽Τ��ɤ��Ǥ��礦��<br>
3039
<li><samp>Skipped the #pragma line</samp><br>
3040
GCC V.3 �Ǥ� #pragma GCC <args> �Ȥ������� pragma �����ꡢ������ˤϥץ�ץ����å������������Τ⤢��ޤ�����<b>mcpp</b> �Ϥ����ϥ��ݡ��Ȥ��Ƥ��ޤ���<br>
3041
��������°�Υץ�ץ����å��Ͻ������뤬 <b>mcpp</b> �Ͻ������ʤ�#pragma �ˤĤ��Ƥϡ����Υ������˥��Фޤ���<br>
3042
<li><samp>Not a valid preprocessing token "+12"</samp><br>
3043
## �黻�Ҥˤ�äƣ��Ĥ� pp-token ��Ϣ�뤷���Ȥ�����"+12" �Ȥ��� invalid �ʤ�Τˤʤ�ޤ������̾�ϥ��顼�Ǥ�����-lang-asm (-x assembler-with-cpp, -a) ���ץ����ǵ�ư���줿���ϥ��顼�ˤϤʤ�ޤ���<br>
3045
<p>���� <i>POSTSTD</i> �⡼�ɤξ������Ǥ���</p>
3047
<li><samp>Header-name enclosed by <, > is an obsolescent feature <stdio.h></samp><br>
3048
<stdio.h> �Ȥ�������
3049
header name ���ѻߤ��������ͤǤ���"stdio.h" ��ȤäƤ���������<br>
3051
<p>���Σ��ĤΥ������˥�����Υ����ƥ�����Τ�ΤǤ��������Υ����ƥ�Ǥ��������ץ������Ǥ�����portability ���ʤ��Τǡ�ǰ�Τ���˥������˥�Ф��ޤ���</p>
3053
<li><samp>#include_next is not allowed by Standard</samp><br>
3054
<li><samp>#warning is not allowed by Standard</samp><br>
3055
�����Υǥ��쥯�ƥ��֤� GCC �Ǥ�ͭ���Ǥ��������ʳ��Τ�ΤǤ��ꡢportability ������ޤ���<br>
3057
<li><samp>Converted \ to /</samp><br>
3058
#include directive �� header name ��� \ ���ޤޤ�Ƥ���Τǡ������ / ���Ѵ����ƽ������ޤ�������� Windows ���ΣϣӤǤ������� path-delimiter �Ǥ���������Ǥ� undefined �Ǥ���/ ��Ȥä��ۤ����ְ㤤������ޤ����Υ������˥ϣ����Фޤ���Windows ���ư�� <b>mcpp</b> �����Τ�ΤǤ��ʤ�������\ �� " ��ľ���ˤ�����Ϥ��� " ��ʸ�����ƥ��� delimiter �Ȥϲ�ᤷ�ʤ��Τǡ�unterminated string literal �Υ��顼�Ȥʤ�ˡ�<br>
3059
<li><samp>'$' in identifier "THIS$AND$THAT"</samp><br>
3060
Identifier ��� '$' ���ޤޤ�Ƥ��ޤ������Υ������˥ϣ����Фޤ���<i>DOLLAR_IN_NAME</i> �� <i>TRUE</i> �ˤ��ƥ���ѥ��뤵�줿 <b>mcpp</b> �Ǥ����Фޤ��������Υ����ƥ�Ǥ� '$' �� identifier ���ͭ����ʸ���Ǥ�����portability �Ϥ���ޤ���¾�Υ����ƥ�Ǥ� '$' �ϣ�ʸ�������� pp-token �Ȥʤ�Τǡ�THIS$AND$THAT �� THIS $ AND $ THAT �Σ��Ĥ� pp-token ��ʬ��ޤ��ʤ��η�̡�compile phase �ǥ��顼�ˤʤ�Ϥ��Ǥ���ˡ�<br>
3064
<h2><a name="5.7" href="#toc.5.7">5.7. Warning (class 4)</a></h2>
3065
<p>Standard C �ǤϤ����Ĥ��� translation limits �ˤĤ��ơ�������ݾڤ��٤��ͤ��ꤷ�Ƥ��ޤ����ץ�ץ����å��Ϥ����ͤ�Ķ���� translation limits ����äƤ���ۤ������ͤ��ɤ��Ȥ�����ޤ���������������˰�¸���륽������ portability �����¤���ޤ���<b>mcpp</b> �ǤϤ����� translation limits �� system.H �Υޥ�����������뤳�Ȥ�Ǥ�դ�����Ǥ���褦�ˤʤäƤ��ޤ�����Standard �⡼�ɤǤϤ����ͤ� Standard C �κǾ��ͤ�Ķ���Ƥ�����ϡ����Τ��Ȥ����Ѥ��륽�������Ф��Ƥϥ������˥�Ф��ޤ����������������Ϥ�ɸ��إå��䥽�����ˤ�äƤ���ȯ�����̤ˤʤ�Τǡ�class 1, 2 ���鳰���Ƥ���ޤ���</p>
3067
<li><samp>Logical source line longer than 509 bytes</samp><br>
3068
�������������Ԥ�Ĺ���� 509 �Х��Ȥ�Ķ���Ƥ��ޤ���<br>
3069
<li><samp>Quotation longer than 509 bytes "very_very_long_string"</samp><br>
3071
ʸ�������header name ��Ĺ���� 509 �Х��Ȥ�Ķ���Ƥ��ޤ���<br>
3072
<li><samp>More than 8 nesting of #include</samp><br>
3074
�Υͥ��Ȥ�����٥��Ķ���ޤ���������٥�ˤʤä����������Υ������˥��Фޤ���<br>
3075
<li><samp>More than 8 nesting of #if (#ifdef) sections</samp><br>
3076
#if, #ifdef, #ifndef �Υͥ��Ȥ�����٥��Ķ���ޤ���������٥�ˤʤä����������Υ������˥��Фޤ���<br>
3077
<li><samp>More than 1024 macros defined</samp><br>
3078
�������Ƥ���ޥ����� 1025 �Ĥ�ã���ޤ��������ο��ˤ� pre-defined �ޥ����� header-file ��������줿�ޥ�����ޤޤ�Ƥ��ޤ���<br>
3079
<li><samp>String literal longer than 509 bytes "very_very_long_string"</samp><br>
3080
# �黻�Ҥ�Ȥä�������줿�ޥ�����Ÿ���ˤ�äơ�509 �Х��Ȥ�Ķ����Ĺ����ʸ�����ƥ�뤬��������ޤ�����<br>
3082
<p>���Υ������˥ϥ����åפ���� #if group �ǤϽФޤ���</p>
3084
<li><samp>More than 32 nesting of parens in #if expression</samp><br>
3086
���Υ��å��Υͥ��Ȥ�������٥��Ķ���ޤ�����������٥�ˤʤä��������Фޤ���<br>
3087
<li><samp>More than 31 parameters</samp><br>
3088
�ޥ�������Υѥ����ο���������Ķ���ޤ�����<br>
3089
<li><samp>Identifier longer than 31 bytes "very_very_long_name"</samp><br>
3091
��Ĺ���������Х��Ȥ�Ķ���Ƥ��ޤ���<br>
3093
<p><tt>__STDC_VERSION__</tt> >= 199901L
3094
�ξ��Ϥ����� translation limits �ϼ����̤�Ǥ���Identifier ��Ĺ���Ǥϡ�UCN �� multi-byte-character �Ϥ��줾�죱ʸ���ȿ����ޤ��ʥ������ΥХ��ȿ��ǤϤʤ�����̯�ʵ���Ǥ���ˡ�</p>
3097
<tr><th>�������������Ԥ�Ĺ�� </th><td>4095 �Х���</td></tr>
3098
<tr><th>ʸ�����ƥ�롢ʸ�������header name ��Ĺ��</th><td>4095 �Х���</td></tr>
3099
<tr><th>Identifier ��Ĺ�� </th><td>63 ʸ��</td></tr>
3100
<tr><th>#include �Υͥ��� </th><td>15 ��٥�</td></tr>
3101
<tr><th>#if, #ifdef, #ifndef �Υͥ��� </th><td>63 ��٥�</td></tr>
3102
<tr><th>#if ���Υ��å��Υͥ��� </th><td>63 ��٥�</td></tr>
3103
<tr><th>�ޥ����Υѥ����ο� </th><td>127 ��</td></tr>
3104
<tr><th>����Ǥ���ޥ����ο� </th><td>4095 ��</td></tr>
3107
<p>-+ ���ץ����� C++ �Υץ�ץ���������ꤷ�����ϡ����Τ褦�� translation limits �Ȥ��ޤ������������ޥ����Υѥ����κ������ <b>mcpp</b> �Ǥ� 255 �ޤǤ��������Ǥ��ʤ��Τǡ�256 �ĤǤϥ��顼�Ȥʤ�ޤ���</p>
3110
<tr><th>�������������Ԥ�Ĺ�� </th><td>65536 �Х���</td></tr>
3111
<tr><th>ʸ�����ƥ�롢ʸ�������header name ��Ĺ��</th><td>65536 �Х���</td></tr>
3112
<tr><th>Identifier ��Ĺ�� </th><td>1024 ʸ��</td></tr>
3113
<tr><th>#include �Υͥ��� </th><td>256 ��٥�</td></tr>
3114
<tr><th>#if, #ifdef, #ifndef �Υͥ��� </th><td>256 ��٥�</td></tr>
3115
<tr><th>#if ���Υ��å��Υͥ��� </th><td>256 ��٥�</td></tr>
3116
<tr><th>�ޥ����Υѥ����ο� </th><td>256 ��</td></tr>
3117
<tr><th>����Ǥ���ޥ����ο� </th><td>65536 ��</td></tr>
3120
<p>���Υ������˥�ºݤˤϤ��뤵���Τǡ�class 1, 2 ���鳰���Ƥ���ޤ���</p>
3122
<li><samp>Converted 0x0c to a space</samp><br>
3123
��������� token separator �Ȥ��Ƥ� [FF], [VT], [CR] ��[CR][LF] �ǤϤʤ�ñ�Ȥ� [CR]�ˤΥ����ɤ� space ���Ѵ����ޤ������줬 directive �Ԥˤ������ Standard C �Ǥ� undefined �Ǥ��������ȡ�ʸ�����ƥ�롢ʸ�������Υ����ɤ��Ѵ����ޤ�����Ѵ����Ƥ�褤�ΤǤ��뤬��ʸ�����åȤϽ����ϰ�¸�ʤΤǡ�<b>mcpp</b> �ǤϤ��ޤ������ݤ��ʤ���ɬ�פʥ����å��ϥ���ѥ������ΤǹԤ���Ǥ������ˡ�¾���ǡ�token separator �Ȥ��Ƥ� [TAB] �� a space ���Ѵ����ޤ���������ϥ���ѥ����̤˲��αƶ���Ϳ���ʤ��Τǡʥץ�ץ����å��ˤȤäƤ⥳��ѥ������ΤˤȤäƤ� [TAB] �� space ��Ʊ����̣���������ʤ��ˡ��������˥ϽФ��ޤ���[FF] �ϼºݤΥ������˻����������ΤǤ����ֲ��ڡ����פ�տޤ��Ƥ���ΤǤ��礦�����������ʤ���������Ǥ���<br>
3124
<li><samp>Undefined symbol "name", evaluated to 0</samp><br>
3125
#if �Ԥ� identifier "name" �ϥޥ����Ȥ����ͤ��������Ƥ��ޤ���0 ��ɾ�����ޤ�������Ϸ褷�ƥ��顼�ǤϤ���ޤ����ץ������δְ㤤�Ǥ����ǽ��������ޤ���#if defined �ΰ����ˤϤ��Υ������˥ϽФޤ���#if name .. �Ȥ���Ȥ����� #if defined name && (name ..) �Ȥ��뤫���ޤ��� <b>mcpp</b> ��ư������� -D name=0 �Ȥ������ץ������դ��뤳�Ȥǡ����Υ������˥��뤳�Ȥ��Ǥ��ޤ���C++ �Ǥ� true, false �Ȥ����ȡ���������̰����ǡ��������˥ʤ��ˤ��줾�� 1, 0 ��ɾ�����ޤ���<br>
3126
<li><samp>Multi-character wide character constant L'ab' isn't portable</samp><br>
3127
�磻��ʸ��������ͤϡ�Ʊ������ʸ�����åȤν����ϴ֤Ǥ�����磻��ʸ���� encoding �������ϰ�¸�Ǥ��ꡢ���ξ塢Multi-character ��ɾ���λ���������ϰ�¸�ʤΤǡ������Ȥä� #if ���ϰܿ���������ޤ���<i>STD</i> �⡼�ɤǤ����Фޤ���<i>POSTSTD</i> �Ǥ� #if �����ʸ�������ǧ��ʤ��Τǥ��顼�ˤʤ�ޤ������Τ�Τ�Ʊ�ͤǤ���<br>
3128
<li><samp>Multi-character or multi-byte character constant '��' isn't portable</samp><br>
3129
Multi-character character constant �� multi-byte character character constant ���ͤ�ɾ���λ����Ͻ����ϰ�¸�ʤΤǡ������Ȥä� #if ���ϰܿ���������ޤ���<i>STD</i> �⡼�ɤǽФޤ���<br>
3131
<p>���Σ��Ĥ� Standard �⡼�ɤξ������Фޤ���</p>
3133
<li><samp>Macro with mixing of ## and # operators isn't portable</samp><br>
3134
�ؿ��ͥޥ���������ִ��ꥹ�����
3135
## # �Ȥ����ȡ�������¤Ӥ�����ޤ��������Σ��Ĥα黻�Ҥ�ͥ���̤� Standard C �Ǥ� unspecified �ʤΤǡ��ܿ���������ޤ���<b>mcpp</b> �Ǥ� # �����Ŭ�Ѥ��ޤ����ʤ����ؿ��ͥޥ�������ǵո����� # ## �Ȥ����ȡ�������¤Ӥ�����ȥ��顼�ˤʤ�ޤ���# �黻�ҤΥ��ڥ��ɤϥѥ����Ǥʤ���Фʤ�ʤ�����Ǥ���<br>
3136
<li><samp>Macro with multiple ## operators isn't portable</samp><br>
3137
�ޥ���������ִ��ꥹ�����ʣ���� ## �黻�Ҥ��֤ˣ��ĤΥȡ�����ޤ��ϥѥ���������Ϥ���Ǥ���ޤ�����## �黻�Ҥ�ɾ������� Standard C �Ǥ� unspecified �ʤΤǡ����Υޥ����ϰܿ����Τʤ���礬����ޤ���<b>mcpp</b> �Ǥ� ## �黻�ҤϺ����鱦�ؽ��Ŭ�Ѥ��Ƥ����ޤ���<br>
3141
<h2><a name="5.8" href="#toc.5.8">5.8. Warning (class 8)</a></h2>
3142
<p>�������δְ㤤�Ǥ����ǽ���Ͼ��ʤ���ǰ�Τ�������դ�¥����̣�ǡ����Υ�å��������Фޤ������������å�����Τ� -W8 �Υ��ץ����ǵ�ư���줿�������Ǥ���</p>
3143
<p>�����åפ���� #if group ����� preprocessing directive ���̾�� #if, #ifdef, #ifndef, #elif, #else, #endif ���б��ط����������å����ޤ���-W8 �Ǥ� Illegal directive, Unknown directive �Υ����å��⤷�ޤ����ޤ���Standard �⡼�ɤǤ� #if �Υͥ��Ȥ�����٥��Ķ�������⥦�����˥�Ф��ޤ���</p>
3145
<li><samp>Illegal #directive "123" (in skipped block)</samp><br>
3146
<li><samp>Unknown #directive "pseudo-directive" (in skipped block)</samp><br>
3147
<li><samp>Ignored #ident (in skipped block)</samp><br>
3148
<li><samp>Ignored #sccs (in skipped block)</samp><br>
3149
<li><samp>More than 8 nesting of #if (#ifdef) sections (in skipped block)</samp><br>
3150
<li><samp>#include_next is not allowed by Standard (in skipped block)</samp><br>
3151
<li><samp>#warning is not allowed by Standard (in skipped block)</samp><br>
3153
<p>���� #if ���˴ؤ��륦�����˥Ǥ����㤨�� #if a || b �Ȥ������Ǥϡ�a �����Ǥ���� b ��ɾ���ϹԤ��ޤ���������-W8 �Ȥ��Ƶ�ư����ȡ�ɾ������ʤ���ʬ���˴ؤ��Ƥ⤳���Υ������˥��Ф���ޤ������ξ��Ϥ������ (in non-evaluated sub-expression) �Ȥ������������դ����ޤ���</p>
3155
<li><samp>Constant "123456789012345678901" is out of range</samp><br>
3156
<li><samp>Constant "123456789012" is out of range of (unsigned) long</samp><br>
3157
<li><samp>LL suffix is used in other than C99 mode "123LL"</samp><br>
3158
<li><samp>I64 suffix is used in other than C99 mode "123i64"</samp><br>
3159
<li><samp>Shift count "40" is larger than bit count of long</samp><br>
3160
<li><samp>Integer character constant 'abcdefghi' is out of range</samp><br>
3161
<li><samp>Integer character constant 'abcde' is out of range of unsigned long</samp><br>
3162
<li><samp>Wide character constant L'abcdef' is out of range</samp><br>
3163
<li><samp>Wide character constant L'abc' is out of range of unsigned long</samp><br>
3164
<li><samp>8 bits can't represent escape sequence 'x123'</samp><br>
3165
<li><samp>16 bits can't represent escape sequence L'x12345'</samp><br>
3166
<li><samp>Division by zero</samp><br>
3167
<li><samp>Undefined symbol "name", evaluated to 0</samp><br>
3168
<li><samp>sizeof: Unknown type "type"</samp><br>
3169
<li><samp>sizeof: Illegal type combination with "type"</samp><br>
3170
<li><samp>Multi-character wide character constant L'ab' isn't portable</samp><br>
3171
<li><samp>Multi-character or multi-byte character constant '��' isn't portable</samp><br>
3172
<li><samp>Undefined escape sequence '\x'</samp><br>
3173
<li><samp>UCN cannot specify the value "0000007f"</samp><br>
3174
<li><samp>Negative value "-1" is converted to positive "18446744073709551615"</samp><br>
3175
<li><samp>Result of "op" is out of range</samp><br>
3176
<li><samp>Result of "op" is out of range of (unsigned) long</samp><br>
3177
<li><samp>Illegal shift count "-1"</samp><br>
3178
<li><samp>"op" of negative number isn't portable</samp><br>
3180
<li><samp>sizeof is disallowed in C Standard</samp><br>
3181
#if sizeof �����������Τ� pre-Standard �⡼�ɤ����Ǥ��������ξ��Ǥ⤳��� Standard C �ǤϻȤ��ޤ����Ȥ��������ޤ���<br>
3182
<li><samp>"MACRO" wasn't defined</samp><br>
3183
#undef ���������Ƥ��ʤ�̾������ꤷ�Ƥ��ޤ�������Ͼ��ʤ��Ȥ� Standard C �Ǥϥ��顼�ǤϤ���ޤ���<br>
3184
<li><samp>Macro "macro" needs arguments</samp><br>
3185
�����դ��ޥ����Ȥ����������Ƥ����Τ�Ʊ��̾����ñ�ȤǸ���Ƥ��ޤ���Ÿ�����������ΤޤĤ��ޤ���pre-Standard �⡼�ɤξ������Фޤ���Standard �⡼�ɤǤϲ�������ʤ��Τǡ��������˥ϽФʤ��ˡ�<br>
3186
<li><samp>Replacement text "sub(" of macro "head" involved subsequent text</samp><br>
3187
�ޥ��� "head" ���ִ��ꥹ�� "sub(" �κ������ǥޥ����ƤӽФ��θ���Υƥ����Ȥ������ޤ�ޤ��������Υ������˥� <i>STD</i> �⡼�ɤǤ� class 1 �Ǥ�����<i>COMPAT</i> �⡼�ɤǤ� class 8 �Ǥ���<br>
3191
<h2><a name="5.9" href="#toc.5.9">5.9. Warning (class 16)</a></h2>
3192
<p>Trigraph �� digraph �ϻȤ�ɬ�פΤʤ��Ķ��ǤϤޤä����Ȥ�ʤ���ΤǤ������δĶ��Ǥ⤷����餬���Ф����С����դ��פ���Ǥ��礦��-W16 ���ץ����Ϥ���Ф����ΤǤ���¾���ǡ�trigraph ���뤤�� digraph �����Ѥ���Ƥ��륽�����ǤϤ��Υ������˥���ȯ���뤳�ȤˤʤäƤ��뤵���Ǥ��礦���顢�����¾�Υ������˥Ȥ��̤Υ��饹�ˤ��Ƥ���ޤ����ɤ���ˤ��Ƥ⡢������ trigraph ���뤤�� digraph ��ͭ���ʾ��֤Ǥ������Ф���ޤ���Digraph �� Standard �⡼�ɤξ��ǡ�trigraph �� <i>STD</i> �⡼�ɤ����Ǥ���</p>
3194
<li><samp>2 trigraph(s) converted</samp><br>
3195
����ʪ������Σ��Ĥ� trigraph sequence ���Ѵ����ޤ����������� trigraph �ΤĤ��ǽ��ΤǤ��礦����<br>
3196
<li><samp>2 digraph(s) converted</samp><br>
3197
���ι���Σ��Ĥ� digraph sequence ���Ѵ����ޤ����������� digraph �ΤĤ��ǽ��ΤǤ��礦����<br>
3198
<i>STD</i> �⡼�ɤǤ� digraph �����ΤǤ��ʤ������ϤǤϡ��ץ�ץ�����������äƤ��� digraph �Τ褦���̾�� token ���Ѵ����ƽ��Ϥ��ޤ���<br>
3200
<% -> { <: -> [ %: -> #
3201
%> -> } :> -> [ %:%: -> ##
3203
��������<i>POSTSTD</i> �⡼�ɤǤ� translation phase 1 ���̾�� pp-token ���Ѵ����Ƥ��ޤ��ޤ������ΰ㤤�ϡ�digraph �� # �黻�Ҥˤ��ʸ�����оݤˤʤä����˸���ޤ����ǥե���ȤǤ� digraph sequence �Τޤ�ʸ�����ޤ�����<i>POSTSTD</i> �Ǥ��̾�� pp-token ���Ѵ����줿��Τ�ʸ������ޤ����ޤ���ʸ�����ƥ������ digraph sequence ���������� character sequence �����ä���硢�ǥե���ȤǤϤ��ΤޤޤǤ�����<i>POSTSTD</i> �ǤϤ�����б����� pp-token �� character sequence ���Ѵ�����ޤ���<br>
3204
<i>STD</i> �⡼�ɤǤϤ��Υ������˥� digraph �Ρ��Ѵ��פ��оݤȤ��Ƥ���Τǡ�preprocessing-directive �Ԥ˸���ƾä��Ƥ��ޤ� digraph �ϥ�����Ȥ���ޤ���<br>
3208
<h2><a name="5.10" href="#toc.5.10">5.10. ���ǥ�å���������</a></h2>
3209
<table border='1' frame='below'><tr><th rowspan='2'>���ǥ�å�����</th><th rowspan='2'>Fatal error</th><th rowspan='2'>Error</th><th colspan='5'>Warning class</th></tr>
3210
<th>1</th><th>2</th><th>4</th><th>8</th><th>16</th></tr>
3211
<tr><td><samp>"..." isn't the last parameter</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3212
<tr><td><samp>"/*" in comment</samp></td><td></td><td></td><td><a href='#5.5.1'>5.5.1</td></tr>
3213
<tr><td><samp>"and" is defined as macro</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td></tr>
3214
<tr><td><samp>"defined" shouldn't be defined</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3215
<tr><td><samp>"MACRO" has not been defined</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td></tr>
3216
<tr><td><samp>"MACRO" has not been pushed</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td></tr>
3217
<tr><td><samp>"MACRO" is already pushed</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td></tr>
3218
<tr><td><samp>"MACRO" wasn't defined</samp></td><td></td><td></td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3219
<tr><td><samp>"op" of negative number isn't portable</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3220
<tr><td><samp>"__STDC__" shouldn't be redefined</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3221
<tr><td><samp>"__STDC__" shouldn't be undefined</samp></td><td></td><td><a href='#5.4.8'>5.4.8</td></tr>
3222
<tr><td><samp>"__VA_ARGS__" without corresponding "..."</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3223
<tr><td><samp>## after ##</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3224
<tr><td><samp>#error</samp></td><td></td><td><a href='#5.4.10'>5.4.10</td></tr>
3225
<tr><td><samp>#include_next is not allowed by Standard</samp></td><td></td><td></td><td></td><td><a href='#5.6'>5.6</td><td></td><td><a href='#5.8'>5.8</td></tr>
3226
<tr><td><samp>#warning</samp></td><td></td><td></td><td><a href='#5.5.7'>5.5.7</td></tr>
3227
<tr><td><samp>'$' in identifier "THIS$AND$THAT"</samp></td><td></td><td></td><td></td><td><a href='#5.6'>5.6</td></tr>
3228
<tr><td><samp>16 bits can't represent escape sequence L'\x12345'</samp></td><td></td><td><a href='#5.4.6'>5.4.6</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3229
<tr><td><samp>2 digraph(s) converted</samp></td><td></td><td></td><td></td><td></td><td></td><td></td><td><a href='#5.9'>5.9</td></tr>
3230
<tr><td><samp>2 trigraph(s) converted</samp></td><td></td><td></td><td></td><td></td><td></td><td></td><td><a href='#5.9'>5.9</td></tr>
3231
<tr><td><samp>8 bits can't represent escape sequence '\x123'</samp></td><td></td><td><a href='#5.4.6'>5.4.6</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3232
<tr><td><samp>Already seen #else at line 123</samp></td><td></td><td><a href='#5.4.3'>5.4.3</td></tr>
3233
<tr><td><samp>Bad defined syntax</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3234
<tr><td><samp>Bad pop_macro syntax</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td></tr>
3235
<tr><td><samp>Bad push_macro syntax</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td></tr>
3236
<tr><td><samp>Buffer overflow expanding macro "macro" at "something"</samp></td><td></td><td><a href='#5.4.9'>5.4.9</td></tr>
3237
<tr><td><samp>Buffer overflow scanning token "token"</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3238
<tr><td><samp>Bug:</samp></td><td><a href='#5.3.1'>5.3.1</td></tr>
3239
<tr><td><samp>Can't open include file "file-name"</samp></td><td></td><td><a href='#5.4.11'>5.4.11</td></tr>
3240
<tr><td><samp>Can't use a character constant 'a'</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3241
<tr><td><samp>Can't use a string literal "string"</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3242
<tr><td><samp>Can't use the character 0x24</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3243
<tr><td><samp>Can't use the operator "++"</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3244
<tr><td><samp>Constant "123456789012" is out of range of (unsigned) long</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td><td><a href='#5.6'>5.6</td><td></td><td><a href='#5.8'>5.8</td></tr>
3245
<tr><td><samp>Constant "1234567890123456789012" is out of range</samp></td><td></td><td><a href='#5.4.6'>5.4.6</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3246
<tr><td><samp>Converted 0x0c to a space</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3247
<tr><td><samp>Converted [CR+LF] to [LF]</samp></td><td></td><td></td><td><a href='#5.5.1'>5.5.1</td><td><a href='#5.6'>5.6</td></tr>
3248
<tr><td><samp>Converted \ to /</samp></td><td></td><td></td><td></td><td><a href='#5.6'>5.6</td></tr>
3249
<tr><td><samp>Division by zero</samp></td><td></td><td><a href='#5.4.6'>5.4.6</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3250
<tr><td><samp>Duplicate parameter names "a"</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3251
<tr><td><samp>Empty argument in macro call "MACRO( a, ,"</samp></td><td></td><td></td><td></td><td><a href='#5.6'>5.6</td></tr>
3252
<tr><td><samp>Empty character constant ''</samp></td><td></td><td><a href='#5.4.1'>5.4.1</td></tr>
3253
<tr><td><samp>Empty parameter</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3254
<tr><td><samp>End of file with no newline, supplemented the newline</samp></td><td></td><td></td><td><a href='#5.5.2'>5.5.2</td></tr>
3255
<tr><td><samp>End of file with unterminated #asm block started at line 123</samp></td><td></td><td><a href='#5.4.2'>5.4.2</td><td><a href='#5.5.2'>5.5.2</td></tr>
3256
<tr><td><samp>End of file with unterminated comment, terminated the comment</samp></td><td></td><td></td><td><a href='#5.5.2'>5.5.2</td></tr>
3257
<tr><td><samp>End of file with \, deleted the \</samp></td><td></td><td></td><td><a href='#5.5.2'>5.5.2</td></tr>
3258
<tr><td><samp>End of file within #if (#ifdef) section started at line 123</samp></td><td></td><td><a href='#5.4.2'>5.4.2</td><td><a href='#5.5.2'>5.5.2</td></tr>
3259
<tr><td><samp>End of file within macro call started at line 123</samp></td><td></td><td><a href='#5.4.2'>5.4.2</td><td><a href='#5.5.2'>5.5.2</td></tr>
3260
<tr><td><samp>Excessive ")"</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3261
<tr><td><samp>Excessive token sequence "junk"</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td><td><a href='#5.5.3'>5.5.3</td></tr>
3262
<tr><td><samp>File read error</samp></td><td><a href='#5.3.2'>5.3.2</td></tr>
3263
<tr><td><samp>File write error</samp></td><td><a href='#5.3.2'>5.3.2</td></tr>
3264
<tr><td><samp>Header-name enclosed by <, > is an obsolescent feature <stdio.h></samp></td><td></td><td></td><td></td><td><a href='#5.6'>5.6</td></tr>
3265
<tr><td><samp>I64 suffix is used in other than C99 mode "123i64"</samp></td><td></td><td></td><td></td><td><a href='#5.6'>5.6</td><td></td><td><a href='#5.8'>5.8</td></tr>
3266
<tr><td><samp>Identifier longer than 31 bytes "very_very_long_name"</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3267
<tr><td><samp>Ignored #ident</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3268
<tr><td><samp>Ignored #sccs</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3269
<tr><td><samp>Illegal #directive "123"</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3270
<tr><td><samp>Illegal control character 0x1b in quotation</samp></td><td></td><td></td><td><a href='#5.5.1'>5.5.1</td></tr>
3271
<tr><td><samp>Illegal control character 0x1b, skipped the character</samp></td><td></td><td><a href='#5.4.1'>5.4.1</td></tr>
3272
<tr><td><samp>Illegal digit in octal number "089"</samp></td><td></td><td></td><td><a href='#5.5.1'>5.5.1</td></tr>
3273
<tr><td><samp>Illegal multi-byte character sequence "XY" in quotation</samp></td><td></td><td></td><td><a href='#5.5.1'>5.5.1</td></tr>
3274
<tr><td><samp>Illegal multi-byte character sequence "XY"</samp></td><td></td><td><a href='#5.4.1'>5.4.1</td></tr>
3275
<tr><td><samp>Illegal parameter "123"</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3276
<tr><td><samp>Illegal shift count "-1"</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3277
<tr><td><samp>Illegal UCN sequence</samp></td><td></td><td><a href='#5.4.1'>5.4.1</td></tr>
3278
<tr><td><samp>In #asm block started at line 123</samp></td><td></td><td><a href='#5.4.3'>5.4.3</td></tr>
3279
<tr><td><samp>Integer character constant 'abcde' is out of range of unsigned long</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td><td><a href='#5.6'>5.6</td><td></td><td><a href='#5.8'>5.8</td></tr>
3280
<tr><td><samp>Integer character constant 'abcdefghi' is out of range</samp></td><td></td><td><a href='#5.4.6'>5.4.6</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3281
<tr><td><samp>Less than necessary N argument(s) in macro call "macro( a)"</samp></td><td></td><td><a href='#5.4.9'>5.4.9</td><td><a href='#5.5.5'>5.5.5</td></tr>
3282
<tr><td><samp>Line number "0x123" isn't a decimal digits sequence</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td><td><a href='#5.5.6'>5.5.6</td></tr>
3283
<tr><td><samp>Line number "2147483648" is out of range of 1,2147483647</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td></tr>
3284
<tr><td><samp>Line number "32768" got beyond range</samp></td><td></td><td></td><td><a href='#5.5.6'>5.5.6</td></tr>
3285
<tr><td><samp>Line number "32768" is out of range of 1,32767</samp></td><td></td><td></td><td><a href='#5.5.6'>5.5.6</td></tr>
3286
<tr><td><samp>Line number "32769" is out of range</samp></td><td></td><td></td><td><a href='#5.5.6'>5.5.6</td></tr>
3287
<tr><td><samp>LL suffix is used in other than C99 mode "123LL"</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td><td><a href='#5.6'>5.6</td><td></td><td><a href='#5.8'>5.8</td></tr>
3288
<tr><td><samp>Logical source line longer than 509 bytes</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3289
<tr><td><samp>Macro "MACRO" is expanded to "defined"</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td></tr>
3290
<tr><td><samp>Macro "MACRO" is expanded to "sizeof"</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td></tr>
3291
<tr><td><samp>Macro "MACRO" is expanded to 0 token</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td></tr>
3292
<tr><td><samp>Macro "macro" needs arguments</samp></td><td></td><td></td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3293
<tr><td><samp>Macro started at line 123 swallowed directive-like line</samp></td><td></td><td></td><td><a href='#5.5.5'>5.5.5</td></tr>
3294
<tr><td><samp>Macro with mixing of ## and # operators isn't portable</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3295
<tr><td><samp>Macro with multiple ## operators isn't portable</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3296
<tr><td><samp>Misplaced ":", previous operator is "+"</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3297
<tr><td><samp>Misplaced constant "12"</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3298
<tr><td><samp>Missing ")"</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3299
<tr><td><samp>Missing "," or ")" in parameter list "(a,b"</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3300
<tr><td><samp>More than 1024 macros defined</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3301
<tr><td><samp>More than 31 parameters</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3302
<tr><td><samp>More than 32 nesting of parens in #if expression</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3303
<tr><td><samp>More than 8 nesting of #if (#ifdef) sections</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td><td><a href='#5.8'>5.8</td></tr>
3304
<tr><td><samp>More than 8 nesting of #include</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3305
<tr><td><samp>More than <i>BLK_NEST</i> nesting of #if (#ifdef) sections</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3306
<tr><td><samp>More than <i>INCLUDE_NEST</i> nesting of #include</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3307
<tr><td><samp>More than necessary N argument(s) in macro call "macro( a, b, c)</samp></td><td></td><td><a href='#5.4.9'>5.4.9</td></tr>
3308
<tr><td><samp>More than <i>NEXP</i>*2-1 constants stacked at "12"</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3309
<tr><td><samp>More than <i>NEXP</i>*3-1 operators and parens stacked at "+"</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3310
<tr><td><samp>More than <i>NMACPARS</i> parameters</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3311
<tr><td><samp>Multi-character or multi-byte character constant '��' isn't portable</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td><td><a href='#5.8'>5.8</td></tr>
3312
<tr><td><samp>Multi-character wide character constant L'ab' isn't portable</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td><td><a href='#5.8'>5.8</td></tr>
3313
<tr><td><samp>Negative value "-1" is converted to positive "18446744073709551615"</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3314
<tr><td><samp>No argument</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td><td><a href='#5.5.3'>5.5.3</td></tr>
3315
<tr><td><samp>No header name</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td></tr>
3316
<tr><td><samp>No identifier</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td></tr>
3317
<tr><td><samp>No line number</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td></tr>
3318
<tr><td><samp>No space between macro name "MACRO" and repl-text</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td></tr>
3319
<tr><td><samp>No sub-directive</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td></tr>
3320
<tr><td><samp>No token after ##</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3321
<tr><td><samp>No token before ##</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3322
<tr><td><samp>Not a file name "name"</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td></tr>
3323
<tr><td><samp>Not a formal parameter "id"</samp></td><td></td><td><a href='#5.4.7'>5.4.7</td></tr>
3324
<tr><td><samp>Not a header name "UNDEFINED_MACRO"</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td></tr>
3325
<tr><td><samp>Not a line number "name"</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td></tr>
3326
<tr><td><samp>Not a valid preprocessing token "+12"</samp></td><td></td><td><a href='#5.4.9'>5.4.9</td><td></td><td><a href='#5.6'>5.6</td></tr>
3327
<tr><td><samp>Not a valid string literal</samp></td><td></td><td><a href='#5.4.9'>5.4.9</td></tr>
3328
<tr><td><samp>Not an identifier "123"</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td><td><a href='#5.5.3'>5.5.3</td></tr>
3329
<tr><td><samp>Not an integer "1.23"</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3330
<tr><td><samp>Not in a #if (#ifdef) section</samp></td><td></td><td><a href='#5.4.3'>5.4.3</td></tr>
3331
<tr><td><samp>Not in a #if (#ifdef) section in a source file</samp></td><td></td><td><a href='#5.4.3'>5.4.3</td><td><a href='#5.5.3'>5.5.3</td></tr>
3332
<tr><td><samp>Operand of _Pragma() is not a string literal</samp></td><td></td><td><a href='#5.4.12'>5.4.12</td></tr>
3333
<tr><td><samp>Operator ">" in incorrect context</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3334
<tr><td><samp>Out of memory (required size is 0x1234 bytes)</samp></td><td><a href='#5.3.2'>5.3.2</td></tr>
3335
<tr><td><samp>Parsed "//" as comment</samp></td><td></td><td></td><td></td><td><a href='#5.6'>5.6</td></tr>
3336
<tr><td><samp>Preprocessing assertion failed</samp></td><td></td><td><a href='#5.4.10'>5.4.10</td></tr>
3337
<tr><td><samp>Quotation longer than 509 bytes "very_very_long_string"</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3338
<tr><td><samp>Recursive macro definition of "macro" to "macro"</samp></td><td></td><td><a href='#5.4.9'>5.4.9</td></tr>
3339
<tr><td><samp>Replacement text "sub(" of macro "head" involved subsequent text</samp></td><td></td><td></td><td><a href='#5.5.5'>5.5.5</td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3340
<tr><td><samp>Rescanning macro "macro" more than <i>RESCAN_LIMIT</i> times at "something"</samp></td><td></td><td><a href='#5.4.9'>5.4.9</td></tr>
3341
<tr><td><samp>Result of "op" is out of range</samp></td><td></td><td><a href='#5.4.6'>5.4.6</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3342
<tr><td><samp>Result of "op" is out of range of (unsigned) long</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td><td><a href='#5.6'>5.6</td><td></td><td><a href='#5.8'>5.8</td></tr>
3343
<tr><td><samp>Shift count "40" is larger than bit count of long</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td><td><a href='#5.6'>5.6</td><td></td><td><a href='#5.8'>5.8</td></tr>
3344
<tr><td><samp>sizeof is disallowed in C Standard</samp></td><td></td><td></td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3345
<tr><td><samp>sizeof: Illegal type combination with "type"</samp></td><td></td><td><a href='#5.4.6'>5.4.6</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3346
<tr><td><samp>sizeof: No type specified</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3347
<tr><td><samp>sizeof: Syntax error</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3348
<tr><td><samp>sizeof: Unknown type "type"</samp></td><td></td><td><a href='#5.4.6'>5.4.6</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3349
<tr><td><samp>Skipped the #pragma line</samp></td><td></td><td></td><td></td><td><a href='#5.6'>5.6</td></tr>
3350
<tr><td><samp>String literal longer than 509 bytes "very_very_long_string"</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td></tr>
3351
<tr><td><samp>The macro is redefined</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td></tr>
3352
<tr><td><samp>This is not a preprocessed source</samp></td><td><a href='#5.3.4'>5.3.4</td></tr>
3353
<tr><td><samp>This preprocessed file is corrupted</samp></td><td><a href='#5.3.4'>5.3.4</td></tr>
3354
<tr><td><samp>Too long header name "long-file-name"</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3355
<tr><td><samp>Too long identifier, truncated to "very_long_identifier"</samp></td><td></td><td></td><td><a href='#5.5.1'>5.5.1</td></tr>
3356
<tr><td><samp>Too long line spliced by comments</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3357
<tr><td><samp>Too long logical line</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3358
<tr><td><samp>Too long number token "12345678901234"</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3359
<tr><td><samp>Too long pp-number token "1234toolong"</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3360
<tr><td><samp>Too long quotation "long-string"</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3361
<tr><td><samp>Too long source line</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3362
<tr><td><samp>Too long token</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3363
<tr><td><samp>Too many include directories "dir"</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3364
<tr><td><samp>Too many include files</samp></td><td><a href='#5.3.3'>5.3.3</td></tr>
3365
<tr><td><samp>UCN cannot specify the value "0000007f"</samp></td><td></td><td><a href='#5.4.1'>5.4.1</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3366
<tr><td><samp>Undefined escape sequence '\x'</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3367
<tr><td><samp>Undefined symbol "name", evaluated to 0</samp></td><td></td><td></td><td></td><td></td><td><a href='#5.7'>5.7</td><td><a href='#5.8'>5.8</td></tr>
3368
<tr><td><samp>Unknown #directive "pseudo-directive"</samp></td><td></td><td><a href='#5.4.4'>5.4.4</td><td><a href='#5.5.4'>5.5.4</td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3369
<tr><td><samp>Unknown argument "name"</samp></td><td></td><td></td><td><a href='#5.5.3'>5.5.3</td></tr>
3370
<tr><td><samp>Unterminated character constant 't understand.</samp></td><td></td><td><a href='#5.4.1'>5.4.1</td></tr>
3371
<tr><td><samp>Unterminated expression</samp></td><td></td><td><a href='#5.4.5'>5.4.5</td></tr>
3372
<tr><td><samp>Unterminated header name <header.h</samp></td><td></td><td><a href='#5.4.1'>5.4.1</td></tr>
3373
<tr><td><samp>Unterminated macro call "macro( a, (b,c)"</samp></td><td></td><td><a href='#5.4.9'>5.4.9</td></tr>
3374
<tr><td><samp>Unterminated string literal</samp></td><td></td><td><a href='#5.4.1'>5.4.1</td></tr>
3375
<tr><td><samp>Unterminated string literal, catenated to the next line</samp></td><td></td><td></td><td><a href='#5.5.1'>5.5.1</td></tr>
3376
<tr><td><samp>Variable argument macro is defined</samp></td><td></td><td></td><td></td><td><a href='#5.6'>5.6</td></tr>
3377
<tr><td><samp>Wide character constant L'abc' is out of range of unsigned long</samp></td><td></td><td></td><td><a href='#5.5.4'>5.5.4</td><td><a href='#5.6'>5.6</td><td></td><td><a href='#5.8'>5.8</td></tr>
3378
<tr><td><samp>Wide character constant L'abc' is out of range</samp></td><td></td><td><a href='#5.4.6'>5.4.6</td><td></td><td></td><td></td><td><a href='#5.8'>5.8</td></tr>
3382
<h1><a name="6" href="#toc.6">6. �������</a></h1>
3384
<p>�ץ�ץ������� Standard C Ŭ���٤ڤ��뤿��� Validation Suite �� <b>mcpp</b> �Υ������ȤȤ�˸������Ƥ��ޤ���Standard C �Υץ�ץ������Τ��٤Ƥε���ڤǤ����Τˤ����Ĥ��Ǥ����������<b>mcpp</b> �Ϥ����Ȥäƥ����å����Ƥ���ޤ��������¿���ν����Ϥǥ���ѥ��뤷�ƥ����å����Ƥ���ޤ����������äơ��Х�������ͤϤۤȤ�ɤʤ��Ĥ��Ǥ��������������ޤ������Ĥ��ĤäƤ��붲��Ͻ�ʬ����ޤ���</p>
3385
<p>�⤷���ԲIJ��ư�ȯ�����줿�顢���Ҥ���𤯤�������<br>
3387
"Bug: ..." �Ȥ������ǥ�å��������Ф��顢����ϴְ㤤�ʤ� <b>mcpp</b> �ޤ��Ͻ����ϤΡʤ��֤� <b>mcpp</b> �Ρ˥Х��Ǥ����ޤ������Ȥ�����㤯����ʡ֥������פǤ⡢����碌�뤳�Ȥ� <b>mcpp</b> ��˽������ʤ顢�����Х��Ǥ���</p>
3389
<p>�Х����ˤϼ��Τ褦�ʥǡ������դ��Ƥ�������褦���ꤤ���ޤ���</p>
3391
<li><b>mcpp</b> ��ܿ����������ϡ�<br>
3392
<li>�Х��Ȼפ����Τ�Ƹ��Ǥ���ʤ�٤�û������ץ륽������
3398
<p>�Х����Τۤ��ˤ⡢<b>mcpp</b> �λȤ����ꡢ���ǥ�å����������Υɥ�����Ȥν�����
3399
�ʤɤˤĤ��Ƥ��ո�����������<br>
3401
<p><a href="http://mcpp.sourceforge.net/"> http://mcpp.sourceforge.net/</a></p>
3402
<p>�� "Open Discussion Forum" �ޤ��ϥ��Ǥ��ꤤ���ޤ���