~ubuntu-branches/ubuntu/quantal/mcpp/quantal

« back to all changes in this revision

Viewing changes to doc-jp/mcpp-manual.html

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2006-12-06 11:10:04 UTC
  • mfrom: (1.1.3 upstream) (3.1.1 etch)
  • Revision ID: james.westby@ubuntu.com-20061206111004-y64dy22k2i5ruacf
Tags: 2.6.2-1ubuntu1
* Merge with Debian unstable; remaining changes:
  - Conflict with old xrdb.
  - debian/rules: Extend clean target.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<html>
 
2
<head>
 
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>
 
7
</head>
 
8
<body>
 
9
<div align="center">
 
10
<h1>MCPP-MANUAL</h1>
 
11
<h2>== How to Use MCPP ==</h2>
 
12
</div>
 
13
<div align="right">
 
14
<h4>for V.2.6.2 (2006/11)<br>
 
15
����  �� (kmatsui@t3.rim.or.jp)</p>
 
16
</div>
 
17
<div align="center">
 
18
<h2>== �ܼ� ==</h2>
 
19
</div>
 
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>
 
24
<br>
 
25
<br>
 
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>
 
38
<br>
 
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>
 
69
<br>
 
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>
 
79
<br>
 
80
<br>
 
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>
 
115
<br>
 
116
<br>
 
117
<dt><a name="toc.6" href="#6">6. �Х������</a>
 
118
</dl>
 
119
<br>
 
120
 
 
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>
 
127
<br>
 
128
 
 
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>
 
133
<br>
 
134
 
 
135
<h2><a name="1.2" href="#toc.1.2">1.2. ���Τ� Standard C �⡼�ɤ˲ä��Ƥ���¾�γƼ�⡼�ɤ�</a></h2>
 
136
<p>Standard C ����ư��⡼�ɤΤۤ��ˡ�K&amp;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>
 
149
<p>��:</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>
 
153
<blockquote>
 
154
<p><a href="http://www.ipa.go.jp/jinzai/esp/"> http://www.ipa.go.jp/jinzai/esp/</a></p>
 
155
</blockquote>
 
156
<p><b>mcpp</b> V.2.3 �ʹߤΥ���������ӥɥ�����Ȥȸ��ڥ��å� V.1.3 �ʹߤϼ��ΤȤ������֤��Ƥ�������</p>
 
157
<blockquote>
 
158
<p><a href="http://www.m17n.org/mcpp/"> http://www.m17n.org/mcpp/</a></p>
 
159
</blockquote>
 
160
<p>2006/04 �˼��ΤȤ����˰ܤä���</p>
 
161
<blockquote>
 
162
<p><a href="http://mcpp.sourceforge.net/"> http://mcpp.sourceforge.net/</a></p>
 
163
</blockquote>
 
164
<p><b>mcpp</b> �θŤ��С������Ǥ��� cpp 
 
165
V.2.2 ����Ӹ��ڥ��å� V.1.2 �ϥ٥������ҤΥ����Ȥμ��ΤȤ����ˤ��롣dos/prog/c �Ȥ����ǥ��쥯�ȥ��������Ƥ��뤬��MS-DOS ���ѤǤϤʤ����������� UNIX, WIN32/MS-DOS �����б����Ƥ��롣</p>
 
166
<blockquote>
 
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>
 
170
</blockquote>
 
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>
 
173
<br>
 
174
 
 
175
<h2><a name="1.3" href="#toc.1.3">1.3. ���Υޥ˥奢���ɽ��ˡ</a></h2>
 
176
<p>���Υޥ˥奢��Ϥ��ĤƤϥƥ����ȥե�����Ǥ�������V.2.6.2 ����� html �ե�������Ѥ��ޤ�����<br>
 
177
���Υޥ˥奢��Ǥϼ��Τ褦�˥ե���Ȥ�Ȥ�ʬ���Ƥ��ޤ���</p>
 
178
<ul>
 
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>
 
184
<li><i>STD</i>:<br>
 
185
<i>Italic</i> �ե���Ȥ� <b>mcpp</b> �� system.H �Ȥ����������ե��������������ޥ�����ɽ���ޤ������Υޥ˥奢��ǤϤ�����̾���� <b>mcpp</b> �μ�������ɽ�����뤿��˻Ȥ��ޤ��������Υޥ����� <b>mcpp</b> �򥳥�ѥ��뤹����˻Ȥ�������ǡ�<b>mcpp</b> �μ¹ԥץ������ˤ�¸�ߤ��Ƥ��ʤ����Ȥ����դ��Ƥ���������<br>
 
186
</ul>
 
187
<br>
 
188
 
 
189
<h1><a name="2" href="#toc.2">2. ��ư���Υ��ץ����ȴĶ�����</a></h1>
 
190
 
 
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>
 
196
<ul>
 
197
<li><i>STD</i><br>
 
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>
 
203
<li><i>KR</i><br>
 
204
C90 ������ K&amp;R 1st. �Υץ�ץ��������ͤǤ���<br>
 
205
<li><i>OLDPREP</i><br>
 
206
������ "Reiser" 
 
207
model cpp ��ư����ͤǤ���<br>
 
208
</ul>
 
209
<p>�����Υ⡼�ɤ���ꤹ�륪�ץ����ϼ����̤�Ǥ���
 
210
�⡼�ɤ򲿤���ꤷ�ʤ��� -@std ����ꤷ�����Ȥˤʤ�ޤ���</p>
 
211
<ul>
 
212
<li><samp>-@std</samp><br>
 
213
<i>STD</i> �⡼��<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>
 
219
<i>KR</i> �⡼��<br>
 
220
<li><samp>-@old, -@oldprep</samp><br>
 
221
<i>OLDPREP</i> �⡼��<br>
 
222
</ul>
 
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 ������ &lt;backslash&gt;&lt;newline&gt; �� 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 &lt;n&gt; ���ץ�����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>
 
239
<p>�ʾ�˽Ҥ٤����Ȱʳ��� 
 
240
K&amp;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>
 
242
<ul>
 
243
<li><i>OLDPREP</i><br>
 
244
���Τ褦�ʻ��ͤθŤ� "Reiser model cpp" ��ư��򤹤��old preprocessor �ΰաˡ�<br>
 
245
<br>
 
246
<ol>
 
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>
 
252
<br>
 
253
</ol>
 
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>
 
258
<br>
 
259
<li><i>POSTSTD</i><br>
 
260
����ϵ��ʤ˼��Τ褦���ѹ���ä�����ΤǤ��롣<br>
 
261
<br>
 
262
<ol>
 
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 &lt;stdio.h&gt; �Ȥ��������� header name ���̾���̤������������˥󥰤�Ф���class 2 �Υ������˥󥰥��ץ����ǡˡ��ޥ����� &lt;stdio.h&gt; �η��� 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>
 
274
</ol>
 
275
</ul>
 
276
<p>�����������Ȥ� <b>mcpp</b> �μ¹ԥץ������ˤϤ����Ĥ�λ��ͤ�����Τǡ��ޥ˥奢������դ����ɤ�Ǥ������������ξϤǤϤޤ� <b>mcpp</b> �ζ��̤Υ��ץ�����������������ư��⡼�ɤˤ�äưۤʤ륪�ץ�����Ҥ١���������ν����������Ǥ�����ƶ��̤Υ��ץ�����Ҥ١����Τ��Ȥǽ����������Ǥν����Ϥ��Ȥ˰ۤʤ륪�ץ����򵭺ܤ��ޤ���</p>
 
277
<p>��:</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>
 
281
<br>
 
282
 
 
283
<h2><a name="2.2" href="#toc.2.2">2.2. ��ư���Υ��ץ����λ���ˡ</a></h2>
 
284
<p>�ʲ��ε��ܤǤϡ�&lt;arg&gt; �Ȥ�����ˡ�� arg ���桼�������Ϥ��٤�Ǥ�դΰ����Ǥ��뤳�Ȥ򼨤���[arg] �� arg ����ά��ǽ�ʰ����Ǥ��뤳�Ȥ򼨤��ޤ����ɤ���ˤ��Ƥ� &lt;, &gt;, [, ] ��ʸ�����Τ�Τ����Ϥ��ƤϤ����ޤ���</p>
 
285
<p><b>mcpp</b> ��ư����񼰤ϼ��η��Ǥ�����������mcpp �Ȥ���̾���� <b>mcpp</b> �Υ��󥹥ȡ�����λ���ˤ�äƤ��̤�̾���ˤʤ�ޤ���</p>
 
286
<pre>
 
287
mcpp [-&lt;opts&gt; [-&lt;opts&gt;]] [in_file] [out_file] [-&lt;opts&gt; [-&lt;opts&gt;]]
 
288
</pre>
 
289
<p>out_file�ʽ��ϥѥ��ˤ���ά���줿���ϡ�-o ���ץ���󤬻��ꤵ��ʤ��¤��ɸ����Ϥ˽��Ϥ��ޤ���in_file�����ϥѥ��ˤ��ά���줿����ɸ�����Ϥ������Ϥ��ޤ������ǥ�å������ϡ�-Q ���ץ���󤬻��ꤵ��ʤ��¤��ɸ�२�顼���Ϥ˽��Ϥ��ޤ���<br>
 
290
�����Τɤ줫�Υե����뤬�����ץ�Ǥ��ʤ����ϡ����顼��å�������Ф��ƽ�λ���ޤ���</p>
 
291
<p>������ɬ�פȤ��륪�ץ����˰������ʤ����ϥ��顼�Ȥʤ�ޤ���-M ���ץ����������̡ˡ�<br>
 
292
������ɬ�פȤ��륪�ץ����Ǥ� -I&lt;arg&gt;, -I &lt;arg&gt; �Τɤ����ͭ���Ǥ��ʥ��ץ����ʸ���Ȱ����δ֤� 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>
 
298
�����ʥ��ץ�������ꤹ��� 
 
299
usage ʸ��ɽ�������Τǡ�mcpp -? ���Ȥ��뤳�Ȥǡ��Ȥ��륪�ץ�����Τ���뤳�Ȥ��Ǥ��ޤ���Usage ʸ�Τۤ��ˤ⤤���Ĥ��Υ��顼��å�����������ޤ������������ƤϤ�����⼫���Τ�ΤǤ���Τǡ������Ͼ�ά���ޤ���</p>
 
300
<br>
 
301
 
 
302
<h2><a name="2.3" href="#toc.2.3">2.3. ���̤Υ��ץ����</a></h2>
 
303
<p><b>mcpp</b> ��ư��⡼�ɤ�����Ϥˤ��ʤ����̤Υ��ץ����ϼ����̤�Ǥ���</p>
 
304
<ul>
 
305
<li><samp>-C</samp><br>
 
306
��������Υ����Ȥ���Ϥ��롣�ǥХå�����ͭ�Ѥʥ��ץ����Ǥ��롣�������������Ȥϥ������������Ԥ���Ƭ�˰ܤ��ƽ��Ϥ��롣�����Ȥν����ϥޥ���Ÿ����ǥ��쥯�ƥ��֤ν��������˹Ԥ����ΤǤ��ꡢ�����Ȥϥޥ����ƤӽФ�������ˤ��뤫�⤷��ʤ�����Ǥ��롣<br>
 
307
<br>
 
308
<li><samp>-D &lt;macro&gt;[=[&lt;value&gt;]]</samp><br>
 
309
<li><samp>-D &lt;macro(a,b)&gt;[=[&lt;value&gt;]]</samp><br>
 
310
�ޥ��� macro ��������롣�����������Ƥ���ޥ����Ǥ� <tt>__STDC__, __STDC_VERSION__, __FILE__, __LINE__, __DATE__, __TIME__, __cplusplus</tt> �ʳ��Ǥ���С����Υ��ץ�����������ѹ��Ǥ����C99 �� <tt>__STDC_HOSTED__</tt> �� GCC V.3 �Τ褦�� -D ���ץ����������������Ϥ⤢��Τǡ��㳰Ū�˵��Ĥ���ˡ�=&lt;value&gt; �����ꤵ��Ƥ���� value �����������ά����Ƥ���� 1 ����������bcc32 �ǤϾ�ά���ˤϣ��ĤΥȡ��������������Τǡ�����Ȥϰ㤦���Ȥ����աˡ�= �����ˤ϶��������ƤϤ����ʤ���= �θ�˶��򤬤���Ф��Υޥ����ϣ��ĤΥȡ�������������롣<br>
 
311
���Υ��ץ����Ǥϡ������Ĥ��ޥ���������Ǥ��롣<br>
 
312
���Υ��ץ����ϲ���Ǥ����Ǥ��롣
 
313
<br>
 
314
<br>
 
315
<li><samp>-e &lt;encoding&gt;</samp><br>
 
316
Multi-byte character �� encoding �� &lt;encoding&gt; ���ѹ����롣
 
317
&lt;encoding&gt; �ˤĤ��Ƥ� <a href="#2.8"> 2.8</a> �򻲾ȤΤ��ȡ�
 
318
<br>
 
319
<br>
 
320
<li><samp>-I &lt;directory&gt;</samp><br>
 
321
Include directory �Υ������ѥ������̤� directory 
 
322
����ꤹ��ʥ������ѥ��ˤĤ��Ƥ� <a href="#4.2"> 4.2</a> �򻲾ȡˡ�directory ̾�� space 
 
323
���ޤޤ����ϡ�directory ̾���Τ� " �� " �ǰϤळ�ȡ�<br>
 
324
<br>
 
325
<li><samp>-I 1, -I 2, -I 3</samp><br>
 
326
#include 
 
327
"header" �η����Ρ�&lt;header&gt; �η����ǤϤʤ��˥ǥ��쥯�ƥ��֤Ǻǽ�˥����������ǥ��쥯�ȥ�δ�����ꤹ�롣-I1 �Ǥϥ����ȥǥ��쥯�ȥꡢ-I2 �Ǥϥ������ե�����ʥ��󥯥롼�ɸ��ˤΤ���ǥ��쥯�ȥꡢ-I3 �ǤϤ��������򥵡�������ʾܺ٤� <a href="#4.2"> 4.2</a> �򻲾ȡˡ�<br>
 
328
<br>
 
329
<li><samp>-j</samp><br>
 
330
���ǥ�å������ν��ϤǤϥ������������ղþ���Ͻ��Ϥ�����
 
331
���Ԥο��ǥ�å������������Ϥ���ʥǥե���ȤǤϣ��Ԥο��ǥ�å�������³���ơ����Υ������Ԥ�ɽ������롣�������ե����뤬 include ���줿��ΤǤ�����ϡ�include ���ιԤ�缡ɽ������롣�ޥ����˴ؤ�����ǥ�å������Ǥϡ�Ÿ�����Υޥ�����缡ɽ�������ˡ�<br>
 
332
GCC �� testsuite �ǻ�θ��ڥ��åȤ�Ȥ����ϡ����Υ��ץ�������ꤷ�ơ�GCC ��Ʊ�����ǥ�å����������ˤ���ɬ�פ����롣<br>
 
333
<br>
 
334
</ul>
 
335
<p>-M* ���ץ����� makefile �Ѥΰ�¸�ط��Ԥ���Ϥ����ΤǤ���ʣ���Υ������ե����뤬�����硢���٤ƤΥ������ˤĤ��Ƥ����� -M* ���ץ������դ��Ƽ¹Ԥ��ơ����ν��Ϥ�ޡ�������ȡ�makefile ��ɬ�פʰ�¸�ط����ҹԤ��������ޤ��������Υ��ץ����� GCC �Τ�Τ˹�碌�Ƥ��ޤ����������㤤������ޤ���*1</p>
 
336
<ul>
 
337
<li><samp>-M</samp><br>
 
338
�������ե�����ΰ�¸�ط��򵭽Ҥ���Ԥ���Ϥ��롣������ϥ��ޥ�ɥ饤��ǻ��ꤵ�줿���ϥե����롢���줬���ꤵ��Ƥ��ʤ����ɸ����ϤǤ��롣�Ԥ�Ĺ������ޤꤿ���ࡣ�̾�Υץ�ץ�������̤Ͻ��Ϥ��ʤ���<br>
 
339
<br>
 
340
<li><samp>-MM</samp><br>
 
341
-M �Ȥۤ�Ʊ���Ǥ��뤬�����Υإå��Ͻ񤭽Ф��ʤ���<br>
 
342
<ol>
 
343
<li>#include &lt;stdio.h&gt; 
 
344
�η����� include ������Ρ�<br>
 
345
<li>#include "/include/stdio.h" 
 
346
�������Хѥ��ǻ��ꤵ��Ƥ����Ρ�<br>
 
347
<li>#include "stdio.h" �η����Ǥ��뤬��
 
348
�����ȥǥ��쥯�ȥ�ʽ����Ϥ� -I &lt;n&gt; ���ץ����ˤ�äƤϥ������Τ���ǥ��쥯�ȥ�ˤ�ȯ�����줺�������ƥ����� include �ǥ��쥯�ȥ��ȯ�����줿��Ρ�-I &lt;directory&gt; ���ץ�����Ķ��ѿ����ǻ��ꤵ�줿�ǥ��쥯�ȥ��ޤ�ˡ�<br>
 
349
<br>
 
350
</ol>
 
351
<li><samp>-MD [FILE]</samp><br>
 
352
-M �Ȥۤ�Ʊ���Ǥ��뤬���̾�Υץ�ץ�������̤⥳�ޥ�ɥ饤��ǻ��ꤵ�줿�ե�����ޤ���ɸ����Ϥ˽��Ϥ���뤳�Ȥ���äƤ��롣�ޤ�����¸�ط��Ԥν�����ϡ� FILE �����ꤵ�줿���Ϥ��Υե�����Ȥʤꡢ���ꤵ��Ƥ��ʤ����ϥ������ե�����̾�� .c �� .d ���Ѥ����ե�����Ȥʤ롣<br>
 
353
<br>
 
354
<li><samp>-MMD [FILE]</samp><br>
 
355
-MD �Ȥۤ�Ʊ���Ǥ��뤬��-MM ��Ʊ�ͤ˥����ƥ�إå��Ȥߤʤ�����ΤϽ񤭽Ф��ʤ����Ȥ���äƤ��롣��¸�ط��Ԥν������ -MD [FILE] ��Ʊ����<br>
 
356
<br>
 
357
<li><samp>-MF FILE</samp><br>
 
358
������� FILE �ˤ��롣-MD FILE, -MMD FILE ��ͥ�褹�롣<br>
 
359
<br>
 
360
<li><samp>-MP</samp><br>
 
361
"Phony 
 
362
target" ����Ϥ��롣Phony target �Ȥ����Τϡ����󥯥롼�ɤ����ե����룱�ģ��ĤˤĤ��ơ����켫�Τ��¸�������ʤ��������åȤȤ��ơ����Τ褦�˵��Ҥ����ΤǤ��롣<br>
 
363
<pre>
 
364
test.o: test.c test.h
 
365
test.h:
 
366
</pre>
 
367
<li><samp>-MT TARGET</samp><br>
 
368
�������åȤ�̾�����̾�� foo.o �ǤϤʤ� TARGET �ˤ��롣-MT '$(objpfx)foo.o' �Ȥ������ץ����Ǥϼ��Τ褦�ʹԤ����Ϥ���롣<br>
 
369
<pre>
 
370
$(objpfx)foo.o: foo.c
 
371
</pre>
 
372
<li><samp>-MQ TARGET</samp><br>
 
373
-MT ��Ʊ�ͤǤ��뤬��make �ˤȤä����̤ʰ�̣�����ʸ���ϼ��Τ褦�� quote ���롣<br>
 
374
<pre>
 
375
$$(objpfx)foo.o: foo.c
 
376
</pre>
 
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>
 
379
<br>
 
380
<li><samp>-o &lt;file&gt;</samp><br>
 
381
�ץ�ץ�������Υ������� file �˽��Ϥ��롣��ά����������������ϥѥ��Ȥʤ�Τǡ�̵���Ƥ�褤���ץ����Ǥ��뤬������ѥ���ɥ饤�Фˤ�äƤϤ��Υ��ץ�����Ȥ���Τ����롣<br>
 
382
<br>
 
383
<li><samp>-P</samp><br>
 
384
����ѥ������Τ˹��ֹ�������������Ϥ��ά���롣�äΥץ�ץ����å��ʳ������Ӥ�ή�Ѥ�����˻Ȥ����ץ����Ǥ��롣<br>
 
385
<br>
 
386
<li><samp>-Q</samp><br>
 
387
���ǥ�å�������ʥ����ȥǥ��쥯�ȥ�Ρ�mcpp.err �Ȥ���̾���Υե�����˽��Ϥ����mcpp.err �ϸ���˥��ڥ�ɤ���Ƥ椯�Τǡ�����������뤳�ȡˡ�<br>
 
388
<br>
 
389
<li><samp>-U &lt;macro&gt;</samp><br>
 
390
�����������Ƥ���ޥ��� macro ����ä���<tt>__FILE__, __LINE__, __DATE__, __TIME__, __STDC__, __STDC_VERSION__</tt>, C99 �⡼�ɤǤ� <tt>__STDC_HOSTED__</tt> ����� -+ ���ץ����ǵ�ư�������� <tt>__cplusplus</tt> �ϼ��ä��ʤ��ˡ�<br>
 
391
<br>
 
392
<li><samp>-v</samp><br>
 
393
<b>mcpp</b> �ΥС�����󤪤�ӥ��󥯥롼�ɥǥ��쥯�ȥ�Υ��������ɸ�२�顼���Ϥ˽��Ϥ��롣<br>
 
394
<br>
 
395
<li><samp>-W &lt;level&gt;</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> �򻲾ȡˡ�
 
398
<br>
 
399
<br>
 
400
<li><samp>-z</samp><br>
 
401
#include �Ǽ����ޤ줿�ե�����Υץ�ץ�������̤Ͻ��Ϥ��ʤ���
 
402
���������ޥ������������롣�ץ�ץ������ΥǥХå����˻Ȥ����ץ����Ǥ��롣<br>
 
403
</ul>
 
404
<p>��:</p>
 
405
<p>*1 GCC �Ȱ㤦�Τϼ������Ǥ��롣
 
406
</p>
 
407
<ol>
 
408
<li>-MG ���ץ����Ϥʤ������ץ�������λ�����ʣ�������뤫��Ǥ���ʤ������äơ�
 
409
�ɤ��������ͤ���������ά�ˡ���������-M ���ץ����Ǥ⡢���󥯥롼�ɥե����뤬���Ĥ���ʤ����ϥ��顼�ˤϤʤ뤬����¸�ط��ԤϽ��Ϥ����Τǡ���������ѤǤ��롣<br>
 
410
<li>-MM, -MMD ���ץ����ǽ��������إå����ϰϤ��������嵭�� -MM ���ץ����������ˤ��� 2, 3 �� GCC 2 / cpp0 �ǤϽ�������ʤ���ΤǤ��롣GCC 3 / cpp0, cc1 �ǤϾ嵭�� 3 �Τ����������ƥ�إå����ǥ��쥯�ȥ��ȯ�����줿��ΤϽ��������褦�ˤʤä���<br>
 
411
</ol>
 
412
<br>
 
413
 
 
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> �򻲾Ȥ��Ƥ���������
 
416
<br>
 
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>
 
420
<ul>
 
421
<li><samp>-+</samp><br>
 
422
C++ �Υץ�ץ����å��Ȥ���ư��롣�ޥ��� <tt>__cplusplus</tt> �����������ʤ����ͤ� system.H ���������Ƥ��롣�ǥե���Ȥ� 1�ˡ�// ���������Ԥι����ޤǤ򥳥��ȤȲ�ᤷ��<samp>::, .*, -&gt;*</samp> �򤽤줾��ñ��Υȡ�����Ȥ���ǧ�����롣#if ����Ǥ� true, false �Ȥ����ȡ�����Ϥ��줾�� 1, 0 ��ɾ�����롣<tt>__STDC__</tt>, <tt>__STDC_VERSION__</tt> ���������Ƥ���С������������ʤ�������GCC �����ǤǤ� GCC �Ȥθߴ����Τ���� <tt>__STDC__</tt> �Ϻ�����ʤ��ˡ�_ �ǻϤޤ�ʤ���������ޥ����������롣��������extended characters �� UCN �ؤ��Ѵ��Ϥ��ʤ���*1, *2<br>
 
423
<br>
 
424
<li><samp>-2</samp><br>
 
425
Digraphs �����ν�������ȿž���롣<i>DIGRAPHS_INIT</i> == <i>FALSE</i> �ξ��Ϥ���� digraph ��ǧ������褦�ˤʤꡢ�դξ���ǧ�����ʤ��ʤ롣<br>
 
426
<br>
 
427
<li><samp>-h &lt;n&gt;</samp><br>
 
428
�ޥ��� <tt>__STDC_HOSTED__</tt> ���ͤ� &lt;n&gt; ��������롣<br>
 
429
<li><samp>-S &lt;n&gt;</samp><br>
 
430
C �Ǥ� <tt>__STDC__</tt> 
 
431
���ͤ� &lt;n&gt; ���ѹ����롣C++ �Ǥ�̵�뤵��롣&lt;n&gt; �� [0,9] ���ϰϤο��ͤǤʤ���Фʤ�ʤ���&lt;n&gt; �� 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>
 
434
<br>
 
435
<li><samp>-V &lt;value&gt;</samp><br>
 
436
C �Ǥ� <tt>__STDC_VERSION__</tt>��C++ �Ǥ� <tt>__cplusplus</tt> �Ȥ�����������ޥ������ͤ���ꤵ�줿�� &lt;value&gt; ���ѹ����롣���ξ��� &lt;value&gt; �� 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> &gt;= 199901L �ˤʤä����ϼ��Τ褦�� C99 �λ��ͤȤʤ��<a href="#3.7"> 3.7</a> ���ȡˡ�<br>
 
438
<br>
 
439
<ol>
 
440
<li>// ��������ޤǤ򥳥��ȤȤ��ư�����
 
441
*3<br>
 
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>
 
447
<br>
 
448
</ol>
 
449
�ʤ������Ѱ����ޥ����� C99 �λ��ͤǤ��뤬��C90 ����� C++ �Ǥ�Ȥ���褦�ˤ��Ƥ��롣*4<br>
 
450
C++ �Ǥ� -V199901L �Ȥ��� <tt>__cplusplus</tt> &gt;= 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>
 
452
</ul>
 
453
<p><i>STD</i> �⡼�ɤǤϼ��Υ��ץ���󤬻Ȥ��ޤ���</p>
 
454
<ul>
 
455
<li><samp>-3</samp><br>
 
456
Trigraph �����ν�������ȿž���롣
 
457
<i>TRIGRAPHS_INIT</i> == <i>FALSE</i> �ξ��Ϥ���� trigraph ��ǧ������褦�ˤʤꡢ�դξ���ǧ�����ʤ��ʤ롣<br>
 
458
</ul>
 
459
<p>��:</p>
 
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>
 
465
<br>
 
466
 
 
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>
 
470
<ul>
 
471
<li><samp>-a</samp><br>
 
472
�����Υ�����֥饽�����˸����뼡�Τ褦�ʵ�ˡ�򥨥顼�ˤ������̤���<br>
 
473
<ol>
 
474
<li>
 
475
<pre>
 
476
#APP
 
477
</pre>
 
478
<p>�Ȥ��ä� # �ǻϤޤ�Ԥ��äΥǥ��쥯�ƥ��֤˹��פ��ʤ���硢���ιԤ򤽤Τޤ޽��Ϥ��롣</p>
 
479
<li>
 
480
<pre>
 
481
"Jugemjugem
 
482
gokouno
 
483
surikire"
 
484
</pre>
 
485
<p>�Ȥ��ä����Τ�ή���ιԤ�ޤ���ʸ�����ƥ���<br>
 
486
<samp>"Jugemjugem\ngokouno\nsurikire"</samp><br>
 
487
�Ȥ����Ԥ�Ϣ�뤹�롣</p>
 
488
<li>## �黻�Ҥˤ�� token ��Ϣ��� pp-token �Ȥ��Ƥ�̵���� token 
 
489
����������Ƥ⡢���顼�ˤ��ʤ���<br>
 
490
</ol>
 
491
<p>������ GNU 
 
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>
 
495
</ul>
 
496
<br>
 
497
 
 
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> �򻲾Ȥ��Ƥ���������
 
505
</p>
 
506
<p>��������°�Υ���ѥ���ɥ饤�Ф�����̾����ˡ�Ǥ� <b>mcpp</b> 
 
507
���Ϥ���ˡ�Τʤ����ץ����⤢��ޤ���<br>
 
508
Gcc �Ǥ� -Wp 
 
509
�Ȥ�������ޥ��ƥ����ץ�����Ȥ��ȡ��ɤ�ʥ��ץ����Ǥ�ץ�ץ����å����Ϥ����Ȥ��Ǥ��ޤ����㤨�С�</p>
 
510
<pre>
 
511
gcc -Wp,-W31,-Q23
 
512
</pre>
 
513
<p>�Ȥ���ȡ��ץ�ץ����å��� -W31 -Q23 �Ȥ������ץ�����Ϥ���ޤ����ץ�ץ����å����Ϥ��������ץ����� -Wp, ��³���� , �Ƕ��ڤä��¤٤ޤ���*1, *2</p>
 
514
<p>¾�ν����ϤǤ⡢�⤷����ѥ���ɥ饤�ФΥ�����������С����μ�Υ���ޥ��ƥ����ץ������ɲä����ۤ����ɤ��Ǥ��礦���㤨�С�-P&lt;opt&gt; �Ȼ��ꤹ��� P ��Ȥä� -&lt;opt&gt; ���ץ�ץ����å����Ϥ����褦�ˤ��Ƥ����ȡ��ɤ�ʥ��ץ����Ǥ�Ȥ���褦�ˤʤ�Τ������Ǥ���</p>
 
515
<p>�⤦���Ĥ���ˡ�ϡ���� <b>mcpp</b> �ǥץ�ץ��������ơ����ν��ϥե�����򥽡����ե�����Ȥ��ƥ���ѥ�����Ϥ��褦�� makefile ��񤯤��ȤǤ���������ˡ�ˤĤ��Ƥ� <a href="#2.9"> 2.9</a>, 
 
516
<a href="#2.10"> 2.10</a> �򻲾Ȥ��Ƥ���������
 
517
</p>
 
518
<p><b>mcpp</b> ������ν����Ϥ��ȤΥ��ץ����ϰʲ����̤�Ǥ���Compiler-independent �ǤˤϤ�����󤳤��Υ��ץ����Ϥ���ޤ���</p>
 
519
<p>LCC-Win32 �ǤǤϼ��Υ��ץ���󤬻Ȥ��ޤ���</p>
 
520
<ul>
 
521
<li><samp>-g &lt;n&gt;</samp><br>
 
522
�ޥ��� <tt>__LCCDEBUGLEVEL</tt> �� &lt;n&gt; 
 
523
��������롣<br>
 
524
<li><samp>-O</samp><br>
 
525
�ޥ��� <tt>__LCCOPTIMLEVEL</tt> �� 1 ��������롣
 
526
<br>
 
527
</ul>
 
528
<p>Visual C �ǤǤϼ��Υ��ץ���󤬻Ȥ��ޤ���
 
529
</p>
 
530
<ul>
 
531
<li><samp>arch:SSE, arch:SSE2</samp><br>
 
532
�ޥ��� <tt>_M_IX86_FP</tt> �򤽤줾�� 1, 2 ��������롣
 
533
<br>
 
534
<li><samp>-Fl &lt;file&gt;</samp><br>
 
535
GCC �� -include &lt;file&gt; ��Ʊ����
 
536
<br>
 
537
<li><samp>-G&lt;n&gt;</samp><br>
 
538
&lt;n&gt; �� 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 ��������롣
 
542
<br>
 
543
<li><samp>-GX</samp><br>
 
544
�ޥ��� <tt>_CPPUNWIND</tt> �� 1 ��������롣
 
545
<br>
 
546
<li><samp>-GZ</samp><br>
 
547
�ޥ��� <tt>__MSVC_RUNTIME_CHECKS</tt> �� 1 ��������롣
 
548
<br>
 
549
<li><samp>-J</samp><br>
 
550
�ޥ��� <tt>_CHAR_UNSIGNED</tt> �� 1 ��������롣
 
551
<br>
 
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 �Υ������Ǥ��뤳�Ȥ�ؼ����롣
 
557
���ꤷ�ʤ��Ƥ�Ʊ����<br>
 
558
<li><samp>-Tp, -TP</samp><br>
 
559
-+ ���ץ�����Ʊ����
 
560
<br>
 
561
<li><samp>-u</samp><br>
 
562
-N ���ץ�����Ʊ����
 
563
<br>
 
564
<li><samp>-Wall</samp><br>
 
565
-W17 (-W1 -W16) ��Ʊ����
 
566
<br>
 
567
<li><samp>-WL</samp><br>
 
568
-j ���ץ�����Ʊ����
 
569
<br>
 
570
<li><samp>-w</samp><br>
 
571
-W0 ���ץ�����Ʊ����
 
572
<br>
 
573
<li><samp>-X</samp><br>
 
574
-I- ���ץ�����Ʊ����
 
575
<br>
 
576
<li><samp>-Zc:wchar_t</samp><br>
 
577
�ޥ��� <tt>_NATIVE_WCHAR_T_DEFINED</tt>, <tt>_WCHAR_T_DEFINED</tt> �򤽤줾�� 
 
578
1 ��������롣<br>
 
579
<li><samp>-Zl</samp><br>
 
580
�ޥ��� <tt>_VC_NODEFAULTLIB</tt> �� 1 ��������롣
 
581
<br>
 
582
</ul>
 
583
<p>GCC (GNU C) �ǤǤϡ��ʲ��Ρʤ��� 2.6 ���������ν����ޤǤΡ˥��ץ���󤬻Ȥ��ޤ����ʤ���GCC �ѤǤ� <tt>__STDC__</tt> �� 1 �ˤ��Ƥ���Τǡ�-S1 ���ץ����ϻ��ꤷ�Ƥ⤷�ʤ��Ƥ�Ʊ���Ǥ���</p>
 
584
<p>�ޤ���<b>mcpp</b> �Υ⡼�ɤˤ��ʤ����ץ����ϼ��ΤȤ���Ǥ���</p>
 
585
<ul>
 
586
<li><samp>-b</samp><br>
 
587
���ֹ�����äΥ������Υ�������ǽ��Ϥ��롣
 
588
<br>
 
589
�ץ�ץ����å����饳��ѥ������Τؤι��ֹ����μ����Ϥ���<br>
 
590
<pre>
 
591
#line 123 "filename"
 
592
</pre>
 
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=&lt;encoding&gt;</samp><br>
 
600
-e &lt;encoding&gt; ���ץ�����Ʊ����GCC �Ϥ��Υ��ץ�������ꤹ��� &lt;encoding&gt; �� UTF-8 ���Ѵ����뤬��<b>mcpp</b> ���Ѵ��Ϥ��ʤ����Ȥ����ա�<br>
 
601
<li><samp>-fworking-directory</samp><br>
 
602
���ϤΣ����ܤ˥����ȥǥ��쥯�ȥ��ɽ�����̤� #line �Ԥ���Ϥ��롣<br>
 
603
<li><samp>-I-</samp><br>
 
604
���Υ��ץ��������ȸ�Ȥ� -I &lt;directory&gt; ���ץ����λ��ͤ��Ѥ��롣���Υ��ץ��������� -I �ǻ��ꤵ�줿�ǥ��쥯�ȥ�� #include "header.h" �η��Υإå��ե�����Υ������ˤ����Ȥ��롣���Υ��ץ����θ�� -I �ǻ��ꤵ�줿�ǥ��쥯�ȥ�Ϥ��٤Ƥ� #include directive �Υ������˻Ȥ��롣�ޤ���#include "header.h" �η��Ǥ� include ���Υǥ��쥯�ȥ�ϥ��������ʤ���<br>
 
605
<li><samp>-include &lt;file&gt;</samp><br>
 
606
�ᥤ��Υ������ե����������������ˡ�&lt;file&gt; �� #include ����ʥ���������Ƭ�� #include &lt;file&gt; �Ƚ񤤤��Τ�Ʊ����̤ˤʤ�ˡ�<br>
 
607
<li><samp>-isystem &lt;dir&gt;</samp><br>
 
608
&lt;dir&gt; �򥤥󥯥롼�ɥѥ��� 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>
 
612
¾�ν����ϤǤ� -I- 
 
613
���ץ�����Ʊ����<br>
 
614
<li><samp>-undef</samp><br>
 
615
-N ���ץ�����Ʊ����
 
616
<br>
 
617
<li><samp>-Wcomment, -Wcomments, -Wsign-compare</samp><br>
 
618
-W1 ���ץ�����Ʊ�������ꤷ�ʤ��Ƥ�Ʊ����
 
619
<br>
 
620
<li><samp>-Wundef</samp><br>
 
621
-W4 ���ץ�����Ʊ����
 
622
<br>
 
623
<li><samp>-Wtrigraphs</samp><br>
 
624
-W16 ���ץ�����Ʊ����
 
625
<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>
 
631
</ul>
 
632
<p>GCC �Ǥ� Standard �⡼�ɤǤϼ��Υ��ץ���󤬻Ȥ��ޤ���
 
633
</p>
 
634
<ul>
 
635
<li><samp>-ansi</samp><br>
 
636
<tt>__STRICT_ANSI__</tt> �ޥ����� 1 ��������롣
 
637
<br>
 
638
<li><samp>-digraphs</samp><br>
 
639
Digraph ��ǧ�������-2 �Ǥ�ȿž��ͭ���ˡ�
 
640
<br>
 
641
<li><samp>-lang-c89, -std=c89, -std=gnu89, -std=c90</samp><br>
 
642
-S1 ���ץ�����Ʊ�������ꤷ�ʤ��Ƥ�Ʊ����C90 �����Ǥʤ� C95 
 
643
�λ��ͤ�ޤޤ�롣<br>
 
644
<li><samp>-lang-c99, -lang-c9x, -std=c99, -std=c9x, -std=gnu99, -std=gnu9x</samp><br>
 
645
-V199901L ���ץ�����Ʊ����
 
646
<br>
 
647
<li><samp>-lang-c++, -x c++, -std=c++98</samp><br>
 
648
C++ �Υץ�ץ�������Ԥ���-+ ��Ʊ����
 
649
<br>
 
650
<li><samp>-pedantic, -pedantic-errors</samp><br>
 
651
-W7 (-W1 -W2 -W4) ���ץ�����Ʊ����
 
652
<br>
 
653
<li><samp>-std=iso&lt;n&gt;:&lt;ym&gt;</samp><br>
 
654
���ʤΥС���������ꤹ�롣&lt;n&gt; �� C �Ǥ� 9899 �Ǥ��ꡢ
 
655
C++ �Ǥ� 14882 �Ǥ��롣&lt;n&gt; �� 9899 �ξ��ϡ�&lt;ym&gt; �� 1990, 199409, 1999, 199901 ���Ǥ��롣&lt;n&gt; �� 14882 �ξ��ϡ�&lt;ym&gt; �� 199711 �Ǥ��롣&lt;ym&gt; �ˤ���¾���ͤ����ꤵ�줿���ϡ�<tt>__STDC_VERSION__</tt> �ޤ��� <tt>__cplusplus</tt> �������ͤ���������ʤ��ξ��� 200503 �Ȥ����褦�ˣ������ǻ��ꤹ�뤳�ȡˡ�<br>
 
656
</ul>
 
657
<p>GCC �Ǥ� <i>STD</i> �⡼�ɤǤϼ��Υ��ץ���󤬻Ȥ��ޤ���</p>
 
658
<ul>
 
659
<li><samp>-lang-asm, -x assembler-with-cpp</samp><br>
 
660
¾�ν����ϤǤ� 
 
661
-a ��Ʊ����<br>
 
662
<li><samp>-trigraphs</samp><br>
 
663
Trigraph ��ǧ�������-3 �Ǥ�ȿž��ͭ���ˡ�
 
664
<br>
 
665
</ul>
 
666
<p>GCC �Ǥ� pre-Standard �⡼�ɤǤϼ��Υ��ץ���󤬻Ȥ��ޤ���
 
667
</p>
 
668
<ul>
 
669
<li><samp>-traditional, -traditional-cpp</samp><br>
 
670
-@old ��Ʊ����
 
671
<br>
 
672
</ul>
 
673
<p>CygWIN / GCC �ǤǤϼ��Υ��ץ���󤬻Ȥ��ޤ���
 
674
</p>
 
675
<ul>
 
676
<li><samp>-mno-cygwin</samp><br>
 
677
Include directory �� /usr/include �� /usr/include/mingw ���ѹ�����
 
678
��������ޥ����� cygwin1.dll �Ѥ��� msvcrt.dll �Ѥ��ѹ����롣<br>
 
679
</ul>
 
680
<p>���Υ��ץ����Ϥ�����⥨�顼�ˤϤ��ޤ��󤬡������б����ޤ���ʥ������˥󥰤�Ф����⤢��ˡ�</p>
 
681
<ul>
 
682
<li><samp>-A &lt;predicate(answer)&gt;</samp><br>
 
683
GCC �ǤϤ��Υ��ץ����ϥ������� #assert &lt;predicate(answer)&gt; �Ƚ񤤤��Τ�Ʊ����̤ˤʤ뤬��#pragma �Ǥʤ���ĥ�ǥ��쥯�ƥ��֤� Standard C �Ǥ�ǧ����ʤ���ΤǤ��롣�������ޤޤǤΤȤ��� gcc �ϥǥե���ȤǤ� -D ���ץ�����Ʊ���Υޥ����� cpp ���Ϥ��Ƥ����Τǡ��ºݤˤϤۤȤ�ɤξ�硢�پ�Ϥʤ���#assert ��ȤäƤ��뵩�ʥ������Ǥʤ��¤�ˡ�<br>
 
684
<li><samp>-$</samp><br>
 
685
<li><samp>-g &lt;n&gt;</samp><br>
 
686
<li><samp>-idirafter &lt;dir&gt;</samp><br>
 
687
<li><samp>-iprefix &lt;dir&gt;, -iwithprefix &lt;dir&gt;, -iwithprefixbefore &lt;dir&gt;</samp><br>
 
688
<li><samp>-noprecomp</samp><br>
 
689
<li><samp>-remap</samp><br>
 
690
</ul>
 
691
<p>GCC V.3.3 �ʹߤǤϥץ�ץ����å�������ѥ���˵ۼ��������Ω�����ץ�ץ����å���¸�ߤ��ʤ��ʤä����ᡢgcc �� -no-integrated-cpp ���ץ������դ��ƸƤӽФ��Ƥ⡢�ץ�ץ����å��Υ��ץ����ǤϤʤ����ץ���󤬥ץ�ץ����å����Ϥ���Ƥ��뤳�Ȥ�����ޤ���GCC V.3.3 �ʹ��Ѥ� <b>mcpp</b> �Ǥϡ����Τ褦�ʤ�ΤΤ��� <b>mcpp</b> ��ǧ�����ʤ���ΤϤ��μ�Τˤ����ץ����Ȥ���̵�뤷�ޤ���</p>
 
692
<ul>
 
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>
 
699
</ul>
 
700
<p>��:</p>
 
701
<p>*1 -Wa �ϥ�����֥��Ѥ� -Wl �ϥ���ѤΥ���ޥ��ƥ����ץ����Ǥ��롣
 
702
UNIX / System V / cc �Υޥ˥奢��򸫤�ȡ���Ϥꤳ���Υ��ץ���󤬤��롣GCC / cc �� -W&lt;x&gt; ���ץ����Ϥ���Ȥθߴ����Τ���Τ�ΤʤΤǤ�������</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>
 
706
<ol>
 
707
<li>put_defines �Ǥ�ɸ���������ޥ����Ȥ��Ƶ��ꤵ��Ƥ����Τ⡢�����Ȥη��ǽ��Ϥ��롣<br>
 
708
<li>put_defines �ǤϤ��Υޥ�������Τ���ե�����̾�ȹ��ֹ�⥳���Ȥη��ǽ��Ϥ��졢�ޤ��ɤߤ䤹���褦�˷��������ƽ��Ϥ��뤬��-d* ���ץ����Ǥ� GCC ��Ʊ�������ǽ��Ϥ��롣���η��������ꤷ�Ƥ��� makefile �⸫�ݤ��뤫��Ǥ��롣<br>
 
709
</ol>
 
710
<br>
 
711
 
 
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> �򸫤Ƥ���������
 
718
</p>
 
719
<br>
 
720
 
 
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 ���б����Ƥ��ޤ���
 
723
</p>
 
724
<blockquote>
 
725
<table>
 
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>
 
733
</table>
 
734
</blockquote>
 
735
<p>�����ơ��¹Ի��˼��Τ褦�ʤ����Ĥ�����ˡ�Ǽºݤ˻Ȥ� encoding 
 
736
����ꤷ�ޤ���ͥ���̤Ϥ��ν�ΤȤ���Ǥ���</p>
 
737
<ol>
 
738
<li>��������� #pragma 
 
739
__setlocale( "&lt;encoding&gt;") �ǻ��ꤵ�줿 encoding ��Visual C �ѤǤ� #pragma setlocale( "&lt;encoding&gt;") �ˡ������Ȥ��ȡ����ܤΥ������ե��������Ǥ�ʣ���� encoding ��Ȥ����Ȥ��Ǥ��롣<br>
 
740
<li>�¹Ի����ץ���� -e &lt;encoding&gt; �ޤ��� -finput-charset=&lt;encoding&gt; �ǻ��ꤵ�줿 encoding��<br>
 
741
<li>�Ķ��ѿ� LC_ALL, LC_CTYPE, LANG �ǻ��ꤵ�줿 encoding��ͥ���̤Ϥ��ν�ˡ�<br>
 
742
<li><b>mcpp</b> �򥳥�ѥ��뤹��������ꤵ�줿�ǥե���Ȥ� encoding��<br>
 
743
</ol>
 
744
#pragma 
 
745
__setlocale��-e ���ץ���󡢴Ķ��ѿ��ǻ���Ǥ��� &lt;encoding&gt; �ϸ�§�Ȥ��ƶ��̤ǡ����ΤȤ���Ǥ������դ� &lt;encoding&gt; �Ϻ��դ� encoding ����ꤷ�ޤ���&lt;encoding&gt; ����ʸ������ʸ���ζ��̤򤷤ޤ��󡣤ޤ���'-', '_' ��̵�뤷�ޤ�������� '.' ������ȡ������ޤǤ򤹤٤�̵�뤷�ޤ����������äơ����Ȥ��� EUC_JP, EUC-JP, EUCJP, euc-jp, eucjp, ja_JP.eucJP �Ϥ��٤�Ʊ����ΤȤ��ư����ޤ����ޤ���* ��Ǥ�դ�ʸ�����̣���ޤ���iso8859-1, iso8859-2 ���� iso8859* �˥ޥå�����ˡ�<br>
 
746
<br>
 
747
<blockquote>
 
748
<table>
 
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>
 
757
</table>
 
758
</blockquote>
 
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>
 
761
<blockquote>
 
762
<table>
 
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>
 
767
</table>
 
768
</blockquote>
 
769
<p>Visual C++ �Ǥϡ�Windows ���ɤι���ѤǤ��뤫�ˤ�äƥǥե���Ȥ� multi-byte character encoding ���Ѥ�뤳�ȤˤʤäƤ��ޤ����ޤ���Windows �Ρ��ϰ�ȸ���Υ��ץ����פλ���ˤ�äƤ��Ѥ��ޤ��������ε�ǽ������Ⱦü�Ǥ�ä����Ǥ�����������#pragma setlocale �ˤ�����Ϥ�����ͥ�褷�ޤ���</p>
 
770
<p>GCC �ѤǤϴĶ��ѿ� LANG �˸¤äơ����Τ�Τ��Ȥ��ޤ��������� GCC �Ȥθߴ����Τ�����Ѱդ��Ƥ����ΤǤ���<b>mcpp</b> ���Ф��ƤϾ�ʸ���Ǥ��ɤ���'-' ���ά�Ǥ��뤬��GCC �Υ���ѥ�����Ф��Ƥ�ʸ���̤ꤳ�Υ��ڥ�Ǥʤ���Фʤ�ʤ��ˡ�</p>
 
771
<blockquote>
 
772
<table>
 
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>
 
777
</table>
 
778
</blockquote>
 
779
<p>GCC �ϥ���ѥ��鼫�Ȥ򥳥�ѥ��뤷������ configuration �ˤ�äơ��Ķ��ѿ� LANG �� C-* �λ����ǧ�������Τ�ǧ�����ʤ���ΤȤ���ޤ� (*1)��������������ѥ��餬ǧ�����ʤ����ϡ�<b>mcpp</b> ��������䤤�ޤ���</p>
 
780
<p>��:</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>
 
783
<br>
 
784
 
 
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>
 
790
<br>
 
791
 
 
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>
 
796
 
 
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>
 
800
<ol>
 
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>
 
807
<pre>
 
808
�֥ӥ�ɥ��ޥ�ɥ饤���:   nmake
 
809
�ֽ��ϡ�                :   mcpp.exe
 
810
�֥��꡼�󥳥ޥ�ɡ�    :   nmake clean
 
811
�֥�ӥ�ɥ��ޥ�ɡ�    :   nmake PREPROCESSED=1
 
812
</pre>
 
813
<b>mcpp</b> �� Visual C �����Ǥ򥳥�ѥ��뤹����� COMPILER=MSC �Ȥ������ץ������դ��ä��Ƽ��Τ褦�ˤ��롣<br>
 
814
<pre>
 
815
�֥ӥ�ɥ��ޥ�ɥ饤���:   nmake COMPILER=MSC
 
816
�ֽ��ϡ�                :   mcpp.exe
 
817
�֥��꡼�󥳥ޥ�ɡ�    :   nmake clean
 
818
�֥�ӥ�ɥ��ޥ�ɡ�    :   nmake PREPROCESSED=1 COMPILER=MSC
 
819
</pre>
 
820
�֥ᥤ���ե�����ץ��������ȡפǤ� make install ���������륳�ޥ�ɤ��ʤ��Τǡ��֥ӥ�ɥ��ޥ�ɥ饤��ס֥�ӥ�ɥ��ޥ�ɡפǻ��ꤵ��륳�ޥ�ɤǤ� install ��¹Ԥ����褦�� makefile ��񤤤Ƥ���ɬ�פ����롣<br>
 
821
<b>mcpp</b> �򥳥�ѥ��뤹��ΤǤʤ���С��֥ӥ�ɥ��ޥ�ɥ饤��פȡ֥�ӥ�ɥ��ޥ�ɡפȤ��̾��Ʊ����ɤ���<br>
 
822
���������Ϥ����顢�ִ�λ�פ򥯥�å����롣<br>
 
823
<li>����ȡ�
 
824
�֥���塼����󥨥����ץ�����פ˥ץ��������Ȥ������Τǡ����Ρ֥������ե�����פȤ����ե�����򥯥�å����ơ������ơ���˥塼�Ρ֥ץ��������ȡפ���ִ�¸���ܤ��ɲáפ����ӡ��������ե�����򤹤٤����򤷤ơ�OK�פ��롣����ȡ��֥���塼����󥨥����ץ�����פ˥������ե�����̾������롣<br>
 
825
</ol>
 
826
<p>����ǡ����Խ��ס֥ӥ�ɡס֥�ӥ�ɡס֥ǥХå������ε�ǽ�����٤ƻȤ���褦�ˤʤ�ޤ���</p>
 
827
<p>��:</p>
 
828
<p>*1 �ǥХå���ǽ��Ȥ�����ˤϡ�WindowsXP Pro, Windows2000 
 
829
�Ǥ� "Debugger users" �Ȥ������롼�פ˥桼�����°������ɬ�פ����롣WindowsXP HE �ǤϤ����������롼�פϤʤ��Τǡ������ԤȤ��ƥ������󤷤ʤ���Фʤ�ʤ����ޤ�����������٥롦�ǥХå���ǽ��Ȥ�����ˤ� cl.exe �θƤӽФ��� -Zi ���ץ������ղä��ơ��ǥХå��������������褦�� makefile ��񤤤Ƥ���ɬ�פ����롣</p>
 
830
<p>*2 �֥������ȡ�-&gt;�֥ץ������פ��鵯ư����ȡ����󥯥롼�ɥǥ��쥯�ȥ����δĶ��ѿ������ꤵ��ʤ�����������ꤹ��ˤ���ˡ�Visual Studio ���ޥ�ɥץ���ץȡפ򳫤��ơ��������ե�����Τ���ǥ��쥯�ȥ�˰�ư������������ VC 2003 �Ǥ�</p>
 
831
<pre>
 
832
devenv *.sln /useenv
 
833
</pre>
 
834
<p>�Ȥ��ơ�VC 2005 express edition �Ǥ�</p>
 
835
<pre>
 
836
vcexpress *.sln /useenv
 
837
</pre>
 
838
<p>�Ȥ��Ƶ�ư���ʤ���Фʤ�ʤ���
 
839
</p>
 
840
<br>
 
841
 
 
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>
 
850
<br>
 
851
 
 
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>
 
857
<pre>
 
858
#pragma MCPP put_defines
 
859
</pre>
 
860
<p>���Ǥ�����ȡ���������ޥ����򤹤٤��Τ뤳�Ȥ��Ǥ��ޤ������줾��Υޥ�������Τ��륽�����ե�����̾�ȹ��ֹ��ɽ�����륳���Ȥ���Ϥ���ޤ���-S1, -N ���Υ��ץ������դ��Ƶ�ư����ȡ����줾���������ޥ�������äƤ��뤳�Ȥ��狼��ޤ���</p>
 
861
<p>#pragma MCPP preprocess �Ȥ����ǥ��쥯�ƥ��֤˽в񤦤� <b>mcpp</b> �ϡ�</p>
 
862
<pre>
 
863
#pragma MCPP preprocessed
 
864
</pre>
 
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>
 
868
<p>��:</p>
 
869
<p>*1 �ºݤν����Ϥ⤦����ʣ���Ǥ��롣#pragma MCPP preprocessed 
 
870
����������ϹԤ���Ⱦ�򤽤Τޤ޽��Ϥ˥��ԡ����뤬��ɸ���������ޥ����� #define �Ԥ������ȥޡ����˰Ϥޤ�Ƥ���Τǡ����ιԤϼΤƤ롣�ޤ�������ν������Ѥ��ǤǤ� #line �ԤϽ����ϤΥ���ѥ������Τ���������������Ѵ����ƽ��Ϥ��롣</p>
 
871
<p>*2 �������äơ�pre-preprocess ���Ƥ�ޥ�������ξ��ξ���ϼ����ʤ���</p>
 
872
 
 
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>
 
876
<pre>
 
877
#if PREPROCESSED
 
878
#include    "mcpp.H"
 
879
#else
 
880
#include    "system.H"
 
881
#include    "internal.H"
 
882
#endif
 
883
</pre>
 
884
<p>�����ơ�system.H �� noconfig.H �ޤ��� configed.H �Ȥ����Ĥ���ɸ��إå��� include ���Ƥ��ޤ���mcpp.H �ϻ���󶡤��륽�����ˤϤ���ޤ��󡣤��줬�����줫���������� "pre-pre-processed" header �ʤΤǤ���</p>
 
885
<p>mcpp.H ����������ˤϡʤ������ noconfig.H �������꤬����Ǥ���ˡ�</p>
 
886
<pre>
 
887
mcpp &gt; mcpp.H
 
888
</pre>
 
889
<p>�Ȥ��� <b>mcpp</b> ��ư���ޤ���GCC ���Ǥϡ�-b ���ץ������դ���ˡ�<br>
 
890
�����ơ������ܡ��ɤ���</p>
 
891
<pre>
 
892
#pragma MCPP preprocess
 
893
#include "system.H"
 
894
#include "internal.H"
 
895
#pragma MCPP put_defines
 
896
</pre>
 
897
<p>���Ǥ����ߡ�end-of-file �����Ϥ��� <b>mcpp</b> 
 
898
��λ���ޤ���</p>
 
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>
 
905
<ol>
 
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>
 
909
</ol>
 
910
Pre-preprocess �ε�ǽ�Ȥ��Ƥϡ�<b>mcpp</b> �Τۤ����ְ㤤���ʤ�����Ū�Ǥ���<br>
 
911
<br>
 
912
 
 
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>
 
917
<pre>
 
918
#pragma once
 
919
</pre>
 
920
<p>�Ƚ񤤤Ƥ����ȡ����Υե�����򥤥󥯥롼�ɤ��� #include �Ԥ�����ФƤ��Ƥ⡢�ǽ�Σ��󤷤����󥯥롼�ɤ��ޤ���</p>
 
921
<p>�̾�ϡ���������°��ɸ��إå��Ǥ�</p>
 
922
<pre>
 
923
#ifndef __STDIO_H
 
924
#define __STDIO_H
 
925
/* stdio.h �����   */
 
926
#endif
 
927
</pre>
 
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>
 
935
<pre>
 
936
#ifndef __STDIO_H
 
937
#define __STDIO_H
 
938
#pragma once
 
939
/* stdio.h �����   */
 
940
#endif
 
941
</pre>
 
942
<p>��������&lt;assert.h&gt; �ˤ� #pragma once �Ͻ񤤤ƤϤ����ޤ���ʤ�����ͳ�� <a href="cpp-test.html#5.1.2"> cpp-test.html#5.1.2</a> ���ȡˡ�C++ �� &lt;cassert&gt;, &lt;cassert.h&gt; ����Ʊ�ͤǤ���</p>
 
943
<p>�⤦��Ĥ�����ϡ�GCC / GLIBC �κǶ�Υ����ƥ�Ǥ� &lt;stddef.h&gt; �Τ褦�ˡ�¾�� system header ���鷫���֤� #include �����إå��ե����뤬���뤳�ȤǤ���¿���� system header �� <tt>__need_NULL</tt>, <tt>__need_size_t</tt>, <tt>__need_ptrdiff_t</tt>, etc. �Υޥ�����������Ƥ� &lt;stddef.h&gt; �� #include ���ޤ������Τ��Ӥˡ�&lt;stddef.h&gt; �Ǥ� <tt>NULL</tt>, size_t, ptrdiff_t, etc. ���������Ƥ椭�ޤ���&lt;errno.h&gt;, &lt;signal.h&gt; ����Ʊ�ͤǤ���&lt;stdio.h&gt; �Ǥ����⡢¾�� system header �� <tt>__need_FILE, __need___FILE</tt> ���Υޥ�����������Ƥ� #include &lt;stdio.h&gt; �������Τ��Ӥ� FILE �����������Ƥ椯��礬����ޤ��������Υե�����ˤ� #pragma once �Ͻ񤭹���櫓�ˤϤ����ޤ���*3</p>
 
944
<p>��:</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>
 
948
 
 
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>
 
954
<pre>
 
955
chmod -R u+w *
 
956
</pre>
 
957
<p>�Ȥ�����ǡ�</p>
 
958
<pre>
 
959
ins_once -t *.h */*.h */*/*.h
 
960
</pre>
 
961
<p>�Ȥ��ޤ�����������ȡ�#ifndef �ޤ��� #if !defined 
 
962
�ǻϤޤ�ʤ��إå��ե����뤬��𤵤�ޤ��������Υإå����ǽ������Ƥ������������줫�顢</p>
 
963
<pre>
 
964
ins_once *.h */*.h */*/*.h
 
965
</pre>
 
966
<p>�Ȥ���ȡ��ƥإå��ե�����κǽ�˽и����� #directive �� #ifndef �ޤ��� #if !defined �Ǥ��ä����ϡ�����ľ��� #pragma once �Ԥ��񤭹��ޤ�ޤ����ʤ��줬�Ǥ���Τ� root ������Υ桼�������ΤϤ��������ɬ�פʤ� chmod -R u-w * �Ȥ��ơ�access permission �򸵤��ᤷ�Ƥ����ˡ�</p>
 
967
<p>ins_once �ˤϼ��Τ褦�ʥ��ץ���󤬤���ޤ��������ƥ�˹�碌��Ŭ���ʥ��ץ��������򤷤Ƥ���������</p>
 
968
<ul>
 
969
<li>-t:   �ե����뤬�ʥ����Ȥ�����ȡ�#ifndef �� #if !defined �ǻϤޤäƤ��뤫�ɤ�����ƥ��Ȥ��롣�ե�����Ͻ񤭴����ʤ���<br>
 
970
<li>-p:   �ե��������Ƭ�� #pragma once �Ԥ�񤭹���ʥǥե���ȤǤ� #ifndef / #if !defined �Ԥμ��˽񤭹���ˡ�<br>
 
971
<li>-g:   GCC �Τ���ˡ�&lt;stddef.h&gt;, &lt;stdio.h&gt;, &lt;signal.h&gt;, &lt;errno.h&gt; ��񤭴����ʤ��ʥǥե���ȤǤϽ񤭴����ʤ��Τ� &lt;assert.h&gt;, &lt;cassert&gt;, &lt;cassert.h&gt; �����ˡ�<br>
 
972
</ul>
 
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>
 
976
<br>
 
977
 
 
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>
 
980
<pre>
 
981
#include_next   &lt;header.h&gt;
 
982
</pre>
 
983
<p>�� include directory �򥵡�������ݤˡ����� include ���Υե�����Τ���ǥ��쥯�ȥ�򥹥��åפ��ơ����μ��Υ�������Υǥ��쥯�ȥ꤫�饵������Ϥ�ޤ���</p>
 
984
<p>CygWIN, MinGW �Ǥϡ��إå�̾����ʸ������ʸ���ζ��̤�̵�뤷�ޤ���</p>
 
985
<pre>
 
986
#pragma MCPP warning    any message
 
987
 
 
988
#warning    any message
 
989
</pre>
 
990
<p>�Ǥϡ�any message �򤽤Τޤ� warning �Ȥ���ɸ�२�顼���Ϥ˽��Ϥ��ޤ���������������� #error �Ȱ�äƥ��顼�ˤϤʤ�ޤ���</p>
 
991
<p>��:</p>
 
992
<p>*1 V.2.5 �ޤǤ� #pragma MCPP include_next ��������Ƥ�������
 
993
ɬ�פ��ʤ��Ȼפ���ΤǺ��������</p>
 
994
<br>
 
995
 
 
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( "&lt;encoding&gt;") 
 
1003
�� multi-byte character encoding �� &lt;encoding&gt; ���ѹ����ޤ���__setlocale �ΰ�����ʸ�����ƥ��Ǥʤ���Фʤ�ޤ���&lt;encoding&gt; �ˤĤ��Ƥ� <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>
 
1006
<br>
 
1007
 
 
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 &lt;args&gt; �ǥ��쥯�ƥ��֤ϥ��������Ǥ�դιԤ˽񤯤��Ȥ��Ǥ��ޤ���&lt;args&gt; �ǥǥХå�����μ������ꤷ�ޤ������Ĥ� #pragma MCPP debug �ǥ��쥯�ƥ��֤�ʣ���� &lt;arg&gt; ����ꤹ�뤳�Ȥ��Ǥ��ޤ���ɬ�����İʾ�� &lt;arg&gt; ���꤬ɬ�פǤ������Υǥ��쥯�ƥ��֤�����ȡ���������ǥХå�����ν��Ϥ��Ϥޤ�ޤ��������ơ�#pragma MCPP end_debug &lt;args&gt; �ǡ�&lt;args&gt; �ΥǥХå�������Ϥ��������ޤ���#pragma MCPP end_debug �Ǥϡ�&lt;args&gt; ���ά���뤳�Ȥ��Ǥ��ޤ������ξ��ϡ����ꤵ��Ƥ������٤ƤΥǥХå�������Ϥ��������ޤ���<b>mcpp</b> �ǥ��ݡ��Ȥ��ʤ������� &lt;args&gt; �ˤ��ä����ϡ��������˥󥰤�Ф��ޤ������������ˤ��ä�������������ͭ���Ǥ���<br>
 
1011
�ǥХå�����Ϥ��٤ơ��ץ�ץ�����������ν��Ϥ�Ʊ���ѥ��˽��Ϥ���ޤ������������ν��Ϥ�Ʊ�������뤿��Ǥ����������äơ����Υǥ��쥯�ƥ��֤�����ȥ���ѥ���Ǥ��ޤ���</p>
 
1012
<p>�ץ�ץ������η�̤˵��䤬�����硢������ʬ��</p>
 
1013
<pre>
 
1014
#pragma MCPP debug token expand
 
1015
/* �ǥХå���������ʬ   */
 
1016
#pragma MCPP end_debug
 
1017
</pre>
 
1018
<p>�Ȥ����դ��ˤϤ���ǻȤ��ޤ���
 
1019
</p>
 
1020
<p>����� <b>mcpp</b> ���ȤΥǥХå��ѤΤ�ΤǤ�����
 
1021
�ץ�ץ������β�����ȥ졼�����������˻Ȥ��ޤ����������Ū����Ū�ʤΤǡ��������򸫤ʤ�������Ǥ��ʤ��Ȥ����⤢�ꡢ�������뤵���⤢��ޤ��������ޤ󤷤Ƥ���������</p>
 
1022
<p>&lt;arg&gt; �μ���ϼ����̤�Ǥ���</p>
 
1023
<blockquote>
 
1024
<table>
 
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>
 
1032
</table>
 
1033
</blockquote>
 
1034
<br>
 
1035
 
 
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>
 
1040
 
 
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>
 
1044
<ol>
 
1045
<li>�ץ�ץ������ǥ��쥯�ƥ��ֹԤγ��Ϥ� '#'<br>
 
1046
<li>function-like 
 
1047
�ޥ�������Υѥ�᡼���ꥹ�ȳ��Ϥ� '('<br>
 
1048
<li>function-like 
 
1049
�ޥ�������Υѥ�᡼������ڤ� ','<br>
 
1050
<li>function-like 
 
1051
�ޥ����ƤӽФ��ΰ����ꥹ�ȳ��Ϥ� '('<br>
 
1052
</ol>
 
1053
<p>Pp-token �μ���ϼ����̤�Ǥ���
 
1054
</p>
 
1055
<blockquote>
 
1056
<table>
 
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>
 
1066
</table>
 
1067
</blockquote>
 
1068
<p>�����Τ��� (SEP) �ϲ��ԥ����ɰʳ����̾��ɽ������ޤ���
 
1069
���ԥ��������Υ���ȥ����륳���ɤ� &lt;^J&gt;, &lt;^M&gt; ����ɽ������ޤ���</p>
 
1070
 
 
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>
 
1073
<p>Standard �⡼�ɤ� 
 
1074
#pragma MCPP debug �Ǥϼ����̤�Ǥ���<br>
 
1075
�ޥ����ƤӽФ�������ȡ�
 
1076
�ޤ����Υޥ����������ɽ������ޤ�������ˡ��������ɤ߹��ޤ졢�ִ��ꥹ����Υѥ�᡼�����֤�������졢�����������褦���������ɽ������ޤ����ޥ���������ͥ��Ȥ���Ƥ���С����줬�缡�����������Ÿ������Ƥ����ޤ���������˥ޥ���������С����β������Ƶ�Ū�ˡʥѥ�᡼���Ȥ��ִ������ˡ˥ȥ졼������ޤ���</p>
 
1077
<p>ɽ���� <b>mcpp</b> ���ȤΤ����Ĥ��δؿ��ؤν�����Τ��Ӥˡ����δؿ�̾�ȤȤ�˹Ԥ��ޤ��������δؿ��ϼ��Τ褦�����򤹤�롼����Ǥ���Standard �⡼�ɤΥ������򻲾Ȥ���ȡ�����ˤ褯����Ǥ��ޤ���</p>
 
1078
<blockquote>
 
1079
<table>
 
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>
 
1086
</table>
 
1087
</blockquote>
 
1088
<p>�����Τ�����expand �ʳ��ϸߤ��˴��ܺƵ��δط��ˤ���ޤ���</p>
 
1089
<p>replace, 
 
1090
collect_args �Ǥϡ�<b>mcpp</b> ������Ū�˥����å����Ѥ�Ǥ���Ÿ������Υǡ�����ɽ������ޤ��������Υǡ����Ǥϡ�<b>mcpp</b> ������Ū�ʥ����ɤ����Τ褦�ʵ����ɽ������ޤ���</p>
 
1091
<blockquote>
 
1092
<table>
 
1093
  <tr><th>&lt;n&gt;     </th><td>n ���ܤΥѥ�᡼��</td></tr>
 
1094
  <tr><th>&lt;TSEP&gt;  </th><td>pp-token ����ڤ뤿��� <b>mcpp</b> ���������� token separator</td></tr>
 
1095
  <tr><th>&lt;MAGIC&gt; </th><td>Ʊ̾�ޥ����κ��ִ���ػߤ��륳����</td></tr>
 
1096
  <tr><th>&lt;RT_END&gt;</th><td>�ִ��ꥹ�Ȥν����򼨤�������</td></tr>
 
1097
  <tr><th>&lt;SRC&gt;   </th><td>Identifier ���������ե����뤫������ޤ줿���Ȥ򼨤�������</td></tr>
 
1098
</table>
 
1099
</blockquote>
 
1100
<p>���Τ��� &lt;SRC&gt; �� <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>
 
1103
 
 
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>
 
1106
 
 
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>
 
1109
<p>����� DECUS 
 
1110
cpp ���ȤΥǥХå��Ѥ˥��ꥸ�ʥ��ǰ��褢���Τǡ���ϤۤȤ�ɼ��ä��Ƥ��ޤ�������Ū�ʴؿ�̾�Ф��꤫���ѿ�̾�Ȥ����ͤޤǥ��饺��ȽФƤ��ޤ���<b>mcpp</b> �Υ��������ɤ��ʤ���Ǥʤ��ȡ��ѿ�������Ǥ��ޤ���<br>
 
1111
��������ʣ���ʼ����ͤ�ɾ���ѤΥ����å����Ѥ߹ߤ�������Ƥ����褦���ϡ��������򸫤ʤ��Ƥⲿ�Ȥ�����Ǥ���Ǥ��礦��</p>
 
1112
 
 
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>
 
1117
 
 
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>
 
1121
<br>
 
1122
 
 
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>
 
1125
<pre>
 
1126
#if ULONG_MAX / 2 &lt; LONG_MAX
 
1127
#error  Bad unsigned long handling.
 
1128
#endif
 
1129
</pre>
 
1130
<p>�Ȥ���Ȥ�����</p>
 
1131
<pre>
 
1132
#assert LONG_MAX &lt;= ULONG_MAX / 2
 
1133
</pre>
 
1134
<p>�Ƚ񤱤ޤ��������� #if ���Ȥ���ɾ����������
 
1135
non-zero�ˤǤ���в��⤻��������0�ˤǤ����</p>
 
1136
<pre>
 
1137
Preprocessing assertion failed
 
1138
</pre>
 
1139
<p>�Ȥ������դ�³���Ƥ��ιԡʹ���³�ȥ����Ƚ����򤷤���ιԡˤ�ɽ�����ޤ���
 
1140
����ϥ��顼�Ȥ��ƥ�����Ȥ��ޤ�������������ߤ��ޤ���</p>
 
1141
<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 ���Ѵ��� &lt;backslash&gt;&lt;newline&gt; �κ���Ϥ��ޤ����������Ȥν����� 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>
 
1146
<pre>
 
1147
asm(
 
1148
    " leax _iob+13,y\n"
 
1149
    " pshs x\n"
 
1150
);
 
1151
</pre>
 
1152
<p>�Ȥ��ä����ǸƤӽФ��ΤǤ���</p>
 
1153
<p>���Ĺ�������ɤ��Ȥ���ʤ��ȤϤ�äƤ����ʤ��Τǡ�
 
1154
���ξ��Ϥ�����ʬ���̤δؿ��ˤ��ơ��饤�֥��ؿ���񤯻��Τ褦�ˡ��̤Υե�����ǥ�����֥�ץ�����ऽ�Τ�Τ�񤤤ơ�������֥�ѥ��ǽ�������������󥯤��ƻȤ����Ȥˤʤ�ޤ�������ϵ�������¤Τ褦�˻פ��뤫�⤷��ޤ��󤬡�portable �ʣåץ�������񤯤ˤϥ�����֥����ʬ�ϴ�����ʬΥ����ɬ�פ�����ޤ����顢�ष�� #asm ��Ȥ鷺���̥ե�����ǽ񤯤褦�ˤ����ۤ����ɤ��Ǥ��礦��</p>
 
1155
<br>
 
1156
 
 
1157
<h2><a name="3.7" href="#toc.3.7">3.7. C99 �ο���ǽ��_Pragma() �黻�ҡ����Ѱ����ޥ�������</a></h2>
 
1158
<p>����� Standard �⡼�ɤǤ����Ȥ��ޤ���<br>
 
1159
-V199901L ���ץ����� 
 
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>
 
1163
<ol>
 
1164
<li>// ��������ޤǤ򥳥��ȤȤ��ư�����<br>
 
1165
<li>���Ѱ����ޥ������Ȥ��롣
 
1166
<br>
 
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>
 
1174
</ol>
 
1175
<p>���Ѱ����ޥ����Ȥ����Τϡ����Τ褦�ʤ�ΤǤ���</p>
 
1176
<pre>
 
1177
#define debug(...)  fprintf(stderr, __VA_ARGS__)
 
1178
</pre>
 
1179
<p>�Ȥ����ޥ������������ȡ�
 
1180
</p>
 
1181
<pre>
 
1182
debug( "X = %d\n", x);
 
1183
</pre>
 
1184
<p>�Ȥ����ޥ����ƤӽФ��ϼ��Τ褦��Ÿ������ޤ���
 
1185
</p>
 
1186
<pre>
 
1187
fprintf(stderr, "X = %d\n", x);
 
1188
</pre>
 
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>
 
1194
<p>��:</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>
 
1198
<br>
 
1199
 
 
1200
<h2><a name="3.8" href="#toc.3.8">3.8. Borland C �� asm ʸ����¾���ü�ʹ�ʸ</a></h2>
 
1201
<p>Borland C �ˤ� asm �Ȥ���������ɤ����äơ�</p>
 
1202
<pre>
 
1203
asm {
 
1204
    mov x,4;
 
1205
    ...;
 
1206
}
 
1207
</pre>
 
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>
 
1212
<br>
 
1213
 
 
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>
 
1219
<p>��:</p>
 
1220
<p>*1 �����Ϥ������ɬ�פʤ� #pragma �Ǽ������٤���ΤǤ��롣
 
1221
#include_next, #warning ��Ʊ�ͤǤ��뤬��GCC �Υ����ƥ�Ǥϼºݤ˻����Ȥ��Ƥ���Τǡ�<b>mcpp</b> �Ǥ� GCC �Ǥ˸¤äƼ������������������������˥󥰤��оݤˤʤ롣</p>
 
1222
 
 
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>
 
1225
 
 
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>
 
1228
<pre>
 
1229
asm("
 
1230
    asm code0
 
1231
#ifdef PC98
 
1232
    asm code1
 
1233
#else
 
1234
    asm code2
 
1235
#endif
 
1236
    ...
 
1237
");
 
1238
</pre>
 
1239
<p>ʸ�����ƥ����Ĥ��� " �������ޤǤˤʤ��ä����Ϲ������Ĥ����Ƥ���Ȳ�᤹��Τ� GCC / cpp �Υǥե���Ȥλ��ͤǤ����������ȤäƤ���ΤǤ��ʤ���˥���ѥ������ΤǤ� asm() ��������Τ��Ԥ�ޤ���ʸ�����ƥ��Ȳ�ᤵ���餷���ˡ�</p>
 
1240
<p>������֥饽������ .s �ե�����Ȥ����ڤ�Υ���Ƥ����Τ��ɤ�����������Ȼפ��ޤ������ɤ����Ƥ� .c �ե�����������ߤ�����С�����ʤ��֤ʤä��������Ȥ򤷤ʤ��Ƥ⡢���Τ褦�ˤ���Ф��ߤޤ�������Ǥ���� Standard C ���Υץ�ץ����å��Ǥ����ꤢ��ޤ���</p>
 
1241
<pre>
 
1242
asm(
 
1243
    "    asm code0\n"
 
1244
#ifdef PC98
 
1245
    "    asm code1\n"
 
1246
#else
 
1247
    "    asm code2\n"
 
1248
#endif
 
1249
    "    ...\n"
 
1250
);
 
1251
</pre>
 
1252
 
 
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>
 
1255
<pre>
 
1256
#endif MACRO
 
1257
</pre>
 
1258
<p>����Ϥ������Ƥ����ޤ��礦��</p>
 
1259
<pre>
 
1260
#endif /* MACRO */
 
1261
</pre>
 
1262
 
 
1263
<h4>3.9.1.3. #ifdef 0</h4>
 
1264
<p><samp>i386/apm/apm.c</samp> �ˤϤʤ��</p>
 
1265
<pre>
 
1266
#ifdef 0
 
1267
</pre>
 
1268
<p>�Ȥ�������ʹԤ�����ޤ���
 
1269
</p>
 
1270
<p>�������
 
1271
</p>
 
1272
<pre>
 
1273
#if 0
 
1274
</pre>
 
1275
<p>�δְ㤤�Ǥ����ºݤˤϻȤ��Ƥ��ʤ���
 
1276
�ǥХå��⤵��Ƥ��ʤ��������ʤΤǤ��礦��</p>
 
1277
 
 
1278
<h4>3.9.1.4. �ޥ�����������</h4>
 
1279
<p><samp>gnu/i386/isa/dgb.c</samp> �Ǥϼ��ιԤ������Υإå��ե������̷�⤹���������ˤʤ�ޤ���</p>
 
1280
<pre>
 
1281
#define DEBUG
 
1282
</pre>
 
1283
<p>Standard C �Ǥ��������� violation of constraint �ǡ��ºݤˤϽ����Ϥˤ�äơ����顼�ˤ�����ǽ��������ͭ���Ȥ����Τȡ�GCC 2 / cpp �Τ褦�˥ǥե���ȤǤ��ۤäƤ��Ȥ������ͭ���Ȥ����ΤȤ���ޤ����μ¤ˤ��Ȥ������ͭ���ˤ���ˤϡ�ľ����</p>
 
1284
<pre>
 
1285
#undef DEBUG
 
1286
</pre>
 
1287
<p>�������٤��Ǥ���</p>
 
1288
 
 
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>
 
1293
 
 
1294
<h4>3.9.1.6. ���Ѱ����ޥ���</h4>
 
1295
<p><samp>gnu/ext2fs/ext2_fs.h, i386/isa/mcd.c</samp> �ˤϼ��Τ褦�ʲ��Ѹİ����Υޥ������������Ƥ��ޤ���</p>
 
1296
<pre>
 
1297
#define MCD_TRACE(fmt, a...)                \
 
1298
{                                           \
 
1299
    if (mcd_data[unit].debug) {             \
 
1300
        printf("mcd%d: status=0x%02x: ",    \
 
1301
            unit, mcd_data[unit].status);   \
 
1302
        printf(fmt, ## a);                  \
 
1303
    }                                       \
 
1304
}
 
1305
 
 
1306
#   define ext2_debug(fmt, a...)    { \
 
1307
        printf ("EXT2-fs DEBUG (%s, %d): %s:", \
 
1308
            __FILE__, __LINE__, __FUNCTION__); \
 
1309
        printf (fmt, ## a); \
 
1310
        }
 
1311
</pre>
 
1312
<p>����� GCC / cpp �ȼ��γ�ĥ���ͤǡ�¾�ν����ϤǤ����Ѥ��ޤ��󡣤��� ## a �ΤȤ�����ñ�� a �Ȥ�������⤢��ޤ���## ������ȡ��ޥ����ƤӽФ��� a... ���б�����������ʤ��ä����ϡ�����ľ���Υ���ޤ������ޤ���<br>
 
1313
C99 �Ǥϲ��Ѹİ����ޥ������ɲä���Ƥ��ޤ�������ˡ���ۤʤꡢ��������ϼ��Τ褦�˽񤯤��Ȥˤʤ�ޤ���</p>
 
1314
<pre>
 
1315
#define MCD_TRACE( ...)                     \
 
1316
{                                           \
 
1317
    if (mcd_data[unit].debug) {             \
 
1318
        printf("mcd%d: status=0x%02x: ",    \
 
1319
            unit, mcd_data[unit].status);   \
 
1320
        printf( __VA_ARGS__);               \
 
1321
    }                                       \
 
1322
}
 
1323
 
 
1324
#   define ext2_debug( ...)         { \
 
1325
        printf ("EXT2-fs DEBUG (%s, %d): %s:", \
 
1326
            __FILE__, __LINE__, __FUNCTION__); \
 
1327
        printf ( __VA_ARGS__); \
 
1328
        }
 
1329
</pre>
 
1330
<p>C99 �Ǥ� ... ���б�����ƤӽФ����ΰ����ϣ��İʾ�ɬ�פʤΤ��Ф��ơ�GCC / cpp �Ǥ� a... ���б���������ϣ��ĤǤ⤫�ޤ�ʤ��Ȥ����Τ�����ä�����������Ǥ���<b>mcpp</b> �ǤϤ�����н褹�뤿�ᡢ ... ���б�������������Ĥ�ʤ����ϡ�warning �ϽФ���ΤΥ��顼�ˤϤ��ʤ��褦�ˤ��Ƥ��ޤ����������äơ����Τ褦�ʽ�����Ǥ��ޤ������Τۤ����񤭴����ϰ��а��б��ǤǤ���Τǡ���ñ�Ǥ��������������ν����Ǥϡ����������ľ���Υ���ޤ��Ĥ�Τǡ����Ȥ��� printf( fmt, ) ���Ȥ���Ÿ����̤ˤʤäƤ��ޤ����Ȥ�����ޤ������ξ��ϡ��ޥ��������嵭�� C99 ���ͤν����ˤ��뤫���ޤ��ϥޥ����ƤӽФ��ǥ��������Ȥ�ʤ��褦�ˤ��뤷������ޤ��󡣥������������ˤ� NULL �� 0 �Τ褦��̵���ʥȡ������Ȥäơ�<samp>MCD_TRACE(fmt, NULL)</samp> ���Ƚ񤯤��Ȥˤʤ�ޤ���*1</p>
 
1331
<pre>
 
1332
#define MCD_TRACE(fmt, ...)
 
1333
{
 
1334
    if (mcd_data[unit].debug) {
 
1335
        printf("mcd%d: status=0x%02x: ",
 
1336
            unit, mcd_data[unit].status);
 
1337
        printf(fmt, __VA_ARGS__);
 
1338
    }
 
1339
}
 
1340
 
 
1341
#   define ext2_debug(fmt, ...)         {
 
1342
        printf ("EXT2-fs DEBUG (%s, %d): %s:",
 
1343
            __FILE__, __LINE__, __FUNCTION__);
 
1344
        printf (fmt, __VA_ARGS__);
 
1345
        }
 
1346
</pre>
 
1347
<p>��:</p>
 
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>
 
1352
 
 
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>
 
1355
<pre>
 
1356
LIST_HEAD(, arg2)
 
1357
TAILQ_HEAD(, arg2)
 
1358
CIRCLEQ_HEAD(, arg2)
 
1359
SLIST_HEAD(, arg2)
 
1360
STAILQ_HAED(, arg2)
 
1361
</pre>
 
1362
<p>������������ʤΤǤ������������ C99 �Ǥϸ�ǧ����ޤ�������C90 �Ǥ� undefined �Ǥ����ͥ��Ȥ��줿�ޥ����ƤӽФ��Ǥ��ޤ��ް���������ˤʤä����Τ�������ͤ���ȡ�������������ꤵ��Ƥ���ۤ����ɤ��ȸ����ޤ�������������˥��������񤯤��ȤˤϤ����ξ���ɬ�������ʤ����������ޤ��󡣰��������ĤΥޥ����Ǥϥ�������Ȱ����η���Ȥζ��̤��Ĥ��ʤ��Ȥ��� syntax �Τ����ޤ��������뤳�Ȥ⡢˺��ƤϤʤ�ޤ���</p>
 
1363
<p>�����񤯤ۤ����ɤ��Ǥ��礦������Ǥ���� Standard C ���ΤɤΥץ�ץ����å��Ǥ����ꤢ��ޤ���</p>
 
1364
<pre>
 
1365
#define EMPTY
 
1366
 
 
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)
 
1372
</pre>
 
1373
<p>�Ȥ����ǡ������Υإå��ե��������ˤϡ������Υޥ����������ʤ����¾�ΤɤΥإå��� #include ����Ƥ��ʤ��Ȥ�����Τ�����ޤ���nfs �ǥ��쥯�ȥ�Τ�Ρˡ������Υޥ���������� sys/queue.h �ˤ��ꡢ*.c �ץ�����ब���������� #include ���뤳�Ȥ���Ԥ��Ƥ���ΤǤ������֤ʤä����������Υإå����Ǥ���</p>
 
1374
<p>�ʤ���<samp>kern/kern_mib.c</samp> �ˤϼ��Τ褦�ʥޥ����ƤӽФ�������ޤ���</p>
 
1375
<pre>
 
1376
SYSCTL_NODE(, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
 
1377
</pre>
 
1378
<p>�����������Υ�������� <tt>EMPTY</tt> �Ȥ���櫓�ˤϤ����ޤ��󡣤��Υޥ���������� <samp>sys/sysctl.h</samp> �ˤ��ꡢ���Τ褦�ˤʤäƤ��뤫��Ǥ���</p>
 
1379
<pre>
 
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*)&amp;sysctl_##parent##_##name, 0, handler, "N", descr);
 
1384
    TEXT_SET(sysctl_##parent##_##name, sysctl__##parent##_##name);
 
1385
</pre>
 
1386
<p>���ʤ���������ΰ����ϥޥ���Ÿ������ʤ��ΤǤ��ʤ�����ˤ��� <tt>SYSCTL_OID</tt> �Ȥ����ޥ����Ǥ⡢��Ϥ����������ϥޥ���Ÿ������ʤ��ˡ�����ϥ�������Τޤޤˤ��Ƥ�����������ޤ���*1</p>
 
1387
<p>��:</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>
 
1390
 
 
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>
 
1393
<pre>
 
1394
#define __byte_swap_long(x)     (replacement text)
 
1395
#define NTOHL(x)                (x) = ntohl((u_long)x)
 
1396
#define ntohl                   __byte_swap_long
 
1397
</pre>
 
1398
<p>����� ntohl ������Ǥ�������� object-like �ޥ����Ǥ���ʤ��� function-like �ޥ�����̾����Ÿ�����졢���Τ����������³���ƥ����Ȥ򴬤����ߡ��������� function-like �ޥ����Τ褦��Ÿ������ޤ�������Ÿ����ˡ�� K&amp;R 1st. ����ΰ��ۤλ��ͤǡ�Standard C �ǤϤʤ�����ˡ�Ȥʤä���ΤǤ������������䤬�̤ΤȤ����������Ƥ���褦�ˡ����λ��ͤ������ޥ���Ÿ����̵�Ѥ�ʣ���ˤ������ʽ�ˤޤǺ����⤿�餷�Ƥ��븵���Ǥ��ꡢ�֥Х��Τ褦�ʻ��͡פʤΤǤ���*1</p>
 
1399
<p>������ϼ��֤� function-like �ޥ����Ǥ����Τ��ά���� object-like �ޥ����Ȥ��ƽ񤤤Ƥ����ΤǤ�����function-like �ޥ����餷�����Τ褦�˽񤤤��ۤ����ɤ��Ǥ��礦������Ǥ���в�������⤢��ޤ���</p>
 
1400
<pre>
 
1401
#define ntohl(x)                __byte_swap_long(x)
 
1402
</pre>
 
1403
<p><samp>i386/isa/sound/os.h</samp> �ˤ�Ʊ��Υޥ������������ޤ���</p>
 
1404
<pre>
 
1405
#define INB                     inb
 
1406
#define INW                     inb
 
1407
</pre>
 
1408
<p>����Ϥ������Ƥ����ޤ��礦��
 
1409
</p>
 
1410
<pre>
 
1411
#define INB(x)                  inb(x)
 
1412
#define INW(x)                  inb(x)
 
1413
</pre>
 
1414
<p>��
 
1415
:</p>
 
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>
 
1418
 
 
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>
 
1424
<pre>
 
1425
asm(
 
1426
    "    asm code0\n"
 
1427
#ifdef Machine_A
 
1428
    "    asm code1\n"
 
1429
#else
 
1430
    "    asm code2\n"
 
1431
#endif
 
1432
    "    ...\n"
 
1433
);
 
1434
</pre>
 
1435
<p>��:</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>
 
1438
 
 
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>
 
1442
<pre>
 
1443
#endif;
 
1444
</pre>
 
1445
 
 
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>
 
1451
<p>��:</p>
 
1452
<p>*1 ���� 3.9.3 ���񤫤줿�Τ� 1998 �Τ��ȤǤ��롣���θ塢gcc 
 
1453
�� man �� info �Ǥϡ��������ˤ���ɽ���Ϻ�����줿�������������ͤ��ä��Ѥ�ä��櫓�ǤϤʤ���</p>
 
1454
 
 
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>
 
1457
 
 
1458
<h4>3.9.4.1. �Ԥ�ޤ���ʸ�����ƥ��</h4>
 
1459
<p><samp>sysdeps/i386/dl-machine.h, stdlib/longlong.h</samp> �ˤ�</p>
 
1460
<pre>
 
1461
#define MACRO asm("
 
1462
    instr 0
 
1463
    instr 1
 
1464
    instr 2
 
1465
")
 
1466
</pre>
 
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>
 
1473
<pre>
 
1474
#define MACRO asm("\n    instr 0\n    instr 1\n    instr 2\n")
 
1475
</pre>
 
1476
<p>�Ȥ��������Ѵ����ƽ������ޤ���3.9.1.1 �Τ褦������˥ǥ��쥯�ƥ��֤ΤϤ��ޤäƤ����Τϡ�����Ǥ��б��Ǥ��������������ľ�������ʤ��ˡ�</p>
 
1477
 
 
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>
 
1485
 
 
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>
 
1490
 
 
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>
 
1494
 
 
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>
 
1498
 
 
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>
 
1501
<pre>
 
1502
#define HAVE_MREMAP defined(__linux__) &amp;&amp; !defined(__arm__)
 
1503
</pre>
 
1504
<p>����ϡ�</p>
 
1505
<pre>
 
1506
#if HAVE_MREMAP
 
1507
</pre>
 
1508
<p>�Ȥ����ǥ��쥯�ƥ��֤������</p>
 
1509
<pre>
 
1510
#if defined(__linux__) &amp;&amp; !defined(__arm__)
 
1511
</pre>
 
1512
<p>�Ȥʤ뤳�Ȥ���Ԥ��Ƥ����ΤǤ���
 
1513
</p>
 
1514
<p>���������ޤ� #if ����ǥޥ���Ÿ���η�̤� defined �Ȥ��� pp-token 
 
1515
���ФƤ���Τϡ����ʤǤ� undefined �Ǥ������Τ��Ȥ��̤Ȥ��Ƥ⡢�ʤ����Υޥ������ѤǤ���</p>
 
1516
<p><tt>HAVE_MREMAP</tt> �Ȥ����ޥ����Ϥ��ä���</p>
 
1517
<pre>
 
1518
defined(__linux__) &amp;&amp; !defined(__arm__)         (1)
 
1519
</pre>
 
1520
<p>���ִ����졢���� identifier 
 
1521
�Ǥ��� defined, __linux__, __arm__ �����줾��ޥ����Ǥ��뤫�ɤ�����Ĵ�٤�졢�ޥ����Ǥ����Ÿ������ޤ����������äơ�defined �ϥޥ����Ȥ����������Ƥ���Ϥ��Ϥʤ��Τǡʤ⤷�������Ƥ���С����켫�Τ����Ǥ� undefined�ˡ����� __linux__ �� 1 ���������Ƥ��ơ�__arm__ ���������Ƥ��ʤ���С����Υޥ����Ϻǽ�Ū�˼��Τ褦��Ÿ������ޤ���</p>
 
1522
<pre>
 
1523
defined(1) &amp;&amp; !defined(__arm__)
 
1524
</pre>
 
1525
<p>defined(1) �Ϥ������ #if ���� syntax error �Ǥ���</p>
 
1526
<p>�Ȥ����� GCC 
 
1527
�Ǥϡ�#if �ԤǤʤ���Ф����ʤ�ΤǤ�����#if �Ԥ˸¤ä� (1) �ǥޥ���Ÿ������Ƥ��ޤ�������� #if ���Ȥ���ɾ�����ޤ���Undefined �Ǥ���ΤǤ����ְ㤤�Ȥϸ����ޤ��󤬡��ޥ���Ÿ���� #if �ԤȤ����Ǥʤ����Ȥǰۤʤ�Τϡ���Ӥ��ʤ����ͤǤ������ʤ��Ȥ⤽�λ��ͤˤ� portability ������ޤ���*1</p>
 
1528
<p>����Υޥ����ϼ��Τ褦�˽񤱤С���������ʤ��ΤǤ���</p>
 
1529
<pre>
 
1530
#if defined(__linux__) &amp;&amp; !defined(__arm__)
 
1531
#define HAVE_MREMAP 1
 
1532
#endif
 
1533
</pre>
 
1534
<p>�����������ʤä��������������᤯���ݤ���Ƥۤ�����ΤǤ���
 
1535
*2</p>
 
1536
<p>��:</p>
 
1537
<p>*1 GCC 2 / cpp �� #if �ԤǤ�����Ū�� defined ���ü�ʥޥ����Ȥ��ư��äƤ��롣
 
1538
���Τ��ᡢ���Τ褦�ʥȡ��������ޥ���Ÿ���Τ���˺���������ΤǤ��뤬�����η�̤������ޥ���Ÿ�������ˡ�#if ���Ȥ���ɾ�����뤳�Ȥˤʤ�ΤǤ��롣���ʤ�����ޥ���Ÿ���� #if ����ɾ���Ȥ�ʬΥ�����˺��򤷤Ƥ���ΤǤ��롣</p>
 
1539
<blockquote>
 
1540
<samp>defined(__linux__) &amp;&amp; !defined(__arm__)</samp>
 
1541
</blockquote>
 
1542
<p>����� GCC / cpp �Υץ�����๽¤�ˤ⤫���������Ǥ��롣GCC 2 / cpp �Ǥ� rescan() �Ȥ����ޥ����������롼���󤬻��¾�Υᥤ��롼����ȤʤäƤ��ơ����줬�������ƥ����Ȥ��ᤫ�齪���ޤ��ɤߤʤ���������Ƥ椯�������ơ��ץ�ץ������ǥ��쥯�ƥ��֤ν����롼����⤳���椫��ƤӽФ����ΤǤ��롣���Ǥ�ޥ����Ǽ�������Τϥޥ����ץ����å�������Ū�ʥץ�����๽¤�Ǥ��뤬�����ι�¤�����ޥ���Ÿ����¾�ν����Ȥκ��������������طʤˤʤäƤ���ȹͤ����롣</p>
 
1543
<p>*2 glibc 2.2 �ǤϤ��Υޥ�����ľ����Ƥ��롣</p>
 
1544
 
 
1545
<h4>3.9.4.7. .S �ե�����Ρ֥ץ�ץ�������</h4>
 
1546
<p>*.S 
 
1547
�Ȥ���̾���Υե�����ϥץ�ץ��������פ��륢����֥�Υ������Ǥ�����������ˤ� #include, #define, #if ���Υץ�ץ������ǥ��쥯�ƥ��֤��ФƤ��ޤ�������ˡ�Make �ˤ�ä���������� <samp>compile/csu/crti.S</samp> �Ȥ����ե�����ˤϡ�</p>
 
1548
<pre>
 
1549
#APP
 
1550
</pre>
 
1551
<p>�Ȥ�</p>
 
1552
<pre>
 
1553
#NO_APP
 
1554
</pre>
 
1555
<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>
 
1560
 
 
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>
 
1564
<pre>
 
1565
#123 "filename"
 
1566
</pre>
 
1567
<p>�Ȥ����������������ꤷ�Ƥ��ơ�</p>
 
1568
<pre>
 
1569
#line 123
 
1570
</pre>
 
1571
<p>��</p>
 
1572
<pre>
 
1573
#line 123 "filename"
 
1574
</pre>
 
1575
<p>�⥨�顼�ˤʤäƤ��ޤ����ȤǤ���
 
1576
</p>
 
1577
<p><b>mcpp</b> �Ǥ� GCC �ǤǤ� GCC �η�����ǥե���Ȥˤ��ޤ�������������
 
1578
rpcgen �����������ü�ʷ���������ˤ��ơ�ɸ��Ū�ʷ������б����Ƥ��ʤ��Ȥ����Τϡ��������ʻ��ͤǤ���</p>
 
1579
 
 
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>
 
1583
<p>��:</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>
 
1585
 
 
1586
<h4>3.9.4.10. Undocumented �ʻ�������ޥ���</h4>
 
1587
<pre>
 
1588
__VERSION__, __SIZE_TYPE__, __PTRDIFF_TYPE__, __WCHAR_TYPE__
 
1589
</pre>
 
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>
 
1592
 
 
1593
<h4>3.9.4.11. Undocumented �ʴĶ��ѿ�</h4>
 
1594
<p>��äȤ����ʤΤ� 
 
1595
<tt>SUNPRO_DEPENDENCIES</tt> �Ȥ��� undocumented �ʴĶ��ѿ��Ǥ���<samp>sysdeps/unix/sysv/linux/Makefile</samp> �ˤ�</p>
 
1596
<pre>
 
1597
SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \
 
1598
$(CC) -E -x c $(sysinclude) $&lt; -D_LIBC -dM | \
 
1599
... \
 
1600
etc.
 
1601
</pre>
 
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>
 
1606
 
 
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>
 
1612
 
 
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>
 
1620
<pre>
 
1621
#!/bin/sh
 
1622
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/mcpp -Q -lang-asm "$@"
 
1623
</pre>
 
1624
<p>-Q ���ץ����Ϥʤ��Ƥ⤫�ޤ��ޤ��󤬡����̤ο��ǥ�å�������Ͽ����ˤ��դ����ۤ����ɤ��Ǥ��礦��<br>
 
1625
����ˡ����Τ褦�ʥ��ޥ�ɤ��Ǥ����ߤޤ���</p>
 
1626
<pre>
 
1627
chmod a+x mcpp.sh
 
1628
mv cpp cpp_gnuc
 
1629
ln -sf mcpp.sh cpp
 
1630
</pre>
 
1631
<p>�������Ƥ����ȡ�gcc 
 
1632
�� cpp ��ƤӽФ������ˡ�����˥�󥯤���Ƥ��� mcpp.sh ���¹Ԥ��졢<b>mcpp</b> �˾嵭�Υ��ץ������gcc ���ղä��륪�ץ��������ˡ��ղä��ƸƤӽФ��ޤ���</p>
 
1633
<p>�ǥե���ȤΥ��ץ������ѹ�������ϡ�mcpp.sh ���ѹ�����ʤꡢmcpp ��ľ�ܸƤӽФ��ʤꤷ�ޤ��������ơ�GCC / cpp ��Ȥ�����</p>
 
1634
<pre>
 
1635
ln -sf cpp_gnuc cpp
 
1636
</pre>
 
1637
<p>�Ȥ��ޤ���</p>
 
1638
<p>��:</p>
 
1639
<p>*1 <b>mcpp</b> �� configure ���ƥ��󥹥ȡ��뤷�����ϼ�ưŪ��Ŭ�ڤ����꤬����롣
 
1640
���Ȥ� -Q -lang-asm ���ץ������ɲä�������Ǥ��ࡣ</p>
 
1641
 
 
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>
 
1647
<pre>
 
1648
grep fatal `find . -name mcpp.err`
 
1649
grep error `find . -name mcpp.err`
 
1650
</pre>
 
1651
<p>���ˡ��������˥󥰤��������ޤ���
 
1652
</p>
 
1653
<pre>
 
1654
grep warning `find . -name mcpp.err` | sort -k3 -u | less
 
1655
</pre>
 
1656
<p>�������˥󥰤νн�򤹤٤Ƹ��뤿��ˤϡ����Τ褦�ˤ��ޤ���
 
1657
</p>
 
1658
<pre>
 
1659
grep warning `find . -name mcpp.err` | sort -k3 | uniq | less
 
1660
</pre>
 
1661
<p>����μ���Υ������˥󥰤򸫤�ˤϡ����Ȥ��м��Τ褦�ˤ��ޤ���
 
1662
</p>
 
1663
<pre>
 
1664
grep 'warning: Replacement' `find . -name mcpp.err` | sort -k3 | uniq | less
 
1665
</pre>
 
1666
<p>�������Ƹ�����Ĥ��������ǡ��������� mcpp.err �� less �Ǹ������Ƥ��ǧ����
 
1667
ɬ�פʤ饽�����򸫤ޤ���<br>
 
1668
�����ɬ�פʤ顢������������θĽ�� 
 
1669
#pragma MCPP debug expand, #pragma MCPP end_debug ���Ƕ���Ǻ��٥ץ�ץ��������ơ����ν��Ϥ򸫤ޤ������λ��ˤϡ��ץ�ץ������ν��Ϥȿ��ǥ�å������Ȥ�Ʊ���ե�����˽Ф�褦�ˡ����Τ褦�ˤ��ޤ���make ������ϡ��嵭�� shell-script �����񤭴�����ˡ�</p>
 
1670
<pre>
 
1671
mcpp &lt;-opts&gt; in-file.c &gt; in-file.i 2&gt;&amp;1
 
1672
</pre>
 
1673
 
 
1674
<h3><a name="3.9.6" href="#toc.3.9.6">3.9.6. GCC 3.2 �������Υץ�ץ�����</a></h3>
 
1675
<p>Linux ����� 
 
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> =&gt; cc1 �ޤ��� <b>mcpp</b> =&gt; 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>
 
1687
<blockquote>
 
1688
<table>
 
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>
 
1695
</table>
 
1696
</blockquote>
 
1697
<p>����ѥ��뤷���Τ� 
 
1698
C �� C++ �����Ǥ���</p>
 
1699
<p>��
 
1700
:</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>
 
1707
 
 
1708
<h4>3.9.6.1. �Ԥ�ޤ���ʸ�����ƥ��</h4>
 
1709
<p>���Τ��ޤ�ˤ�Ť������� GCC 3.2 �Υ������ˤϤ���ޤ��󡣤��λ��ͤ� GCC 3.2 �Ǥ褦�䤯 obsolete �Ȥ���ޤ�������������ˤ��줬����ȡ������̤�˽����Ϥ���ޤ������������˥󥰤��Фޤ���</p>
 
1710
 
 
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>
 
1714
 
 
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>
 
1719
<pre>
 
1720
#define eprintf( fmt, ...)   fprintf( stderr, fmt, ##__VA_ARGS__)
 
1721
</pre>
 
1722
<p>����ϡ�... ���б�����������ʤ��ä����ϡ�����ľ���Υ���ޤ�������Ȥ������ͤǤ������Ȥ��С����Τ褦��Ÿ������ޤ���</p>
 
1723
<pre>
 
1724
eprintf( "success!\n")  ==&gt;  fprintf( stderr, "success!\n")
 
1725
</pre>
 
1726
<p>������򸫤�������ʻ��ͤΤ褦�Ǥ������ޥ���������ִ��ꥹ����Υ���ޤϥѥ�᡼������ڤ��ΤȤϸ¤�ʤ����ȡ��ȡ�����Ϣ��黻�ҤǤ��� ## ���̤�Ư���򤵤��Ƥ��뤳�ȡ���§���㳰���ä�ʣ���ˤ����ΤǤ��뤳�ȡ��������꤬����ޤ���<b>mcpp</b> �ǤϤ��ε�ǽ�ϼ������Ƥ��ޤ��󡣤��η��Υޥ�������Ǥ⥨�顼�ˤϤʤ�ޤ��󤬡��ޥ����ƤӽФ��˺ݤ��ơ����������ľ���Υ���ޤϺ�����ޤ���</p>
 
1727
 
 
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>
 
1730
<p>��:</p>
 
1731
<p>*1 ���Σ��ĤΥإå��ե������ glibc �� install 
 
1732
���뤳�Ȥǥ����ƥ�إå������äƤ椯��ΤǤ��롣FreeBSD �Ǥ� glibc ��ȤäƤ��ʤ��Τǡ������Υ����ƥ�إå���¸�ߤ��ʤ���</p>
 
1733
 
 
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>
 
1736
<pre>
 
1737
#define REGEX_ALLOCATE  alloca
 
1738
#define alloca( size)   __builtin_alloca( size)
 
1739
</pre>
 
1740
<p>����ϡ������񤱤�����ʤ��ΤǤ������ʤ�����ʤȤ������ά����ΤǤ��礦����</p>
 
1741
<pre>
 
1742
#define REGEX_ALLOCATE( size)   alloca( size)
 
1743
</pre>
 
1744
<p>���� regex.c �Ǥ� alloca �Ͼ��ˤ�äƤϼ��Τ褦����������褦�ˤʤäƤ��ꡢ�������뤬��Ӥ��Ƥ��ޤ���</p>
 
1745
<pre>
 
1746
#define alloca  __builtin_alloc
 
1747
</pre>
 
1748
<p>�ޤ���regex.c �ˤ� #include "regex.c" �Ȥ����Ԥ����ꡢ��ʬ���Ȥ򥤥󥯥롼�ɤ���褦�ˤʤäƤ��ޤ���ʣ������ʥ������Ǥ���</p>
 
1749
 
 
1750
<h4>3.9.6.6. 'defined' ��Ÿ�������ޥ���</h4>
 
1751
<p>����� GCC 3.2 �Υ������ˤϸ�������ޤ���</p>
 
1752
<p>�ɥ�����Ȥˤ��ȡ�
 
1753
���μ�Υޥ����ν����� GCC 2 / cpp ��Ʊ���Ǥ����ΤΡ���portability ���ʤ��פȤ����������˥󥰤�Ф����ȤˤʤäƤ��ޤ����������ƥ��Ȥ��Ƥߤ�ȡ�3.9.4.6 ����Ǥϥ������˥󥰤��Фޤ���</p>
 
1754
 
 
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>
 
1761
 
 
1762
<h4>3.9.6.8. rpcgen �� -dM ���ץ����λ��ͤ�����</h4>
 
1763
<p>GCC 3.2 �� make �Ǥ� rpcgen �� -dM ���ץ�����Ȥ��ޤ���Ǥ�������������rpcgen �� -dM ���ץ����λ��ͤ��ä��Ѥ�äƤϤ��ʤ��褦�Ǥ���</p>
 
1764
 
 
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>
 
1768
<p>��:</p>
 
1769
<p>*1 ��������GCC 3.2 �� Makefile �� -iprefix ���ץ������դ��Ƥ��롣
 
1770
�Ȥ����� -iwithprefix, -iwithprefixbefore �ϻȤ��ʤ��ΤǤ��롣-iprefix ���ץ����ϡ����θ�ˤ��Σ��ĤΥ��ץ����Τɤ��餫�����äƽ��ư�̣����ĤΤǤ��뤬��</p>
 
1771
 
 
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>
 
1774
 
 
1775
<h4>3.9.6.11. Undocumented �ʴĶ��ѿ�</h4>
 
1776
<p>GCC 2 �Ǥϥɥ�����Ȥ˵��ܤΤʤ��ä� <tt>SUNPRO_DEPENDENCIES</tt> �Ȥ����Ķ��ѿ��ˤĤ��Ƥϡ�GCC 3 �Ǥϥɥ�����Ȥ˵��ܤ����褦�ˤʤ�ޤ����ʤ��������ʤ�����ʤ�Τ�ɬ�פʤΤ��Ϥ狼��ʤ��ˡ�</p>
 
1777
 
 
1778
<h4>3.9.6.12. ����¾������</h4>
 
1779
<p>GCC 3 �Ǥϼ��Τ褦�� #pragma ����������Ƥ��ޤ���</p>
 
1780
<pre>
 
1781
#pragma GCC poison
 
1782
#pragma GCC dependency
 
1783
#pragma GCC system_header
 
1784
</pre>
 
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>
 
1790
 
 
1791
<h3><a name="3.9.7" href="#toc.3.9.7">3.9.7. GCC 3, 4 �� <b>mcpp</b> ��Ȥ��ˤ�</a></h3>
 
1792
<p>�ʾ�˸��Ƥ����褦�ˡ�
 
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>
 
1798
<pre>
 
1799
#!/bin/sh
 
1800
/usr/local/gcc-3.2/bin/gcc_proper -no-integrated-cpp "$@"
 
1801
</pre>
 
1802
<pre>
 
1803
#!/bin/sh
 
1804
/usr/local/gcc-3.2/bin/g++_proper -no-integrated-cpp "$@"
 
1805
</pre>
 
1806
<p>�����ơ����Υǥ��쥯�ȥ�Ǽ��Τ褦�ˤ��ޤ���</p>
 
1807
<pre>
 
1808
chmod a+x gcc.sh g++.sh
 
1809
mv gcc gcc_proper
 
1810
mv g++ g++_proper
 
1811
ln -sf gcc.sh gcc
 
1812
ln -sf g++.sh g++
 
1813
</pre>
 
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>
 
1819
<p>��:</p>
 
1820
<p>*1 configure ���� <b>mcpp</b> �򥤥󥹥ȡ��뤷�����ϡ�
 
1821
����餬��ưŪ�����ꤵ��롣</p>
 
1822
 
 
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>
 
1826
<ol>
 
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>
 
1830
</ol>
 
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>
 
1836
<ol>
 
1837
<li>�ץ�ץ������κǽ�Υե������ǡ�multi-byte character �� UTF-8 ���Ѵ����롣<br>
 
1838
<li>�����Ѵ��ˤ� libiconv �δؿ���Ȥ����������äơ�iconv ���б����Ƥ��� encoding �Ϥ��٤ƻȤ��롣<br>
 
1839
<li>�������ե������ encoding ����ꤹ��ˤ� -finput-charset=&lt;encoding&gt; ���ץ�����Ȥ����ʼºݤˤϡ��������ꤷ�ʤ���� UTF-8 �ˤ��Ѵ�����ʤ��ˡ�<br>
 
1840
<li>����ѥ����� encoding �ϥǥե���ȤǤ� UTF-8 �Ǥ��뤬��-fexec-charset=&lt;encoding&gt; ���ץ�����¾�� encoding ����ꤹ�뤳�Ȥ��Ǥ��롣<br>
 
1841
</ol>
 
1842
<p>�ֹ�ݲ��פȸ����� Unicode ���б������뤳�Ȥȹͤ�����Ĭ�������Ȥ˼ºݤ� multi-byte character ��Ȥ�ʤ������ο͡��δ֤ˤ���ޤ�����������Ĭ�� GCC �ˤ�ڤ�Ǥ��ޤä��褦�Ǥ���</p>
 
1843
<p>�����⡢���ͤ��ޤ���ʬ�˼�������Ƥ��ޤ��󡣼ºݤ˻ȤäƤߤ�ȡ����Τ褦�ˤʤ�ޤ���</p>
 
1844
<ol>
 
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>
 
1850
</ol>
 
1851
<p><b>mcpp</b> �� -e &lt;encoding&gt; ���ץ����� encoding ����ꤷ�ޤ�����GCC-specific-build �Ǥϡ�BIG5, shift-JIS, ISO2022-JP �Ǥ� &lt;backslash&gt; ���Ȱ��פ����ͤΥХ��Ȥ�ľ���� &lt;backslash&gt; ���������ƥ���ѥ���η�٤��䤤�ޤ�����������UTF-8 �ˤ��Ѵ����������� encoding �Τޤ޽��Ϥ��ޤ���-finput-charset ���ץ����� -e ���ץ�����Ʊ����ΤȤ��ư����ޤ�������ϼ��Τ褦����ͳ�Ǥ���*4, *5</p>
 
1852
<ol>
 
1853
<li>Big5, SJIS, ISO2022-JP �� UTF-8 ���Ѵ����Ƥ��ޤ��� cc1 ������ encoding ���������᤻�ʤ���GCC V.4.1 �Ǥ����Ǥ��롣���������ɤΥС������� GCC �Ǥ⡢�Ѵ������� &lt;backslash&gt; ����äƤ��Ȥ��Τޤ��̤ꡢ�����̤�η�̤ˤʤ롣���ʤ����single byte character sequence �Ǥ��뤫�Τ褦�˰����롣<br>
 
1854
<li>GCC 4.0 �ޤǤΥС������ǤϤɤ� encoding �� UTF-8 ���鸵�� encoding ���᤻�ʤ���<br>
 
1855
<li>GCC �ζᤤ����λ����ѹ�����Ԥ�������<br>
 
1856
</ol>
 
1857
<p>��:<p>
 
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 �ξ��� &lt;backslash&gt; ���䤦���Ȥ���Ƥ�����GCC ��ư��԰���ʤΤǤ褦���򸫤Ƥ����ΤǤ��롣��������V.4.1 �ˤʤäƤ�ޤȤ��ư�����֤ˤʤäƤ��ʤ��Τǡ�<b>mcpp</b> V.2.6 �Ǥ� V.2.4 �ޤǤλ��ͤ��ᤷ�������ʤ����GCC V.3.4 �ʹߤˤĤ��Ƥ� V.3.3 �ޤǤ�Ʊ���褦�˰�����</p>
 
1864
 
 
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>
 
1867
 
 
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>
 
1873
 
 
1874
<h4>3.9.8.2. #include_next �δ�̯�ʽ���</h4>
 
1875
<p>GCC �Ǥ� include directory ���̾�ϼ��Τ褦�ˤʤ�ޤ���</p>
 
1876
<pre>
 
1877
/usr/local/include
 
1878
/usr/lib/gcc-lib/SYSTEM/VERSION/include
 
1879
/usr/include
 
1880
</pre>
 
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>
 
1883
<pre>
 
1884
/usr/include/c++/VERSION
 
1885
/usr/include/c++/VERSION/SYSTEM
 
1886
/usr/include/c++/VERSION/backward
 
1887
</pre>
 
1888
<p>�����Υǥ��쥯�ȥ��̾���� GCC ��ͭ�Τ�Τ˸����ޤ�����C++ ��ɸ��ǥ��쥯�ȥ�Ϥۤ���¸�ߤ��ʤ��Τǡ�¾�ν����Ϥ� <samp>/usr/include/c++/VERSION</samp> ��Ȥ���������ޤ���GCC V.2.95 �Ǥ� C++ �� include directory �ϼ��Τ�ΤǤ�����</p>
 
1889
<pre>
 
1890
/usr/include/g++-3
 
1891
</pre>
 
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>
 
1894
<pre>
 
1895
#include &lt;limits.h&gt;
 
1896
</pre>
 
1897
<p>���ιԤ������ GCC �� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> �� include ���ޤ�������ȡ����Υե��������Ƭ��</p>
 
1898
<pre>
 
1899
#ifndef _GCC_LIMITS_H_
 
1900
#define _GCC_LIMITS_H_
 
1901
#ifndef _LIBC_LIMITS_H_
 
1902
#include "syslimits.h"
 
1903
#endif
 
1904
</pre>
 
1905
<p>�ȤʤäƤ���Τǡ�<samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/syslimits.h</samp> �� include ����ޤ������Υե�����ϼ��Τ褦��û����ΤǤ���</p>
 
1906
<pre>
 
1907
#define _GCC_NEXT_LIMITS_H
 
1908
#include_next &lt;limits.h&gt;
 
1909
#undef _GCC_NEXT_LIMITS_H
 
1910
</pre>
 
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>
 
1915
<pre>
 
1916
#ifndef _GCC_LIMITS_H_
 
1917
</pre>
 
1918
<p>�ʲ��Υ֥��å��ϥ����åפ��졢���Υ֥��å���ɾ������ޤ���</p>
 
1919
<pre>
 
1920
#else
 
1921
#ifdef _GCC_NEXT_LIMITS_H
 
1922
#include_next &lt;limits.h&gt;
 
1923
#endif
 
1924
#endif
 
1925
</pre>
 
1926
<p>�ޤ����Ƥ� 
 
1927
<samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/syslimits.h</samp> �ˤ��ä��ΤȤޤä���Ʊ�� #include_next &lt;limits.h&gt; �Ȥ����ԤǤ����ޤ� <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> �Ǥ� &lt;features.h&gt; ���� include ����ޤ����ޤ������ιԤǻϤޤ�֥��å�������ޤ���</p>
 
1929
<pre>
 
1930
#if !defined __GNUC__ || __GNUC__ &lt; 2
 
1931
</pre>
 
1932
<p>���Υ֥��å��Ǥ� &lt;bits/wordsize.h&gt; �� include ������ǡ�wordsize �� 32 �ӥåȤǤ��뤫 64 �ӥåȤǤ��뤫�˱����Ƶ��ʤ��׵ᤵ��Ƥ���Ƽ�������������褦�ˤʤäƤ��ޤ������Ȥ��� 32 �ӥåȤǤ���� <tt>LONG_MAX</tt> �ϼ��Τ褦���������ޤ���</p>
 
1933
<pre>
 
1934
#define LONG_MAX     2147483647L
 
1935
</pre>
 
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>
 
1937
<pre>
 
1938
#undef LONG_MAX
 
1939
#define LONG_MAX __LONG_MAX__
 
1940
</pre>
 
1941
<p>����Ǥ��Υե�����⽪���ޤ���</p>
 
1942
<pre>
 
1943
#include &lt;limits.h&gt;
 
1944
</pre>
 
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>
 
1948
<pre>
 
1949
#include_next &lt;limits.h&gt;
 
1950
</pre>
 
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>
 
1952
<pre>
 
1953
#include_next &lt;limits.h&gt;
 
1954
</pre>
 
1955
<p>�� <samp>/usr/include/limits.h</samp> �� include ����ޤ���</p>
 
1956
<pre>
 
1957
#include &lt;limits.h&gt;
 
1958
</pre>
 
1959
<p>�Ǥ� 
 
1960
<samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> ������ include ����뤳�Ȥˤʤ�ޤ������Υե�����򣲲� include ���Ƥ��̤��Ѥ�ޤ��󤬡�����Ǥ��ꡢ�������ͤ�ư���äƤ��ꡢư���Ӥ��Ƥ��ޤ��󡣤��Υե�����μ��Υ֥��å�������ϥ������ʬ�Ǥ���</p>
 
1961
<pre>
 
1962
#else
 
1963
#ifdef _GCC_NEXT_LIMITS_H
 
1964
#include_next &lt;limits.h&gt;
 
1965
#endif
 
1966
</pre>
 
1967
 
 
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>
 
1970
<pre>
 
1971
#include &lt;limits.h&gt;
 
1972
</pre>
 
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>
 
1974
<pre>
 
1975
#include_next &lt;limits.h&gt;
 
1976
</pre>
 
1977
<p>�ǥ��顼�ˤʤ�ޤ���</p>
 
1978
<p>�Ǥϡ��ץ�ץ����å��� #include_next 
 
1979
�����������ɤ��ʤ�Ǥ��礦���� #include_next �������̤�˼�������Ƥ���С������� <samp>/usr/include/limits.h</samp> �� include ����ޤ��������ơ��嵭��</p>
 
1980
<pre>
 
1981
#if !defined __GNUC__ || __GNUC__ &lt; 2
 
1982
</pre>
 
1983
<p>�ʲ��Υ֥��å����������졢<tt>LONG_MAX</tt> �����Τ褦��������졢����¾�Υޥ�����Ŭ�ڤ�������������ޤ���</p>
 
1984
<pre>
 
1985
#define LONG_MAX     2147483647L
 
1986
</pre>
 
1987
<p>�����ơ�include ���� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/syslimits.h</samp> ����ꡢ���Υե����뤬����ä� <samp>/usr/lib/gcc-lib/SYSTEM/VERSION/limits.h</samp> �����ޤ�������ȡ�����</p>
 
1988
<pre>
 
1989
#undef LONG_MAX
 
1990
#define LONG_MAX __LONG_MAX__
 
1991
</pre>
 
1992
<p>����Ǥ��ä���������������줿�ޥ����Ϥ��٤Ƥ��˻��ˤ���� <samp>__LONG_MAX__</samp> ���Ȥ���̤�����̾���ˤʤäƤ��ޤ��ΤǤ���</p>
 
1993
<p>GCC V.3.2 �ޤǤʤ顢����Ǥ�ޤ�</p>
 
1994
<pre>
 
1995
#define __LONG_MAX__ 2147483647L
 
1996
</pre>
 
1997
<p>�Ȥ����Ԥ����ä��Τǡ�
 
1998
���˻��ˤ���Ƥ�⤦���١������������ľ����ޤ���������ϥ���ʽ����Ǥ�������̤��������ΤǻȤ����Ȥ��Ǥ��ޤ�������������V.3.3 �ʹߤΥإå��ե�����ǤϤ��٤Ƥ���ϫ�˽����ޤ���</p>
 
1999
 
 
2000
<h4>3.9.8.4. ���̤��к�</h4>
 
2001
<p>�ʾ��ޤȤ��ȡ�����ϼ������ˤ���ޤ���*1, *2, *3</p>
 
2002
<ol>
 
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 �� &lt;limits.h&gt; ���������ޥ�������¾弫���ǻ����������ΤǤϡ���䤳�����إå��ե�����ν����򤹤��̣���ʤ���<samp>/usr/lib/gcc-lib/SYSTEM/VERSION/include/limits.h</samp> �Ǥ��٤Ƥ� #undef ����ΤǤϤʤ��������Ǥ��롣���ʤ��Ȥ� Linux �� CygWIN �Ǥ� limits.h �򣲤Ĥ�ʬ����ɬ�פϤʤ��Ϥ��Ǥ��롣���Υǥ��쥯�ȥ�Υإå��ե������ GCC �򥤥󥹥ȡ��뤹����˼�ư����������ΤʤΤǡ��������٤ξ�Ĺ���Ϥ��򤨤ʤ��Ǥ�������������ˤ��Ƥ�⤦�����������Ƥ�餤������ΤǤ��롣<br>
 
2008
</ol>
 
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>
 
2011
<ol>
 
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>
 
2017
</ol>
 
2018
<p>GCC �����Ǥ� <b>mcpp</b> �Ǥ� GCC ��ͭ�� include directory ���Ȥ߹��ߡ�#include_next ������̤�˼��������ߴ��Τ���λ�������ޥ������������Τǡ����̤������ɬ�פ���ޤ���</p>
 
2019
<p>��:</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>
 
2026
<pre>
 
2027
/* float.h  */
 
2028
 
 
2029
#ifndef _FLOAT_H___
 
2030
#define _FLOAT_H___
 
2031
 
 
2032
#define FLT_ROUNDS      1
 
2033
#define FLT_RADIX       2
 
2034
 
 
2035
#define FLT_MANT_DIG    24
 
2036
#define DBL_MANT_DIG    53
 
2037
#define LDBL_MANT_DIG   64
 
2038
 
 
2039
#define FLT_DIG         6
 
2040
#define DBL_DIG         15
 
2041
#define LDBL_DIG        18
 
2042
 
 
2043
#define FLT_MIN_EXP     (-125)
 
2044
#define DBL_MIN_EXP     (-1021)
 
2045
#define LDBL_MIN_EXP    (-16381)
 
2046
 
 
2047
#define FLT_MIN_10_EXP  (-37)
 
2048
#define DBL_MIN_10_EXP  (-307)
 
2049
#define LDBL_MIN_10_EXP (-4931)
 
2050
 
 
2051
#define FLT_MAX_EXP     128
 
2052
#define DBL_MAX_EXP     1024
 
2053
#define LDBL_MAX_EXP    16384
 
2054
 
 
2055
#define FLT_MAX_10_EXP  38
 
2056
#define DBL_MAX_10_EXP  308
 
2057
#define LDBL_MAX_10_EXP 4932
 
2058
 
 
2059
#define FLT_MAX         3.40282347e+38F
 
2060
#define DBL_MAX         1.7976931348623157e+308
 
2061
#define LDBL_MAX        1.18973149535723176502e+4932L
 
2062
 
 
2063
#define FLT_EPSILON     1.19209290e-7F
 
2064
#define DBL_EPSILON     2.2204460492503131e-16
 
2065
#define LDBL_EPSILON    1.08420217248550443401e-19L
 
2066
 
 
2067
#define FLT_MIN         1.17549435e-38F
 
2068
#define DBL_MIN         2.2250738585072014e-308
 
2069
#define LDBL_MIN        3.36210314311209350626e-4932L
 
2070
 
 
2071
#if defined (__STDC_VERSION__) &amp;&amp; __STDC_VERSION__ &gt;= 199901L
 
2072
#define FLT_EVAL_METHOD 2
 
2073
#define DECIMAL_DIG     21
 
2074
#endif /* C99 */
 
2075
 
 
2076
#endif /* _FLOAT_H___ */
 
2077
</pre>
 
2078
<br>
 
2079
 
 
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>
 
2082
<ol>
 
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 �򻲾ȡˡ�
 
2086
<br>
 
2087
</ol>
 
2088
<p>Linux �� glibc �Υ����ƥ�إå��ˤ� GCC local 
 
2089
�ʻ��ͤ����Ф��лȤ��Ƥ��ޤ�����Visual C++ �Υ����ƥ�إå��ˤ� Visual C++ local �ʽ����Ϥ��ޤ긫���ޤ���</p>
 
2090
 
 
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>
 
2093
<pre>
 
2094
#define _VARIANT_BOOL   /##/
 
2095
</pre>
 
2096
<p>�����ơ�<samp>Vc7/PlatformSDK/Include/</samp> �� <samp>oaidl.h, propidl.h</samp> �Ǽ��Τ褦�˻Ȥ��Ƥ��ޤ���</p>
 
2097
<pre>
 
2098
_VARIANT_BOOL bool;
 
2099
</pre>
 
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>
 
2105
<pre>
 
2106
#if !__STDC__ &amp;&amp; (_MSC_VER &lt;= 1000)
 
2107
    _VARIANT_BOOL bool;
 
2108
#endif
 
2109
</pre>
 
2110
<p>Visual C 5.0 �ʹߤΥС�����󤷤��Ȥ�ʤ��ΤǤ���С����ιԤϼ��Τ褦�������˥����ȥ����Ȥ��Ƥ��ޤ��ޤ���</p>
 
2111
<pre>
 
2112
// _VARIANT_BOOL bool;
 
2113
</pre>
 
2114
<p>���Υޥ����������Ǥ���������ʾ������ʤΤϡ�����򥳥��ȤȤ��ƽ������Ƥ��ޤ� Visual C / cl.exe �Υץ�ץ������μ����Ǥ���������ˤϡ����Υץ�ץ����å��μ��Τ褦�ʿ�������꤬Ϫ�褷�Ƥ��ޤ���</p>
 
2115
<ol>
 
2116
<li>���ʤ��Ȥ⤳����Ǥ� Token-base �ǤϤʤ�ʸ���١����Υץ�ץ�����������Ƥ��롣<br>
 
2117
<li>�ޥ�����Ÿ����̤������ȤȤ��ư����Ƥ��ꡢtranslation phases �����𤷤Ƥ��롣<br>
 
2118
</ol>
 
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>
 
2122
<p>��:</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>
 
2125
<br>
 
2126
 
 
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>
 
2129
<br>
 
2130
 
 
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>
 
2133
<br>
 
2134
 
 
2135
<h2><a name="4.2" href="#toc.4.2">4.2. Include directory �Υ������ѥ�</a></h2>
 
2136
<p>#include directive �� include ����ե�����ϼ��ν���ǥ���������ޤ���</p>
 
2137
<ol>
 
2138
<li>#include �ǥ��쥯�ƥ��֤ΰ����� "file-name" �ޤ��� &lt;file-name&gt; �η��Ǥʤ���硢���줬�ޥ����Ǥ���Ф����Ÿ�����롣���η�̤� "file-name", &lt;file-name&gt; �Τɤ��餫�η��Ǥʤ���Фʤ�ʤ��������Ǥʤ����ϥ��顼�Ȥʤ롣<br>
 
2139
<br>
 
2140
<li>"file-name" �η��Ǥ� &lt;file-name&gt; �η��Ǥ� file-name ���ե�ѥ��ꥹ�ȤǤ���С����Τޤޥ����ץ󤹤롣�����ץ�Ǥ��ʤ���Х��顼�Ȥ��롣<br>
 
2141
<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�Ǥ��롣�����ȯ���Ǥ��ʤ���С�&lt;file-name&gt; �η���Ʊ�ͤΥ������򤹤롣Compiler-independent �ǤǤ� 3.2 �Ǥ��롣<br>
 
2143
<br>
 
2144
3.1. �����ȥǥ��쥯�ȥ�ʤ������ <b>mcpp</b> ��ư���Ρˡ�#include ���ͥ��Ȥ���Ƥ��Ƥ⡢��˥����ȥǥ��쥯�ȥ����Ȥ��롣<br>
 
2145
3.2. �������ե�����ʥ��󥯥롼�ɸ��ˤΤ���ǥ��쥯�ȥꡣ#include ���ͥ��Ȥ���Ƥ����硢�إå��ե����뤬�̥ǥ��쥯�ȥ�ˤ���ȡ����Τ��Ӥ˴�ब����Ƥ椯��<br>
 
2146
<br>
 
2147
<li>�ե�ѥ��ꥹ�ȤǤʤ��� &lt;file-name&gt; �η��Ǥ���С����Υǥ��쥯�ȥ�򥵡������롣�����Υǥ��쥯�ȥꤽ�Τ�Τ����Хѥ��ǻ��ꤵ��Ƥ�����ϡ������ȥǥ��쥯�ȥ꤫������Хѥ��Ȳ�᤹�롣�������ˤ��٤ƥ��������Ƥ�ե�����򥪡��ץ�Ǥ��ʤ���Х��顼�Ȥ��롣<br>
 
2148
<br>
 
2149
4.1. <b>mcpp</b> ��ư���� -I &lt;directory&gt; ���ץ����ǻ��ꤵ�줿�ǥ��쥯�ȥꡣʣ������л��ꤵ�줿��ˡʺ�����˥��������롣<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>
 
2156
</ol>
 
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>
 
2159
<br>
 
2160
 
 
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>
 
2163
<ol>
 
2164
<li>���������ʸ�����ƥ��η����ǽ񤫤�Ƥ���С�����򤽤Τޤ� header-name �Ȥ��롣��������˥ޥ����ǽ񤫤�Ƥ��ơ������Ÿ��������̤�ʸ�����ƥ��ˤʤä����⡢Ʊ�ͤǤ��롣ʸ�����ƥ��η����� header-name �Ǥϡ�ñ�ˤ���ξü�� " ��Ȥä���Τ�ե�����̾�Ȥ��롣<br>
 
2165
<li>��������� &lt;filename&gt; �η��ǽ񤫤�Ƥ���С�����򤽤Τޤ� header-name �Ȥ��롣��������˥ޥ����ǽ񤫤�Ƥ��ơ������Ÿ��������̤� &lt;filename&gt; �η��ˤʤä����⡢Ʊ�ͤǤ��롣�ޥ������ space ��ʣ���� spaces �򣱸Ĥ� space �˰��̤��������¸����롣ñ��ξü�� &lt;, &gt; ��Ȥä���Τ�ե�����̾�Ȥ��롣<br>
 
2166
<li>�ɤξ��Ǥ⡢Windows �Ǥ� path-delimiter �Ȥ��� \ �� / ��Ȥ��뤬��\ �� / ���Ѵ����롣<br>
 
2167
<li>Windows �Ǥϥե�����̾�������ʸ���Ϥ��٤ƾ�ʸ�����Ѵ����롣<br>
 
2168
</ol>
 
2169
<br>
 
2170
 
 
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>
 
2179
<ol>
 
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>
 
2186
</ol>
 
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>
 
2194
<p>��:</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>
 
2197
<br>
 
2198
 
 
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 �� ((���Х����ܤ��� &lt;&lt; 8) + ���Х����ܤ���) ��ɾ�����ޤ���8 �� &lt;limits.h&gt; �� <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 �� &lt;limits.h&gt; �� <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>
 
2211
<br>
 
2212
 
 
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>
 
2217
<br>
 
2218
 
 
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 �Ԥ� &lt;vertical-tab&gt; �ޤ��� &lt;form-feed&gt; ������������Ǥ������ξ��� Standard C �Ǥ� undefined �Ǥ���<b>mcpp</b> �ǤϤ����� space ���Ѵ����ޤ���</p>
 
2223
<br>
 
2224
 
 
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>
 
2230
<blockquote>
 
2231
<table>
 
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 &amp; 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>
 
2240
</table>
 
2241
</blockquote>
 
2242
<p>������⤽���ν����ϼ��Ȥǥ���ѥ��뤵��ޤ���
 
2243
</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>
 
2253
<blockquote>
 
2254
<table>
 
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>
 
2265
</table>
 
2266
</blockquote>
 
2267
<p>���Υޥ����� OS �ˤ�äưۤʤä�����ˤ��Ƥ��ޤ���build type �ˤϴط����ޤ���</p>
 
2268
<p><i>MBCHAR</i>  �ʥǥե���Ȥ� multi-byte character encoding��</p>
 
2269
<blockquote>
 
2270
<table>
 
2271
  <tr><th>FreeBSD, Linux      </th><td>EUC_JP</td></tr>
 
2272
  <tr><th>Win32, CygWIN, MinGW</th><td>SJIS</td></tr>
 
2273
</table>
 
2274
</blockquote>
 
2275
<p>���Υޥ����Ͻ����Ϥˤ�äưۤʤä�����ˤ��Ƥ��ޤ���
 
2276
</p>
 
2277
<p><i>STDC_VERSION</i>    ��<tt>__STDC_VERSION__</tt> �ν���͡�</p>
 
2278
<blockquote>
 
2279
<table>
 
2280
  <tr><th>Compiler-independent, GCC 2</th><td>199409L</td></tr>
 
2281
  <tr><th>����¾            </th><td>0L</td></tr>
 
2282
</table>
 
2283
</blockquote>
 
2284
<p><i>HAVE_DIGRAPHS</i>   ��digraphs �򤽤Τޤ޽��Ϥ��뤫��</p>
 
2285
<blockquote>
 
2286
<table>
 
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>
 
2289
</table>
 
2290
</blockquote>
 
2291
<p><i>EXPAND_PRAGMA</i>   ��C99 �� #pragma �Ԥΰ�����ޥ���Ÿ�����뤫��</p>
 
2292
<blockquote>
 
2293
<table>
 
2294
  <tr><th>Visual C</th><td><i>TRUE</i></td></tr>
 
2295
  <tr><th>����¾  </th><td><i>FALSE</i></td></tr>
 
2296
</table>
 
2297
</blockquote>
 
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>
 
2305
<blockquote>
 
2306
<table>
 
2307
  <tr><th>FreeBSD, Linux, CygWIN</th><td>/usr/include, /usr/local/include</td></tr>
 
2308
</table>
 
2309
</blockquote>
 
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>
 
2321
<pre>
 
2322
[-2147483647-1, 2147483647] ([-0x7fffffff-1, 0x7fffffff])
 
2323
</pre>
 
2324
<p>�Ǥ���unsigned long 
 
2325
�Ϥ������</p>
 
2326
<pre>
 
2327
[0, 4294967295] ([0, 0xffffffff])
 
2328
</pre>
 
2329
<p>���ϰϤǤ���
 
2330
</p>
 
2331
<p>long long ����Ľ����ϤǤϤ������ long long 
 
2332
���ϰϤ�</p>
 
2333
<pre>
 
2334
[-9223372036854775807-1, 9223372036854775807]
 
2335
([-0x7fffffffffffffff-1, 0x7fffffffffffffff])
 
2336
</pre>
 
2337
<p>�ǡ�unsigned long long 
 
2338
���ϰϤ�</p>
 
2339
<pre>
 
2340
[0, 18446744073709551615] ([0, 0xffffffffffffffff])
 
2341
</pre>
 
2342
<p>�Ǥ���
 
2343
</p>
 
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>
 
2352
<p>��:</p>
 
2353
<p>*1 ����� &lt;backslash&gt;&lt;newline&gt; �ˤ�����³�򤷤���ι�Ĺ�ˤ⡢
 
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>
 
2356
<br>
 
2357
 
 
2358
<h1><a name="5" href="#toc.5">5. ���ǥ�å�����</a></h1>
 
2359
 
 
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>
 
2363
<ol>
 
2364
<li>"filename:line: " �� "fatal error: ", "error: ", "warning: " �Τɤ줫��³��������� 5.3 - 5.9 �Υ�å������Τ����Τɤ줫��³����"filename:line: " �˻Ϥޤ룱�Ԥο��ǥ�å������Ȥ����ΤϤ�����������ʻ��ͤǤ��뤬��UNIX ��Σý����ϤǤ�����Ū�ʿ��Ƿ����ǡ��Ƽ�Υġ��뤬���������Ȥ��Ƥ���ΤǺ��Ѥ��Ƥ��롣���̾�Σ��Ԥˤ����ޤ�ʤ����Ȥ����Ф��Ф��롣<br>
 
2365
<li>�ޥ���Ÿ����Ǥ���С����Υޥ����ƤӽФ���ɽ������롣�ͥ��Ȥ��줿�ޥ����ƤӽФ��Ǥ���С����줾��Υޥ���̾��ɽ������롣���Υޥ��������ɽ�����졢���Υޥ�������Τ��륽�����ե�����̾�ȹ��ֹ��ɽ������롣<br>
 
2366
<li>�������ե�����̾�ȹ��ֹ�Ȥ��ιԤ�ɽ������롣�ե����뤬 include ���줿��ΤǤ���С�include ���Υե������̾���ȹ��ֹ�ȹԤ��缡ɽ������롣<br>
 
2367
</ol>
 
2368
<p>ɽ�������Ԥ��̾�ϡ��������Ρ�ʪ���ԡפ������� \ �ˤ�ä���³���줿���ȤΡ������ԡפ��餵��˥����Ȥ� a space ���Ѵ�������Τ�ΤǤ��ꡢ�����Ȥ��Ԥ�ޤ����Ǥ������ʣ���������Ԥ�Ϣ�뤵�줿��ΤȤʤ롣���ֹ��Ϣ�뤵�줿�Ǹ��ʪ���Ԥ��ֹ�Ǥ��롣�������������Ƚ����������� translation phase �ǤΥ��顼���Ǥϡ����� phase �ιԤ�ɽ������롣</p>
 
2369
<p>��������-j ���ץ�������ꤷ�����ϡ��嵭�Σ��ȣ��Ͻ��Ϥ��ޤ���</p>
 
2370
<p>���ǥ�å������ˤϼ��Σ��ĤΥ�٥뤬����ޤ���</p>
 
2371
<blockquote>
 
2372
<table>
 
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>
 
2376
</table>
 
2377
</blockquote>
 
2378
<p>Warning 
 
2379
�ˤϤ���˼��Σ��ĤΥ��饹������ޤ���Class 1, 2 �ʳ��Ϥ���ü�ʤ�ΤǤ���</p>
 
2380
<blockquote>
 
2381
<table>
 
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>
 
2387
</table>
 
2388
</blockquote>
 
2389
<p><b>mcpp</b> �Ϥ�����¿��ο��ǥ�å��������Ѱդ��Ƥ��ޤ���<i>STD</i> �⡼�ɤǤϼ��Τ褦�ʼ���ˤΤܤäƤ��ޤ���</p>
 
2390
<blockquote>
 
2391
<table>
 
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>
 
2399
</table>
 
2400
</blockquote>
 
2401
<p>�����ˤĤ��ơ���§�Ȥ��Ƥ��ιԤ�����������ʬ�����Ū�˻�Ŧ���ޤ���</p>
 
2402
<p>�ʤ����ʲ��������Ǥϡ����ǥ�å������ǰ��Ѥ���륽������Υȡ��������ͤ���ʬ�ˤ���Ȥ��Ʋ����Υȡ������Ϥᤳ��Ǥ��ޤ������Τ��������ͤΤ����˥ޥ���̾��񤤤Ƥ���Ȥ����ϡ��ºݤˤϤ��Υޥ�����Ÿ�������ͤ�ɽ������ޤ���<br>
 
2403
�ޤ������ˤ�äƥ��顼�Ȥ��ƽФ��ꥦ�����˥󥰤Ȥ��ƽФ��ꤹ���å������⤢��ޤ����ʲ��������Ǥ�Ʊ��Υ�å������ˤĤ��ƤϺǽ�˵��ܤ���Ȥ����Ǥ��������ä������Ȥ�ñ�˥�å��������¤٤�����ˤ��ޤ���</p>
 
2404
<p>�ʤ������ǥ�å������˽ФƤ��� path-list ��ե�����̾�� Windows �Ǥ��������Τ���ˤ��٤ƾ�ʸ�����Ѵ����Ƥ��ޤ���</p>
 
2405
<br>
 
2406
 
 
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>
 
2409
<br>
 
2410
 
 
2411
<h2><a name="5.3" href="#toc.5.3">5.3. Fatal error</a></h2>
 
2412
<p>I/O ���顼�������­�����ץ�ץ������򤽤�ʾ�³���뤳�Ȥ��Ǥ��ʤ���硢�Хåե������С��ե��������ץ�ץ�������³���Ƥ��̣���ʤ����ˡ����Υ��顼��å��������Фơ��ץ�ץ���������ߤ��ޤ����ƥץ������ˤϡּ��ԡפξ����ͤ��֤��ޤ���</p>
 
2413
<br>
 
2414
 
 
2415
<h3><a name="5.3.1" href="#toc.5.3.1">5.3.1. <b>mcpp</b> ���ȤΥХ�</a></h3>
 
2416
<ul>
 
2417
<li><samp>Bug:</samp><br>
 
2418
���Υ�å������Ͽ��濫��ޤ������������ <b>mcpp</b> ���ȤΥХ����̣���ޤ������줬�Ф뤳�ȤϤʤ��Ȼפ��ޤ������⤷�Ф��餼�Ҥ��ξ�����Ϣ������������<br>
 
2419
</ul>
 
2420
 
 
2421
<h3><a name="5.3.2" href="#toc.5.3.2">5.3.2. ʪ��Ū���顼</a></h3>
 
2422
<ul>
 
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>
 
2429
</ul>
 
2430
 
 
2431
<h3><a name="5.3.3" href="#toc.5.3.3">5.3.3. Translation limits �������Хåե��Υ��顼</a></h3>
 
2432
<ul>
 
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>
 
2443
</ul>
 
2444
<p>���Σ��ĤΥ��顼�ϥȡ����󤬤��ۤ�Ĺ���ʤ��Ƥ⡢�ޥ���Ÿ����ˤ��Υȡ�����ΤȤ����ǥХåե������С��ե����ˤʤä����ˤⵯ����ޤ������ξ��ϥޥ����ƤӽФ���ʬ�䤷�Ƥ���������</p>
 
2445
<ul>
 
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>
 
2453
token 
 
2454
�򥹥���󤷤Ƥ��뤦���˥Хåե������С��ե����Ȥʤ�ޤ�����ʸ�����ƥ�롢ʸ�������header-name��pp-number �ʳ��Υȡ�����Ǥϡ�������Υ�å��������Фޤ���<br>
 
2455
<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>
 
2465
</ul>
 
2466
 
 
2467
<h3><a name="5.3.4" href="#toc.5.3.4">5.3.4. #pragma MCPP preprocessed �˴ؤ��륨�顼</a></h3>
 
2468
<ul>
 
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>
 
2473
<br>
 
2474
</ul>
 
2475
 
 
2476
<h2><a name="5.4" href="#toc.5.4">5.4. Error</a></h2>
 
2477
<p>ʸˡŪ�ʴְ㤤��������ˤ��Υ��顼��å��������Фޤ���<br>
 
2478
Standard 
 
2479
C �Ǥϡ�violation of syntax rule or constraint �����ä����Ͻ����Ϥϲ��餫�ο��ǥ�å�������Ф��ʤ���Фʤ�ʤ����ȤˤʤäƤ��ޤ�����Standard �⡼�ɤǤϤ��� violation ���Ф��Ƥϸ�§�Ȥ��ƥ��顼��å��������Фޤ��������ϥ������˥󥰤Ǥ���</p>
 
2480
<p>�ޤ���Standard C �� undefined �Ȥ���Ƥ����Τ�¿���ˤĤ��Ƥ� error ��å������ޤ��� warning ���Фޤ���Undefined �Ǥ���ʤ��� error �� warning ��Фʤ��Τϡ����Τ�Τ����Ǥ���</p>
 
2481
<ol>
 
2482
<li>ʸ�����ƥ��η��� header name ��� ' �� /*�������ñ�ʤ�ʸ���Ȥ��ư����롣�ºݤˤϤ���ϡ��ե�����򥪡��ץ󤷤褦�Ȥ��ƥ��顼�ˤʤ�Ϥ��Ǥ����&lt;, &gt; �ǰϤޤ줿 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 �� &lt;backslash&gt;&lt;newline&gt; ����������� UCN ���������� sequence ���Ǥ�����硢�����ʸ�����ƥ���Ϣ��ˤ�ä� UCN sequence ���������줿���� undefined �Ǥ��뤬������Ͽ��Ǥ��ʤ��ʤ������ UCN �Ȥ��ư����ˡ�<br>
 
2488
</ol>
 
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>
 
2491
 
 
2492
<h3><a name="5.4.1" href="#toc.5.4.1">5.4.1. ʸ���ȥȡ�����˴ؤ��륨�顼</a></h3>
 
2493
<ul>
 
2494
<li><samp>Illegal control character 0x1b, skipped the character</samp><br>
 
2495
ʸ�����ƥ�롢ʸ�������header name�������Ȱʳ��ΤȤ����� white space �ʳ��Υ���ȥ����륳���ɤ�����ޤ�������ʸ���򥹥��åפ��ƽ�����³���ޤ���<br>
 
2496
</ul>
 
2497
<p>���ϥȡ�����Υ��顼�Ǥ������Σ��ĤϤ�����⤽�ιԤ򥹥��åפ��ƽ�����³���ޤ������Σ��Ĥ�ʸ�����ƥ�����Υȡ�����ǡ������Ԥι����ޤǤ˰����䤬�Ĥ����Ƥ��ʤ����Ȥ򼨤��ޤ���</p>
 
2498
<pre>
 
2499
#error  I can't understand.
 
2500
</pre>
 
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>
 
2503
<ul>
 
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 &lt;header.h</samp><br>
 
2511
header-name �����뤷�Ƥ��ޤ���&lt;, &gt; �ǰϤޤ�� header-name ��� " �ޤ��� ' �����ä����Ϥ��Υ��顼�ǤϤʤ��嵭���ĤΥ��顼�Ȥʤ�ޤ����ޤ���&lt;, &gt; �ǰϤޤ�� 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>
 
2521
</ul>
 
2522
 
 
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>
 
2528
<ul>
 
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>
 
2533
</ul>
 
2534
 
 
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>
 
2538
<ul>
 
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>
 
2545
</ul>
 
2546
<p>���Σ��Ĥ� #asm, #endasm ���б��ط��Υ��顼�Ǥ����������pre-Standard �⡼�ɤ�����ν����Ϥξ������Ǥ���</p>
 
2547
<ul>
 
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>
 
2552
</ul>
 
2553
 
 
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>
 
2558
<ul>
 
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 ���������Ϥ��Υޥ������������Ƥ��ʤ����ʤɤǤ���&lt;, &gt; �ޤ��� ", " �ǰϤޤ줿��Τ� 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>
 
2584
</ul>
 
2585
<p>���Υ��顼�� Standard �⡼�ɤξ������ǡ������Υǥ��쥯�ƥ��֤�̵�뤵��ޤ���<i>OLDPREP</i> �⡼�ɤǤϥ��顼�⥦�����˥󥰤�Ф���<i>KR</i> �⡼�ɤǤϥ������˥󥰤Ȥʤꡢ���� "junk" ���ʤ��ä���ΤȤ��ƥץ�ץ�������³���ޤ���</p>
 
2586
<ul>
 
2587
<li><samp>Excessive token sequence "junk"</samp><br>
 
2588
#else, #endif, #asm, #endasm �ιԤ�;�פʥƥ����� junk ������ޤ���#ifdef, #ifndef, #include, #line, #undef �ιԤ������������θ����;�פʥƥ����� junk ������ޤ��������ϥ����ȤȤ��ƽ񤤤Ƥ���������<br>
 
2589
</ul>
 
2590
 
 
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>
 
2596
<ul>
 
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 "&gt;" in incorrect context</samp><br>
 
2604
#if ����̯�ʰ��֤� &gt; �Ȥ����黻�Ҥ�����ޤ����ޥ��� MACRO �����ĤΥȡ�������������Ƥ�����ˡ�#if MACRO &gt; 0 �ʤɤȤ���ȡ��ޥ���Ÿ���η�� #if &gt; 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 ���� ( ���б����� 
 
2611
) ������ޤ���<br>
 
2612
<li><samp>Misplaced ":", previous operator is "+"</samp><br>
 
2613
? ���б����ʤ� : ������ޤ���
 
2614
<br>
 
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>
 
2624
#if 
 
2625
���˻Ȥ��ʤ��黻�Ҥ�����ޤ���=, ++ ���Ǥ���<br>
 
2626
<li><samp>Not an integer "1.23"</samp><br>
 
2627
#if 
 
2628
�Ԥ�����ˤ�������ʸ�������ޤ�ˤ����Ȥ��ޤ���<br>
 
2629
<li><samp>Can't use the character 0x24</samp><br>
 
2630
#if 
 
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>
 
2632
</ul>
 
2633
<p>���� #if sizeof �˴ؤ��륨�顼�Ǥ����������pre-Standard �ξ������Ǥ���</p>
 
2634
<ul>
 
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>
 
2639
</ul>
 
2640
 
 
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>
 
2645
<ul>
 
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 &amp;&amp; (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>
 
2660
</ul>
 
2661
<p>���� sizeof �˴ؤ��륨�顼�Ǥ��������åפ������ʬ���ǤϽФޤ����-W8 ���ץ����Ǥϥ������˥󥰤��Ф�ˡ�pre-Standard �ξ��Ǥ���</p>
 
2662
<ul>
 
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>
 
2668
</ul>
 
2669
 
 
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 
 
2674
�⡼�ɤΤ�ΤǤ���<br>
 
2675
__VA_ARGS__ �˴ؤ��륨�顼�� Standard �⡼�ɤξ��Ǥ���
 
2676
���Ѱ����ޥ����� C99 �λ��ͤǤ�����GCC, Visual C++ 2005 �Ȥθߴ����Τ���� C90 �Ǥ� C++ �Ǥ�ͭ���Ȥ��Ƥ��ޤ��ʤ��������������˥󥰤��Ф�ˡ�</p>
 
2677
<ul>
 
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
�ޥ�������˥���Υѥ�᡼��������ޤ���
 
2688
<br>
 
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>
 
2709
</ul>
 
2710
 
 
2711
<h3><a name="5.4.8" href="#toc.5.4.8">5.4.8. #undef �Υ��顼</a></h3>
 
2712
<p>���� #undef �˴ؤ��륨�顼�Ǥ���</p>
 
2713
<ul>
 
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>
 
2717
</ul>
 
2718
 
 
2719
<h3><a name="5.4.9" href="#toc.5.4.9">5.4.9. �ޥ���Ÿ���Υ��顼</a></h3>
 
2720
<p>���ϥޥ���Ÿ���˴ؤ��륨�顼�Ǥ��������Υޥ��������ɽ�����졢���Υޥ�������Τ��륽�����ե�����̾�ȹ��ֹ��ɽ������ޤ���#, ## �黻�Ҥ˴ؤ��륨�顼�� Standard �⡼�ɤ����Ǥ���</p>
 
2721
<ul>
 
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>
 
2730
</ul>
 
2731
<p>�ʲ��Υ��顼�Ǥϡ����Υޥ����ƤӽФ��ϥ����åפ���ޤ���</p>
 
2732
<ul>
 
2733
<li><samp>Buffer overflow expanding macro "macro" at "something"</samp><br>
 
2734
�ޥ�����Ÿ����� 
 
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>
 
2742
</ul>
 
2743
 
 
2744
<h3><a name="5.4.10" href="#toc.5.4.10">5.4.10. #error, #assert</a></h3>
 
2745
<ul>
 
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>
 
2750
</ul>
 
2751
 
 
2752
<h3><a name="5.4.11" href="#toc.5.4.11">5.4.11. #include �μ���</a></h3>
 
2753
<ul>
 
2754
<li><samp>Can't open include file "file-name"</samp><br>
 
2755
Include ���٤��ե����뤬¸�ߤ��ʤ����ˤ��Υ��顼��ȯ�����ޤ������֤�ե�����̾�Υ��ڥ�ߥ��� include directory �λ���δְ㤤�Ǥ��礦��<br>
 
2756
</ul>
 
2757
 
 
2758
<h3><a name="5.4.12" href="#toc.5.4.12">5.4.12. ����¾�Υ��顼</a></h3>
 
2759
<ul>
 
2760
<li><samp>Operand of _Pragma() is not a string literal</samp><br>
 
2761
_Pragma() operator �ΰ����ϣ��Ĥ�ʸ�����ƥ��ޤ��ϥ磻��ʸ�����ƥ��Ǥʤ���Фʤ�ޤ���Standard �⡼�ɤ� C99 �����Τ�ΤǤ���<br>
 
2762
C++ �Ǥ� -V199901L ���ץ����ǵ�ư��������Ʊ�ͤǤ���<br>
 
2763
</ul>
 
2764
<br>
 
2765
 
 
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 &lt;n&gt; �Ȥ������ץ�������ꤹ�뤳�Ȥǡ�����餬ͭ���ˤʤ�ޤ���&lt;n&gt; �� 1, 2, 4, 8, 16 �Τ�����Ǥ�դΤ�Τ� OR ��Ȥä���ΤǤ����ʤ����ʲ��������� -W4 ���ȸ��äƤ���Τϡ�-W&lt;n&gt; �� &lt;n&gt; &amp; 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>
 
2771
<ol>
 
2772
<li>#if ����� sub-expression ��ɾ������ˤĤ��Ƥϡ�warning �ϽФ��ʤ���||, &amp;&amp;, ? : �ʳ��α黻�Ҥ˴ؤ��Ƥ� operand ��ɾ������� unspecified �Ǥ��뤬��#if ���������Ѥ������ʤ��Τǡ�����ɾ������Ϸ�̤ˤϱƶ����ʤ�����Ǥ��롣<b>mcpp</b> �Ǥϡ���������ȡ������ɾ���Ͼ�˽и���Ʊ���˺����鱦�˹Ԥ��������δ֤α黻�Ͼ�˱黻�ҤΥ��롼�ԥ󥰤ε�§�˽��äơ����ι���ͤ�ɬ�פˤʤä����˽��ƹԤ���<br>
 
2773
</ol>
 
2774
<p>Standard �⡼�ɤǤϡ�implementation-defined �Ȥ���Ƥ���ư���¿���ˤĤ��Ƥ� warning ��Ф��ޤ���Implementation-defined �Ǥ���ʤ��� warning �νФʤ��Τϡ������������Ǥ���</p>
 
2775
<ol>
 
2776
<li>#include directive �� include ����ե������õ����ꡢ����� #include �ΰ������� header-name �Ȥ��� pp-token ���ۤ�����ˡ����������� warning ��Ф��Ƥ����ΤǤϤ��뤵����header-name �ϥޥ����Ǥʤ���С��������Υȡ����� space ��̵ͭ��ޤ�Ƥ��Τޤ޻Ȥ��롣�ޥ����Ǥ���С������Ÿ��������̤� space ��̵ͭ��ޤ�Ƥ��Τޤ޻Ȥ����<i>POSTSTD</i> �⡼�ɤǤϡ��ޥ���Ÿ���ˤ�ä� pp-token �֤� space ����������뤬�����ξ�� &lt; ���� &gt; �ޤǤ� space �������Ƥ��äĤ�����Τ� header-name �Ȳ�᤹�롣�ɤ���ˤ��Ƥ� <i>POSTSTD</i> �Ǥ� &lt;, &gt; �ˤ�� 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 �Ԥ� &lt;vertical-tab&gt; �ޤ��� &lt;form-feed&gt; ������������Ǥ��롣<b>mcpp</b> �ǤϤ����� space ���Ѵ����뤬�����λ��� warning ��Ф���ʣ���� space, tab �� sequence �� one space ���ۤäư��̤��롣<br>
 
2780
<li>�������ȼ����Ȥ߹��ߥޥ����ˤĤ��Ƥ� warning �ϽФ��ʤ���<br>
 
2781
<li>#pragma 
 
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>
 
2784
</ol>
 
2785
<p>�������äơ�<b>mcpp</b> �Ǥϥץ�ץ������Υ�٥�Ǥ� portability �Υ����å���ܴۤ����˹Ԥ����Ȥ��Ǥ��ޤ���</p>
 
2786
<p><i>POSTSTD</i> �⡼�ɤǤϡ�<a href="#2.1"> 2.1</a> �ˤ�����ͤΰ㤤������� <i>STD</i> �⡼�ɤ�Ʊ�ͤǤ���
 
2787
</p>
 
2788
<p>�������˥󥰤������ĽФƤ⡢�������פξ����ͤ��֤��ޤ���-W0 
 
2789
�Υ��ץ����ǵ�ư����ȡ��������˥󥰤ϽФޤ���</p>
 
2790
 
 
2791
<h3><a name="5.5.1" href="#toc.5.5.1">5.5.1. ʸ�����ȡ����󤪤�ӥ����Ȥ˴ؤ��륦�����˥�</a></h3>
 
2792
<ul>
 
2793
<li><samp>Converted [CR+LF] to [LF]</samp><br>
 
2794
���ԥ����ɤ� 
 
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>
 
2801
<blockquote>
 
2802
<table>
 
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>
 
2810
</table>
 
2811
</blockquote>
 
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>
 
2824
</ul>
 
2825
 
 
2826
<h3><a name="5.5.2" href="#toc.5.5.2">5.5.2. ���뤷�ʤ��������ե�����Υ������˥�</a></h3>
 
2827
<p>�������ե�����κǸ�ιԤ�����Ⱦü�Ǥ�����ˡ����Υ������˥󥰤��Фޤ���old_prep �⡼�ɤǤϥ������˥󥰤�Фޤ���</p>
 
2828
<ul>
 
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
�ե����뤬 &lt;backslash&gt;&lt;newline&gt; �ǽ���äƤ��ƤϤʤ�ޤ���&lt;backslash&gt; �������ޤ���<br>
 
2833
<li><samp>End of file with unterminated comment, terminated the comment</samp><br>
 
2834
�����Ȥ��Ĥ�˺��Ǥ��������Ȥ��Ĥ��ޤ���<br>
 
2835
</ul>
 
2836
<p>���Υ������˥󥰤� 
 
2837
pre-Standard �⡼�ɤǤ����Фޤ����Standard �⡼�ɤǤϥ��顼�ˡ����Ϥν����Ǥʤ����ϡ������Υ������˥󥰤�̵�뤷�ƽ�����³���ޤ��������η�̤Ϥ����̯�ʥ��顼������������Ǥ��礦��<i>OLDPREP</i> �⡼�ɤǤ� unterminated macro call �ʳ��ϥ������˥󥰤�����Фޤ���</p>
 
2838
<ul>
 
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>
 
2843
</ul>
 
2844
 
 
2845
<h3><a name="5.5.3" href="#toc.5.5.3">5.5.3. �ǥ��쥯�ƥ��ֹԤ˴ؤ���Ƽ�Υ������˥�</a></h3>
 
2846
<ul>
 
2847
<li><samp>The macro is redefined</samp><br>
 
2848
�����³���ư���������Τ���ե�����̾�ȹ��ֹ椬ɽ������ޤ���
 
2849
<br>
 
2850
�ޥ����������Ȥϰ�ä����ƤǺ��������ޤ�����
 
2851
����������������Ƥ��ʤ��˰㤤����ޤ���Ʊ��̾���Υޥ������������ʣ���Ƥ�����ϡ����ξ����������Ƥ��ʤ��Ⱥ�����Ȥʤꡢ���Υ������˥󥰤��Фޤ���<br>
 
2852
<ol>
 
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>
 
2857
</ol>
 
2858
<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>
 
2864
#pragma MCPP 
 
2865
debug, #debug �ΰ����� identifier �ǤϤ���ޤ���<br>
 
2866
</ul>
 
2867
<p>���� Standard 
 
2868
�⡼�ɤξ������Ǥ���</p>
 
2869
<ul>
 
2870
<li><samp>"and" is defined as macro</samp><br>
 
2871
C++ �� and ���ޥ����Ȥ����������ޤ�����
 
2872
<br>
 
2873
C95 �Ǥ� &lt;iso646.h&gt; �ǥޥ����Ȥ����������� "and" ���Σ������̾���ϡ�
 
2874
C++ �Ǥ� operator token �Ǥ���C++ �ǤϤ���ϥޥ����Ȥ���������뤳�Ȥ��Ǥ��ʤ��ΤǤ���������� operator �Ȥ��Ƽ������Ƥ��ʤ������ϤǤ�Ȥ���褦�ˡ��ޥ����Ȥ���������뤳�Ȥ�����ʤ��饦�����˥󥰤�Ф��ޤ���<br>
 
2875
</ul>
 
2876
<p>���� <i>STD</i> �⡼�ɤξ������Ǥ���</p>
 
2877
<ul>
 
2878
<li><samp>No space between macro name "MACRO" and repl-text</samp><br>
 
2879
#define 
 
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>
 
2884
�Ȳ�ᤵ��ơ�
 
2885
���Υ������˥󥰤��Фޤ���<br>
 
2886
</ul>
 
2887
<p>�ʲ��� #pragma �˴ؤ��륦�����˥󥰤� 
 
2888
Standard �⡼�ɤξ������Ǥ����������˥󥰤ϽФƤ⤽�ιԤϸ�§�Ȥ��Ƥ��Τޤ޽��Ϥ���ޤ�����#pragma MCPP, #pragma GCC �ǻϤޤ�ԤϽ��Ϥ��ޤ���</p>
 
2889
<ul>
 
2890
<li><samp>No sub-directive</samp><br>
 
2891
#pragma �Ԥ˲��ΰ����⤢��ޤ��󡣤��ιԤ�̵�뤵��ޤ���<br>
 
2892
<li><samp>Unknown encoding "encoding"</samp><br>
 
2893
#pragma 
 
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>
 
2897
<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>
 
2907
</ul>
 
2908
<p>GCC �ǤǤϼ��Υ������˥󥰤��Фޤ���</p>
 
2909
<ul>
 
2910
<li><samp>Ignored #ident</samp><br>
 
2911
<li><samp>Ignored #sccs</samp><br>
 
2912
#ident, #sccs �ιԤ�̵�뤷�ޤ���
 
2913
<br>
 
2914
</ul>
 
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>
 
2918
<ul>
 
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>
 
2921
</ul>
 
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>
 
2923
<ul>
 
2924
<li><samp>Excessive token sequence "junk"</samp><br>
 
2925
</ul>
 
2926
 
 
2927
<h3><a name="5.5.4" href="#toc.5.5.4">5.5.4. #if ���˴ؤ��륦�����˥�</a></h3>
 
2928
<p>���Σ��Ĥ� #if, #elif, #assert �ΰ����˴ؤ��륦�����˥󥰤Ǥ���</p>
 
2929
<ul>
 
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>
 
2936
</ul>
 
2937
<p>���� #if, #elif, #assert �ΰ����˴ؤ��륦�����˥󥰤Ǥ�����ɾ���򥹥��åפ������ʬ���ǤϽФޤ����-W8 ���ץ����ǤϽФ�ˡ�</p>
 
2938
<ul>
 
2939
<li><samp>Undefined escape sequence '\x'</samp><br>
 
2940
\x �Ȥ��� escape sequence �Ϥ���ޤ���ñ�ʤ� \x �Ȥ������Х��Ȥ� sequence �Ȥ���ɾ�����ޤ���\x �ˣ�����ʸ����³�� escape sequence �Ϥ�����󤢤�ˡ�UCN �Υ�������­��ʤ�����Ʊ�ͤǤ���<br>
 
2941
</ul>
 
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>
 
2945
<ul>
 
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>
 
2957
�ӥåȥ��եȱ黻�� 
 
2958
&lt;&lt;, &gt;&gt; �α� operand ���ͤ� long �Υӥå�����Ķ���Ƥ��ޤ���<br>
 
2959
<br>
 
2960
<li><samp>Negative value "-1" is converted to positive "18446744073709551615"</samp><br>
 
2961
���ʤ������Ĥ��Ȥκ���黻�η�̡����Ĥ�����������ʤ����������Ѵ�����ޤ���������ϥ��顼�ǤϤ���ޤ��󤬡����֤󥽡����β��餫�δְ㤤�Ǥ��礦������黻�� *, /, %, +, -, &lt;, &gt;, &lt;=, &gt;=, ==, !=, &amp;, ^, | ��ξ�ա�����ӣ���黻�� ? : ���裲���裳 operand �ˤĤ��Ƥϡ��������������ʤ��ξ��ϡ�¾�������Ĥ��Ǥ����ʤ����Ѵ�����ޤ���<br>
 
2962
<li><samp>Illegal shift count "-1"</samp><br>
 
2963
�ӥåȥ��եȱ黻�� &lt;&lt;, &gt;&gt; �α� operand ���ͤ�����Ǥ����ޤ��� long long �Υӥå�����Ķ���Ƥ��ޤ�������⥽�����δְ㤤�Ǥ��礦��<br>
 
2964
<li><samp>"op" of negative number isn't portable</samp><br>
 
2965
����黻�� op �η�̤ϡ�operand �ΰ����ޤ�������������Ǥ������ portability ������ޤ���op �� /, %, &gt;&gt; �Τɤ줫�Ǥ����� operand ������ξ��� &gt;&gt; �黻�Ҥϡ����ѥ��ե�̿������ CPU ��ν����Ϥδ֤Ǥ� portability ������Ϥ��Ǥ����ʣ��ӥåȤΥ��եȤǣ��dz�ä���̤ˤʤ�ˡ������Ǥʤ� CPU ��ν����ϤȤδ֤Ǥ� portability ������ޤ���<br>
 
2966
</ul>
 
2967
 
 
2968
<h3><a name="5.5.5" href="#toc.5.5.5">5.5.5. �ޥ���Ÿ���˴ؤ��륦�����˥�</a></h3>
 
2969
<p>�����Υ������˥󥰤ǤϤ��Υޥ��������ɽ�����졢���Υޥ�������Τ��륽�����ե�����̾�ȹ��ֹ��ɽ������ޤ���</p>
 
2970
<ul>
 
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&amp;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>
 
2978
</ul>
 
2979
<p>���Σ��Ĥ� <i>OLDPREP</i> �⡼�ɤ����Ǥ���¾�Υ⡼�ɤǤϥ��顼�ˡ�</p>
 
2980
<ul>
 
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>
 
2983
</ul>
 
2984
 
 
2985
<h3><a name="5.5.6" href="#toc.5.5.6">5.5.6. ���ֹ�˴ؤ��륦�����˥�</a></h3>
 
2986
<p>���Ϲ��ֹ�˴ؤ��륦�����˥󥰤Ǥ���</p>
 
2987
<ul>
 
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> &gt;= 199901L �ޤ��� <tt>__cplusplus</tt> &gt;= 199901L �ξ��Ϥ��ΰ�����ͭ���ϰϤ� [1,2147483647] �Ǥ����������äơ�C90, C++ �Ǥ� [32768,2147483647] ���ϰϤϥ��顼�ǤϤʤ��������˥󥰤ˤȤɤ�Ƥ��ޤ���<br>
 
2991
Standard �⡼�ɤξ��Ǥ���<br>
 
2992
</ul>
 
2993
<p>C90 �Ǥ� #line �� 32767 
 
2994
���Ͼ�����������˶ᤤ�ֹ����ꤷ����硢���λ����Ǥϥ��顼�ˤʤ�ʤ���ΤΡ������줳���ϰϤ򥪡��С����ޤ��������С�������硢<b>mcpp</b> �Ǥ� warning ��Ф�����ǹ��ֹ�򤽤Τޤ����䤷³���Ƥ����ޤ�����������������ѥ������Τˤ�äƤϤ����������ʤ����⤷��ޤ���#line �λ��꤬���ߤ��礭�����Ȥ�����Ǥ���</p>
 
2995
<ul>
 
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>
 
3000
</ul>
 
3001
 
 
3002
<h3><a name="5.5.7" href="#toc.5.5.7">5.5.7. #pragma MCPP warning (#warning)</a></h3>
 
3003
<ul>
 
3004
<li><samp>#warning</samp><br>
 
3005
<li><samp>#pragma MCPP warning</samp><br>
 
3006
#pragma 
 
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>
 
3009
</ul>
 
3010
 
 
3011
<h2><a name="5.6" href="#toc.5.6">5.6. Warning (class 2)</a></h2>
 
3012
<p>�ְ㤤�ǤϤʤ��� portability ������Τ��륱�����ˤĤ��ƤΥ������˥󥰤Ǥ���</p>
 
3013
<ul>
 
3014
<li><samp>Converted [CR+LF] to [LF]</samp><br>
 
3015
���ԥ����ɤ� [CR+LF] ���� [LF] ���Ѵ����ޤ��������Υ������˥󥰤� compiler-independent-build �Ǥϥ��饹���ǡ�compiler-specific-build �Ǥϥ��饹���Ǥ���<br>
 
3016
</ul>
 
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>
 
3018
<ul>
 
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>
 
3026
</ul>
 
3027
<p>���Σ��Ĥ� Standard �⡼�ɤξ������Ǥ���</p>
 
3028
<ul>
 
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>
 
3035
<pre>
 
3036
#define EMPTY
 
3037
</pre>
 
3038
���Ȥ��ơ����� <tt>EMPTY</tt> �򥫥��������ʬ�˽񤯤Τ��ɤ��Ǥ��礦��<br>
 
3039
<li><samp>Skipped the #pragma line</samp><br>
 
3040
GCC V.3 �Ǥ� #pragma GCC &lt;args&gt; �Ȥ������� 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>
 
3044
</ul>
 
3045
<p>���� <i>POSTSTD</i> �⡼�ɤξ������Ǥ���</p>
 
3046
<ul>
 
3047
<li><samp>Header-name enclosed by &lt;, &gt; is an obsolescent feature &lt;stdio.h&gt;</samp><br>
 
3048
&lt;stdio.h&gt; �Ȥ������� 
 
3049
header name ���ѻߤ��������ͤǤ���"stdio.h" ��ȤäƤ���������<br>
 
3050
</ul>
 
3051
<p>���Σ��ĤΥ������˥󥰤�����Υ����ƥ�����Τ�ΤǤ��������Υ����ƥ�Ǥ��������ץ������Ǥ�����portability ���ʤ��Τǡ�ǰ�Τ���˥������˥󥰤�Ф��ޤ���</p>
 
3052
<ul>
 
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>
 
3056
<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>
 
3061
</ul>
 
3062
<br>
 
3063
 
 
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>
 
3066
<ul>
 
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>
 
3070
ʸ�����ƥ�롢
 
3071
ʸ�������header name ��Ĺ���� 509 �Х��Ȥ�Ķ���Ƥ��ޤ���<br>
 
3072
<li><samp>More than 8 nesting of #include</samp><br>
 
3073
#include 
 
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>
 
3081
</ul>
 
3082
<p>���Υ������˥󥰤ϥ����åפ���� #if group �ǤϽФޤ���</p>
 
3083
<ul>
 
3084
<li><samp>More than 32 nesting of parens in #if expression</samp><br>
 
3085
#if 
 
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>
 
3090
Identifier 
 
3091
��Ĺ���������Х��Ȥ�Ķ���Ƥ��ޤ���<br>
 
3092
</ul>
 
3093
<p><tt>__STDC_VERSION__</tt> &gt;= 199901L 
 
3094
�ξ��Ϥ����� translation limits �ϼ����̤�Ǥ���Identifier ��Ĺ���Ǥϡ�UCN �� multi-byte-character �Ϥ��줾�죱ʸ���ȿ����ޤ��ʥ������ΥХ��ȿ��ǤϤʤ�����̯�ʵ���Ǥ���ˡ�</p>
 
3095
<blockquote>
 
3096
<table>
 
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>
 
3105
</table>
 
3106
</blockquote>
 
3107
<p>-+ ���ץ����� C++ �Υץ�ץ���������ꤷ�����ϡ����Τ褦�� translation limits �Ȥ��ޤ������������ޥ����Υѥ�᡼���κ������ <b>mcpp</b> �Ǥ� 255 �ޤǤ��������Ǥ��ʤ��Τǡ�256 �ĤǤϥ��顼�Ȥʤ�ޤ���</p>
 
3108
<blockquote>
 
3109
<table>
 
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>
 
3118
</table>
 
3119
</blockquote>
 
3120
<p>���Υ������˥󥰤�ºݤˤϤ��뤵���Τǡ�class 1, 2 ���鳰���Ƥ���ޤ���</p>
 
3121
<ul>
 
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 &amp;&amp; (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>
 
3130
</ul>
 
3131
<p>���Σ��Ĥ� Standard �⡼�ɤξ������Фޤ���</p>
 
3132
<ul>
 
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>
 
3138
</ul>
 
3139
<br>
 
3140
 
 
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>
 
3144
<ul>
 
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>
 
3152
</ul>
 
3153
<p>���� #if ���˴ؤ��륦�����˥󥰤Ǥ����㤨�� #if a || b �Ȥ������Ǥϡ�a �����Ǥ���� b ��ɾ���ϹԤ��ޤ��󡣤�������-W8 �Ȥ��Ƶ�ư����ȡ�ɾ������ʤ���ʬ���˴ؤ��Ƥ⤳���Υ������˥󥰤��Ф���ޤ������ξ��Ϥ������ (in non-evaluated sub-expression) �Ȥ����������񤭤��դ����ޤ���</p>
 
3154
<ul>
 
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>
 
3179
<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>
 
3188
</ul>
 
3189
<br>
 
3190
 
 
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>
 
3193
<ul>
 
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>
 
3199
<pre>
 
3200
&lt;%  -&gt;  {           &lt;:  -&gt;  [           %:      -&gt;  #
 
3201
%&gt;  -&gt;  }           :&gt;  -&gt;  [           %:%:    -&gt;  ##
 
3202
</pre>
 
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>
 
3205
</ul>
 
3206
<br>
 
3207
 
 
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>
 
3379
</table><br>
 
3380
<br>
 
3381
 
 
3382
<h1><a name="6" href="#toc.6">6. �Х������</a></h1>
 
3383
 
 
3384
<p>�ץ�ץ������� Standard C Ŭ���٤򸡾ڤ��뤿��� Validation Suite �� <b>mcpp</b> �Υ������ȤȤ�˸������Ƥ��ޤ���Standard C �Υץ�ץ������Τ��٤Ƥε���򸡾ڤǤ����Τˤ����Ĥ��Ǥ����������<b>mcpp</b> �Ϥ����Ȥäƥ����å����Ƥ���ޤ��������¿���ν����Ϥǥ���ѥ��뤷�ƥ����å����Ƥ���ޤ����������äơ��Х�������ͤϤۤȤ�ɤʤ��Ĥ��Ǥ��������������ޤ������Ĥ��ĤäƤ��붲��Ͻ�ʬ����ޤ���</p>
 
3385
<p>�⤷���ԲIJ��ư�ȯ�����줿�顢���Ҥ���𤯤�������<br>
 
3386
�⤷��
 
3387
"Bug: ..." �Ȥ������ǥ�å��������Ф��顢����ϴְ㤤�ʤ� <b>mcpp</b> �ޤ��Ͻ����ϤΡʤ��֤� <b>mcpp</b> �Ρ˥Х��Ǥ����ޤ������Ȥ�����㤯����ʡ֥������פǤ⡢����򿩤碌�뤳�Ȥ� <b>mcpp</b> ��˽������ʤ顢�����Х��Ǥ���</p>
 
3388
 
 
3389
<p>�Х����ˤϼ��Τ褦�ʥǡ������դ��Ƥ�������褦���ꤤ���ޤ���</p>
 
3390
<ol>
 
3391
<li><b>mcpp</b> ��ܿ����������ϡ�<br>
 
3392
<li>�Х��Ȼפ����Τ�Ƹ��Ǥ���ʤ�٤�û������ץ륽������
 
3393
<br>
 
3394
<li>���ν�����̡�
 
3395
<br>
 
3396
</ol>
 
3397
 
 
3398
<p>�Х����Τۤ��ˤ⡢<b>mcpp</b> �λȤ����ꡢ���ǥ�å����������Υɥ�����Ȥν�����
 
3399
�ʤɤˤĤ��Ƥ��ո��򤪴󤻤���������<br>
 
3400
���ո��Ⱦ����</p>
 
3401
<p><a href="http://mcpp.sourceforge.net/"> http://mcpp.sourceforge.net/</a></p>
 
3402
<p>�� "Open Discussion Forum" �ޤ��ϥ᡼��Ǥ��ꤤ���ޤ���
 
3403
</p>
 
3404
 
 
3405
</body>
 
3406
</html>