adlint 1.6.0 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +389 -37
- data/INSTALL +3 -0
- data/MANIFEST +7 -0
- data/NEWS +50 -10
- data/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb +1 -1
- data/etc/mesg.d/en_US/messages.yml +7 -7
- data/etc/mesg.d/ja_JP/messages.yml +4 -4
- data/lib/adlint/c/branch.rb +4 -4
- data/lib/adlint/c/code.rb +11 -13
- data/lib/adlint/c/enum.rb +0 -2
- data/lib/adlint/c/environ.rb +13 -7
- data/lib/adlint/c/expr.rb +5 -1
- data/lib/adlint/c/interp.rb +10 -6
- data/lib/adlint/c/mediator.rb +1 -0
- data/lib/adlint/c/message.rb +294 -111
- data/lib/adlint/c/message_shima.rb +63 -0
- data/lib/adlint/c/metric.rb +25 -13
- data/lib/adlint/c/object.rb +168 -31
- data/lib/adlint/c/parser.rb +3 -3
- data/lib/adlint/c/phase.rb +20 -3
- data/lib/adlint/c/syntax.rb +175 -17
- data/lib/adlint/c/value.rb +199 -126
- data/lib/adlint/cpp/asm.rb +4 -4
- data/lib/adlint/cpp/constexpr.rb +1 -1
- data/lib/adlint/cpp/eval.rb +6 -4
- data/lib/adlint/cpp/message.rb +100 -7
- data/lib/adlint/cpp/phase.rb +12 -1
- data/lib/adlint/cpp/source.rb +2 -2
- data/lib/adlint/cpp/subst.rb +2 -4
- data/lib/adlint/lang.rb +5 -3
- data/lib/adlint/ld/metric.rb +1 -1
- data/lib/adlint/version.rb +2 -2
- data/share/demo/Makefile +5 -0
- data/share/demo/bad_include/bad_include.c +13 -0
- data/share/demo/bad_include/test'1'.h +0 -0
- data/share/demo/bad_include/test'2'.h +0 -0
- data/share/demo/incomplete_ifelse/incomplete_ifelse.c +29 -0
- data/share/demo/inline_asm/inline_asm.c +25 -0
- data/share/demo/invalid_call/invalid_call.c +12 -4
- data/share/demo/logical_expr/logical_expr.c +73 -0
- data/share/demo/register_vars/register_vars.c +12 -0
- data/share/demo/typedef_each_src/typedef_each_src.c +9 -0
- data/share/demo/wrap_around/wrap_around.c +17 -0
- data/share/doc/developers_guide_ja.html +3 -3
- data/share/doc/developers_guide_ja.texi +1 -1
- data/share/doc/users_guide_en.html +137 -102
- data/share/doc/users_guide_en.texi +121 -86
- data/share/doc/users_guide_ja.html +118 -91
- data/share/doc/users_guide_ja.texi +103 -76
- metadata +10 -3
@@ -1,8 +1,8 @@
|
|
1
1
|
<html lang="ja">
|
2
2
|
<head>
|
3
|
-
<title>AdLint 1.
|
3
|
+
<title>AdLint 1.8.0 利用者ガイド</title>
|
4
4
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5
|
-
<meta name="description" content="AdLint 1.
|
5
|
+
<meta name="description" content="AdLint 1.8.0 利用者ガイド">
|
6
6
|
<meta name="generator" content="makeinfo 4.13">
|
7
7
|
<link title="Top" rel="top" href="#Top">
|
8
8
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
@@ -44,7 +44,7 @@ td { border: 1px solid black; }
|
|
44
44
|
--></style>
|
45
45
|
</head>
|
46
46
|
<body>
|
47
|
-
<h1 class="settitle">AdLint 1.
|
47
|
+
<h1 class="settitle">AdLint 1.8.0 利用者ガイド</h1>
|
48
48
|
<div class="node">
|
49
49
|
<a name="Top"></a>
|
50
50
|
<p><hr>
|
@@ -2600,7 +2600,7 @@ Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
2600
2600
|
<li><a href="#W0535">W0535</a>: for 文の制御式の中にカンマ演算子が使われています。
|
2601
2601
|
<li><a href="#W0538">W0538</a>: この default ラベルは、switch 文内の最後のラベルではありません。
|
2602
2602
|
<li><a href="#W0540">W0540</a>: 空の仮引数並びの関数が定義されています。`void' が省略されています。
|
2603
|
-
<li><a href="#W0541">W0541</a>:
|
2603
|
+
<li><a href="#W0541">W0541</a>: マクロで隠蔽されないインラインアセンブリコードです。
|
2604
2604
|
<li><a href="#W0542">W0542</a>: 関数宣言の仮引数の一部にのみ識別子が存在します。
|
2605
2605
|
<li><a href="#W0543">W0543</a>: この関数宣言における仮引数の識別子は、以前の宣言の仮引数の識別子と異なります。
|
2606
2606
|
<li><a href="#W0544">W0544</a>: 関数宣言の仮引数の識別子と関数ポインタの宣言の仮引数の識別子が異なります。
|
@@ -2665,8 +2665,8 @@ Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
2665
2665
|
<li><a href="#W0627">W0627</a>: 一行に、空文(`;' だけの文)が、他のコードの後にあります。
|
2666
2666
|
<li><a href="#W0628">W0628</a>: 関数 `%s' が定義されていますが、このプロジェクトでは使われていません。
|
2667
2667
|
<li><a href="#W0629">W0629</a>: static 関数 `%s()' は、この翻訳単位の中で使われていません。
|
2668
|
-
<li><a href="#W0632">W0632</a>: `#include <%s>' の中で
|
2669
|
-
<li><a href="#W0633">W0633</a>: `#include "%s"' の中で
|
2668
|
+
<li><a href="#W0632">W0632</a>: `#include <%s>' の中で ' や " 文字を使うと、未定義の動作になります。
|
2669
|
+
<li><a href="#W0633">W0633</a>: `#include "%s"' の中で ' 文字を使うと、未定義の動作になります。
|
2670
2670
|
<li><a href="#W0634">W0634</a>: `#include' 行の中で `\' を使っています。パス区切り文字としては `/' を勧めます。
|
2671
2671
|
<li><a href="#W0635">W0635</a>: %s 番目の変換指定子と、対応する実引数の型が合いません。
|
2672
2672
|
<li><a href="#W0636">W0636</a>: %s 番目の変換指定子に対応する実引数が存在しません。
|
@@ -27514,7 +27514,7 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
27514
27514
|
|
27515
27515
|
<h4 class="subsection">6.449.1 メッセージ本文</h4>
|
27516
27516
|
|
27517
|
-
<p
|
27517
|
+
<p>マクロで隠蔽されないインラインアセンブリコードです。
|
27518
27518
|
|
27519
27519
|
<h4 class="subsection">6.449.2 内容</h4>
|
27520
27520
|
|
@@ -27522,7 +27522,9 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
27522
27522
|
|
27523
27523
|
<h4 class="subsection">6.449.3 サンプルコード</h4>
|
27524
27524
|
|
27525
|
-
<pre class="verbatim"
|
27525
|
+
<pre class="verbatim">#define ASM_CODE asm("movl %ecx, %eax")
|
27526
|
+
|
27527
|
+
void foo(int arg1, int *arg2, int arg3)
|
27526
27528
|
{
|
27527
27529
|
asm("movl %ecx, %eax"); /* W0541 */
|
27528
27530
|
__asm__("movl %ecx, (%eax)"); /* W0541 */
|
@@ -27531,6 +27533,8 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
27531
27533
|
xorl eax, eax
|
27532
27534
|
}
|
27533
27535
|
|
27536
|
+
ASM_CODE; /* OK */
|
27537
|
+
|
27534
27538
|
__asm__ volatile ( /* W0541 */
|
27535
27539
|
"int $0x80"
|
27536
27540
|
: "=a" (r)
|
@@ -29639,17 +29643,16 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
29639
29643
|
|
29640
29644
|
<h4 class="subsection">6.498.2 内容</h4>
|
29641
29645
|
|
29642
|
-
<p
|
29643
|
-
|
29644
|
-
<p>明らかに負になることが明らかな整数は、負の数として扱われることが想定されます。
|
29646
|
+
<p>明らかに負になることが明らかな整数は、負の数として扱われることが想定されます。
|
29645
29647
|
そのような値が符号無し型に変換されることで意図しない動作を引き起こす可能性があります。
|
29646
29648
|
|
29647
29649
|
<h4 class="subsection">6.498.3 サンプルコード</h4>
|
29648
29650
|
|
29649
|
-
<pre class="verbatim">int a
|
29650
|
-
|
29651
|
-
if (a < 0) {
|
29652
|
-
|
29651
|
+
<pre class="verbatim">void func(int a)
|
29652
|
+
{
|
29653
|
+
if (a < 0) {
|
29654
|
+
unsigned int b = (unsigned int) a; /* W0607 */
|
29655
|
+
}
|
29653
29656
|
}
|
29654
29657
|
</pre>
|
29655
29658
|
|
@@ -29661,7 +29664,7 @@ if (a < 0) {
|
|
29661
29664
|
|
29662
29665
|
<h4 class="subsection">6.498.5 対応バージョン</h4>
|
29663
29666
|
|
29664
|
-
<p>
|
29667
|
+
<p>1.8.0
|
29665
29668
|
|
29666
29669
|
<div class="node">
|
29667
29670
|
<a name="W0608"></a>
|
@@ -29682,15 +29685,19 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
29682
29685
|
|
29683
29686
|
<h4 class="subsection">6.499.2 内容</h4>
|
29684
29687
|
|
29685
|
-
<p
|
29686
|
-
|
29687
|
-
<p>明らかに負になることが明らかな整数は、負の数として扱われることが想定されます。
|
29688
|
+
<p>明らかに負になることが明らかな整数は、負の数として扱われることが想定されます。
|
29688
29689
|
そのような値が符号無し型に変換されることで意図しない動作を引き起こす可能性があります。
|
29689
29690
|
|
29690
29691
|
<h4 class="subsection">6.499.3 サンプルコード</h4>
|
29691
29692
|
|
29692
|
-
|
29693
|
-
|
29693
|
+
<pre class="verbatim">void fuu(int a)
|
29694
|
+
{
|
29695
|
+
unsigned char b;
|
29696
|
+
|
29697
|
+
if (a < 256) {
|
29698
|
+
b = (unsigned char) a; /* W0608 */
|
29699
|
+
}
|
29700
|
+
}
|
29694
29701
|
</pre>
|
29695
29702
|
|
29696
29703
|
<h4 class="subsection">6.499.4 関連メッセージ</h4>
|
@@ -29701,7 +29708,7 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
29701
29708
|
|
29702
29709
|
<h4 class="subsection">6.499.5 対応バージョン</h4>
|
29703
29710
|
|
29704
|
-
<p>
|
29711
|
+
<p>1.8.0
|
29705
29712
|
|
29706
29713
|
<div class="node">
|
29707
29714
|
<a name="W0609"></a>
|
@@ -30125,14 +30132,18 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
30125
30132
|
|
30126
30133
|
<h4 class="subsection">6.509.2 内容</h4>
|
30127
30134
|
|
30128
|
-
<p><
|
30129
|
-
|
30130
|
-
<p><code>typedef</code> 宣言はヘッダファイル内でのみ行うべきです。このような記述は保守性を低下させます。
|
30135
|
+
<p><code>typedef</code> 宣言はヘッダファイル内でのみ行うべきです。このような記述は保守性を低下させます。
|
30131
30136
|
|
30132
30137
|
<h4 class="subsection">6.509.3 サンプルコード</h4>
|
30133
30138
|
|
30134
|
-
|
30135
|
-
|
30139
|
+
<pre class="verbatim">typedef int *INT_PTR; /* W0625 */
|
30140
|
+
|
30141
|
+
extern INT_PTR func(void);
|
30142
|
+
|
30143
|
+
INT_PTR func(void)
|
30144
|
+
{
|
30145
|
+
return 0;
|
30146
|
+
}
|
30136
30147
|
</pre>
|
30137
30148
|
|
30138
30149
|
<h4 class="subsection">6.509.4 関連メッセージ</h4>
|
@@ -30141,7 +30152,7 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
30141
30152
|
|
30142
30153
|
<h4 class="subsection">6.509.5 対応バージョン</h4>
|
30143
30154
|
|
30144
|
-
<p>
|
30155
|
+
<p>1.8.0
|
30145
30156
|
|
30146
30157
|
<div class="node">
|
30147
30158
|
<a name="W0626"></a>
|
@@ -30328,30 +30339,27 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
30328
30339
|
|
30329
30340
|
<h4 class="subsection">6.514.1 メッセージ本文</h4>
|
30330
30341
|
|
30331
|
-
<p
|
30342
|
+
<p>`<code>#include <%s></code>' の中で ' や " 文字を使うと、未定義の動作になります。
|
30332
30343
|
|
30333
30344
|
<h4 class="subsection">6.514.2 内容</h4>
|
30334
30345
|
|
30335
|
-
<p
|
30336
|
-
|
30337
|
-
<p>`<code>'</code>'、`<code>"</code>' または `<code>/*</code>' を <code>#include</code> 文で使用すると、未定義の動作になります。
|
30346
|
+
<p>`<code>'</code>'、`<code>"</code>' または `<code>/*</code>' を <code>#include</code> 文で使用すると、未定義の動作になります。
|
30338
30347
|
|
30339
30348
|
<h4 class="subsection">6.514.3 サンプルコード</h4>
|
30340
30349
|
|
30341
|
-
|
30342
|
-
<pre class="verbatim">/* 追記予定 */
|
30350
|
+
<pre class="verbatim">#include <NG'_header.h> /* W0632 */
|
30343
30351
|
</pre>
|
30344
30352
|
|
30345
30353
|
<h4 class="subsection">6.514.4 関連メッセージ</h4>
|
30346
30354
|
|
30347
30355
|
<ul>
|
30348
|
-
<li><a href="#W0633">W0633</a> `#include "%s"' の中で
|
30356
|
+
<li><a href="#W0633">W0633</a> `#include "%s"' の中で ' 文字を使うと、未定義の動作になります。
|
30349
30357
|
<li><a href="#W0634">W0634</a> `#include' 行の中で `\' を使っています。パス区切り文字としては `/' を勧めます。
|
30350
30358
|
</ul>
|
30351
30359
|
|
30352
30360
|
<h4 class="subsection">6.514.5 対応バージョン</h4>
|
30353
30361
|
|
30354
|
-
<p>
|
30362
|
+
<p>1.8.0
|
30355
30363
|
|
30356
30364
|
<div class="node">
|
30357
30365
|
<a name="W0633"></a>
|
@@ -30368,30 +30376,27 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
30368
30376
|
|
30369
30377
|
<h4 class="subsection">6.515.1 メッセージ本文</h4>
|
30370
30378
|
|
30371
|
-
<p>`<code>#include "%s"</code>' の中で
|
30379
|
+
<p>`<code>#include "%s"</code>' の中で ' 文字を使うと、未定義の動作になります。
|
30372
30380
|
|
30373
30381
|
<h4 class="subsection">6.515.2 内容</h4>
|
30374
30382
|
|
30375
|
-
<p
|
30376
|
-
|
30377
|
-
<p>`<code>'</code>'、`<code>"</code>' または `<code>/*</code>' を <code>#include</code> 文で使用すると、未定義の動作になります。
|
30383
|
+
<p>`<code>'</code>' を <code>#include</code> 文で使用すると、未定義の動作になります。
|
30378
30384
|
|
30379
30385
|
<h4 class="subsection">6.515.3 サンプルコード</h4>
|
30380
30386
|
|
30381
|
-
|
30382
|
-
<pre class="verbatim">/* 追記予定 */
|
30387
|
+
<pre class="verbatim">#include "NG'_header.h" /* W0633 */
|
30383
30388
|
</pre>
|
30384
30389
|
|
30385
30390
|
<h4 class="subsection">6.515.4 関連メッセージ</h4>
|
30386
30391
|
|
30387
30392
|
<ul>
|
30388
|
-
<li><a href="#W0632">W0632</a> `#include <%s>' の中で
|
30393
|
+
<li><a href="#W0632">W0632</a> `#include <%s>' の中で ' や " 文字を使うと、未定義の動作になります。
|
30389
30394
|
<li><a href="#W0634">W0634</a> `#include' 行の中で `\' を使っています。パス区切り文字としては `/' を勧めます。
|
30390
30395
|
</ul>
|
30391
30396
|
|
30392
30397
|
<h4 class="subsection">6.515.5 対応バージョン</h4>
|
30393
30398
|
|
30394
|
-
<p>
|
30399
|
+
<p>1.8.0
|
30395
30400
|
|
30396
30401
|
<div class="node">
|
30397
30402
|
<a name="W0634"></a>
|
@@ -30412,26 +30417,24 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
30412
30417
|
|
30413
30418
|
<h4 class="subsection">6.516.2 内容</h4>
|
30414
30419
|
|
30415
|
-
<p><
|
30416
|
-
|
30417
|
-
<p><code>\</code> は PC 環境におけるパス区切り文字であり、<code>#include</code> 文で使用することで移植性を損ないます。
|
30420
|
+
<p><code>\</code> は PC 環境におけるパス区切り文字であり、<code>#include</code> 文で使用することで移植性を損ないます。
|
30418
30421
|
|
30419
30422
|
<h4 class="subsection">6.516.3 サンプルコード</h4>
|
30420
30423
|
|
30421
|
-
|
30422
|
-
|
30424
|
+
<pre class="verbatim">#include "..\ng\header.h" /* W0634 */
|
30425
|
+
#include "..\\ng\\header.h" /* W0634 */
|
30423
30426
|
</pre>
|
30424
30427
|
|
30425
30428
|
<h4 class="subsection">6.516.4 関連メッセージ</h4>
|
30426
30429
|
|
30427
30430
|
<ul>
|
30428
|
-
<li><a href="#W0632">W0632</a> `#include <%s>' の中で
|
30429
|
-
<li><a href="#W0633">W0633</a> `#include "%s"' の中で
|
30431
|
+
<li><a href="#W0632">W0632</a> `#include <%s>' の中で ' や " 文字を使うと、未定義の動作になります。
|
30432
|
+
<li><a href="#W0633">W0633</a> `#include "%s"' の中で ' 文字を使うと、未定義の動作になります。
|
30430
30433
|
</ul>
|
30431
30434
|
|
30432
30435
|
<h4 class="subsection">6.516.5 対応バージョン</h4>
|
30433
30436
|
|
30434
|
-
<p>
|
30437
|
+
<p>1.8.0
|
30435
30438
|
|
30436
30439
|
<div class="node">
|
30437
30440
|
<a name="W0635"></a>
|
@@ -30742,14 +30745,17 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
30742
30745
|
|
30743
30746
|
<h4 class="subsection">6.524.2 内容</h4>
|
30744
30747
|
|
30745
|
-
<p
|
30746
|
-
|
30747
|
-
<p>未定義の動作のため、予期しない動作を引き起こす可能性があります。
|
30748
|
+
<p>未定義の動作のため、予期しない動作を引き起こす可能性があります。
|
30748
30749
|
|
30749
30750
|
<h4 class="subsection">6.524.3 サンプルコード</h4>
|
30750
30751
|
|
30751
|
-
<pre class="verbatim">
|
30752
|
-
|
30752
|
+
<pre class="verbatim">void func(void)
|
30753
|
+
{
|
30754
|
+
register int a[3];
|
30755
|
+
|
30756
|
+
int *p1 = a; /* W0642 */
|
30757
|
+
int *p2 = &a[1]; /* W0642 */
|
30758
|
+
}
|
30753
30759
|
</pre>
|
30754
30760
|
|
30755
30761
|
<h4 class="subsection">6.524.4 関連メッセージ</h4>
|
@@ -30763,7 +30769,7 @@ int* p = arr1;
|
|
30763
30769
|
|
30764
30770
|
<h4 class="subsection">6.524.5 対応バージョン</h4>
|
30765
30771
|
|
30766
|
-
<p>
|
30772
|
+
<p>1.8.0
|
30767
30773
|
|
30768
30774
|
<div class="node">
|
30769
30775
|
<a name="W0643"></a>
|
@@ -34132,13 +34138,14 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
34132
34138
|
|
34133
34139
|
<h4 class="subsection">6.584.2 内容</h4>
|
34134
34140
|
|
34135
|
-
<p
|
34136
|
-
|
34137
|
-
<p>このような記述は誤りの可能性があります。
|
34141
|
+
<p>このような記述は誤りの可能性があります。
|
34138
34142
|
|
34139
34143
|
<h4 class="subsection">6.584.3 サンプルコード</h4>
|
34140
34144
|
|
34141
|
-
<pre class="verbatim">
|
34145
|
+
<pre class="verbatim">int func(int a, int b, int c, int d)
|
34146
|
+
{
|
34147
|
+
return (a + b) > (c > d); /* W0711 */
|
34148
|
+
}
|
34142
34149
|
</pre>
|
34143
34150
|
|
34144
34151
|
<h4 class="subsection">6.584.4 関連メッセージ</h4>
|
@@ -34150,7 +34157,7 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
34150
34157
|
|
34151
34158
|
<h4 class="subsection">6.584.5 対応バージョン</h4>
|
34152
34159
|
|
34153
|
-
<p>
|
34160
|
+
<p>1.8.0
|
34154
34161
|
|
34155
34162
|
<div class="node">
|
34156
34163
|
<a name="W0712"></a>
|
@@ -34171,13 +34178,14 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
34171
34178
|
|
34172
34179
|
<h4 class="subsection">6.585.2 内容</h4>
|
34173
34180
|
|
34174
|
-
<p
|
34175
|
-
|
34176
|
-
<p>このような記述は誤りの可能性があります。
|
34181
|
+
<p>このような記述は誤りの可能性があります。
|
34177
34182
|
|
34178
34183
|
<h4 class="subsection">6.585.3 サンプルコード</h4>
|
34179
34184
|
|
34180
|
-
<pre class="verbatim">
|
34185
|
+
<pre class="verbatim">int func(int a, int b, int c, int d)
|
34186
|
+
{
|
34187
|
+
return (a > b) > (c + d); /* W0712 */
|
34188
|
+
}
|
34181
34189
|
</pre>
|
34182
34190
|
|
34183
34191
|
<h4 class="subsection">6.585.4 関連メッセージ</h4>
|
@@ -34189,7 +34197,7 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
34189
34197
|
|
34190
34198
|
<h4 class="subsection">6.585.5 対応バージョン</h4>
|
34191
34199
|
|
34192
|
-
<p>
|
34200
|
+
<p>1.8.0
|
34193
34201
|
|
34194
34202
|
<div class="node">
|
34195
34203
|
<a name="W0713"></a>
|
@@ -34210,13 +34218,14 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
34210
34218
|
|
34211
34219
|
<h4 class="subsection">6.586.2 内容</h4>
|
34212
34220
|
|
34213
|
-
<p
|
34214
|
-
|
34215
|
-
<p>このような記述は誤りの可能性があります。
|
34221
|
+
<p>このような記述は誤りの可能性があります。
|
34216
34222
|
|
34217
34223
|
<h4 class="subsection">6.586.3 サンプルコード</h4>
|
34218
34224
|
|
34219
|
-
<pre class="verbatim">
|
34225
|
+
<pre class="verbatim">int func(int a, int b, int c, int d)
|
34226
|
+
{
|
34227
|
+
return (a > b) > (c > d); /* W0713 */
|
34228
|
+
}
|
34220
34229
|
</pre>
|
34221
34230
|
|
34222
34231
|
<h4 class="subsection">6.586.4 関連メッセージ</h4>
|
@@ -34228,7 +34237,7 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
34228
34237
|
|
34229
34238
|
<h4 class="subsection">6.586.5 対応バージョン</h4>
|
34230
34239
|
|
34231
|
-
<p>
|
34240
|
+
<p>1.8.0
|
34232
34241
|
|
34233
34242
|
<div class="node">
|
34234
34243
|
<a name="W0714"></a>
|
@@ -34249,14 +34258,14 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
34249
34258
|
|
34250
34259
|
<h4 class="subsection">6.587.2 内容</h4>
|
34251
34260
|
|
34252
|
-
<p
|
34253
|
-
|
34254
|
-
<p>このような記述は誤りの可能性があります。
|
34261
|
+
<p>このような記述は誤りの可能性があります。
|
34255
34262
|
|
34256
34263
|
<h4 class="subsection">6.587.3 サンプルコード</h4>
|
34257
34264
|
|
34258
|
-
|
34259
|
-
|
34265
|
+
<pre class="verbatim">int func(int a, int b, int c, int d)
|
34266
|
+
{
|
34267
|
+
return (a > b) & (c > d); /* W0714 */
|
34268
|
+
}
|
34260
34269
|
</pre>
|
34261
34270
|
|
34262
34271
|
<h4 class="subsection">6.587.4 関連メッセージ</h4>
|
@@ -34270,7 +34279,7 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
34270
34279
|
|
34271
34280
|
<h4 class="subsection">6.587.5 対応バージョン</h4>
|
34272
34281
|
|
34273
|
-
<p>
|
34282
|
+
<p>1.8.0
|
34274
34283
|
|
34275
34284
|
<div class="node">
|
34276
34285
|
<a name="W0715"></a>
|
@@ -34291,14 +34300,14 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
34291
34300
|
|
34292
34301
|
<h4 class="subsection">6.588.2 内容</h4>
|
34293
34302
|
|
34294
|
-
<p
|
34295
|
-
|
34296
|
-
<p>このような記述は誤りの可能性があります。
|
34303
|
+
<p>このような記述は誤りの可能性があります。
|
34297
34304
|
|
34298
34305
|
<h4 class="subsection">6.588.3 サンプルコード</h4>
|
34299
34306
|
|
34300
|
-
|
34301
|
-
|
34307
|
+
<pre class="verbatim">int func(int a, int b, int c, int d)
|
34308
|
+
{
|
34309
|
+
return (a > b) | (c > d); /* W0715 */
|
34310
|
+
}
|
34302
34311
|
</pre>
|
34303
34312
|
|
34304
34313
|
<h4 class="subsection">6.588.4 関連メッセージ</h4>
|
@@ -34312,7 +34321,7 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
34312
34321
|
|
34313
34322
|
<h4 class="subsection">6.588.5 対応バージョン</h4>
|
34314
34323
|
|
34315
|
-
<p>
|
34324
|
+
<p>1.8.0
|
34316
34325
|
|
34317
34326
|
<div class="node">
|
34318
34327
|
<a name="W0716"></a>
|
@@ -38697,14 +38706,32 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
38697
38706
|
|
38698
38707
|
<h4 class="subsection">6.684.2 内容</h4>
|
38699
38708
|
|
38700
|
-
<p
|
38701
|
-
|
38702
|
-
<p>インライン・アセンブラ構文は、言語拡張に該当するため、移植性を低下させます。
|
38709
|
+
<p>インライン・アセンブラ構文は、言語拡張に該当するため、移植性を低下させます。
|
38703
38710
|
|
38704
38711
|
<h4 class="subsection">6.684.3 サンプルコード</h4>
|
38705
38712
|
|
38706
|
-
|
38707
|
-
|
38713
|
+
<pre class="verbatim">#define ASM_CODE asm("movl %ecx, %eax")
|
38714
|
+
|
38715
|
+
void foo(int arg1, int *arg2, int arg3)
|
38716
|
+
{
|
38717
|
+
asm("movl %ecx, %eax"); /* W0832 */
|
38718
|
+
__asm__("movl %ecx, (%eax)"); /* W0832 */
|
38719
|
+
|
38720
|
+
asm { /* W0832 */
|
38721
|
+
xorl eax, eax
|
38722
|
+
}
|
38723
|
+
|
38724
|
+
ASM_CODE; /* W0832 */
|
38725
|
+
|
38726
|
+
__asm__ volatile ( /* W0832 */
|
38727
|
+
"int $0x80"
|
38728
|
+
: "=a" (r)
|
38729
|
+
"+b" (arg1),
|
38730
|
+
"+c" (arg2),
|
38731
|
+
"+d" (arg3)
|
38732
|
+
: "a" (128)
|
38733
|
+
: "memory", "cc");
|
38734
|
+
}
|
38708
38735
|
</pre>
|
38709
38736
|
|
38710
38737
|
<h4 class="subsection">6.684.4 関連メッセージ</h4>
|
@@ -38715,7 +38742,7 @@ Up: <a rel="up" accesskey="u" href="#Messages">Messages</a>
|
|
38715
38742
|
|
38716
38743
|
<h4 class="subsection">6.684.5 対応バージョン</h4>
|
38717
38744
|
|
38718
|
-
<p>
|
38745
|
+
<p>1.8.0
|
38719
38746
|
|
38720
38747
|
<div class="node">
|
38721
38748
|
<a name="W0833"></a>
|