リリースノート QA C UNIX 版 Version 4.5. 4.5.3J 3J 2003/10 2003/10/ Version1.04 10/10 Version1.04 © 2003 Programming Research Limited / (株)東陽テクニカ 1 目次 1. はじめに ................................................................................................ 4 2. QA C4.5.3J CD-ROM の内容 ................................................................. 4 3. 動作環境 ................................................................................................ 5 4. QA C 4.5.3J のインストール ................................................................. 5 5. ライセンスの ライセンスのインストール .................................................................... 6 5.1. 5.2. 5.2. 5.3. 5.4. 6. FLEXlm のインストール ...........................................................................................6 ‘LM-HostID’ の取得 (ライセンス・ファイル取得の手続き)........................................7 ネットワーク・ライセンス・サーバの起動 .....................................................................7 ネットワーク・ライセンス・サーバのクライアントとしての操作.........................................7 ‘.flexlmrc’ ファイル.................................................................................................8 解析の 解析の改良点と 改良点と新機能 ........................................................................... 9 6.1. 6.2. 6.3. 6.4. 6.5. 6.6. 6.7. 6.8. 6.9. 6.10. 6.11. 6.12. 6.13. MISRA 対応............................................................................................................9 解釈(パーシング)...................................................................................................9 プリプロセッサ.......................................................................................................10 レイアウト ..............................................................................................................10 宣言/定義 ..........................................................................................................11 リテラル ................................................................................................................12 変換.....................................................................................................................12 文 ........................................................................................................................13 式 ........................................................................................................................14 制御文 .................................................................................................................14 データフロー ........................................................................................................15 メトリックス.............................................................................................................15 設定.....................................................................................................................15 7. インターフェースの インターフェースの改良点と 改良点と新機能 .................................................... 16 8. その他 18 その他の改良点と 改良点と新機能...................................................................... 新機能 9. 既知の 既知の問題 ........................................................................................... 20 10. FAQ 集 ................................................................................................. 22 11. 株式会社東陽テクニカ 株式会社東陽テクニカへのお テクニカへのお問合 へのお問合せ 問合せ .................................................... 24 12. Programming Research Limited へのお問合 へのお問合せ 問合せ ................................. 24 13. 保証の 保証の免責 ........................................................................................... 24 14. 著作権について 25 著作権について.................................................................................... について 15. 商標...................................................................................................... 25 商標 © 2003 Programming Research Limited / (株)東陽テクニカ 2 付録 A. 追加された 26 追加されたメッセージ されたメッセージ.................................................................. メッセージ 付録 B. 変更された 31 変更されたメッセージ されたメッセージ.................................................................. メッセージ 付録 C. 削除された 47 削除されたメッセージ されたメッセージ.................................................................. メッセージ © 2003 Programming Research Limited / (株)東陽テクニカ 3 1. はじめに 本書では、QA C ソースコード・アナライザ UNIX 版の Version 4.5.3J について記述してあります。 本書には、ソフトウェアをシステムにインストールする前にお読みいただきたい重要な情報が含ま れています。 2. QA C4.5.3J CDCD-ROM の内容 QA C4.5.3J の CD-ROM には以下のファイルが収録されています。 同梱されているファイルまたはフォルダ 説明 1. /license_ap.doc QA C ライセンス申請書 (*1) 2. /FLEXlm /enduser.pdf FLEXlm の英語版エンドユーザズガイド 3. /FLEXlm/Readme_sjis.txt FLEXlm の Readme ファイル(SJIS) 4. /FLEXlm/Readme_euc.txt FLEXlm の Readme ファイル(EUC) 5. /FLEXlm/FLEXlm_for_PC.zip FLEXlm PC 版の本体 6. /FLEXlm/FLEXlm_for_Solaris.tar FLEXlm Solaris 版(7、8 用)の本体 7. /FLEXlm/FLEXlm_for_Sol26.tar FLEXlm Solaris 版(2.6 用)の本体 8. /FLEXlm/FLEXlm_for_HP.tar FLEXlm HP 版の本体 9. /QAC-4.5.3J/Docs/ QAC-4.5.3J-PC-ReleaseNotes.pdf QA C PC 版 4.5.3J のリリースノート(PDF 形式) 10. /QAC-4.5.3J/Docs/ QAC-4.5.3J-PC-UsersGuide.pdf QA C PC 版 4.5.3J のユーザーズガイド (PDF 形式) 11. /QAC-4.5.3J/Docs/ QAC-4.5.3J-UNIX-ReleaseNotes.pdf QA C UNIX 版 4.5.3J のリリースノート (PDF 形式) 12. /QAC-4.5.3J/Docs/ QAC-4.5.3J-UNIX-UsersGuide.pdf QA C UNIX 版 4.5.3J のユーザーズガイド (PDF 形式) 13. /QAC-4.5.3J/UNIX/QAC_4.5.3J_HP.tar.gz QA C HP 版 4.5.3J インストール用ファイル 14. /QAC-4.5.3J/UNIX/QAC_4.5.3J_Sol.tar.gz QA C Solaris 版 4.5.3J インストール用ファ イル 15. /QAC-4.5.3J/PC/setup.exe その他 QA C PC 版 4.5.3J インストール用ファイル 16. /toyo_util/UNIX/toyo_util_for_UNIX.tar UNIX 版コマンド解析用ツール (*2) 17. /toyo_util/PC/toyo_util_for_PC.zip PC 用コマンド解析用ツール *1) license_ap.doc は Word 形式のファイルです。 *2) 15 項の UNIX 版 toyo_util は、HP-UX 版 QA C および Solaris 版 QA C の tar ファイル(12 および 13 項)にも同梱されています。 © 2003 Programming Research Limited / (株)東陽テクニカ 4 3. 動作環境 項目 サポート OS 動作環境 Solaris 備考 2.6、7、8 HP-UX 10.20、11.00 推奨メモリ 256M バイト以上 インストールに 約 40M バイト 必要なディスク 容量 一度に解析する解析対象のファイルサイズの合計が 非常に大きい場合は、さらに多くのメモリを増設するこ とをお勧めします。 解析時には、解析結果を保存するための領域が必要 になります。十分な空き領域のある環境でご使用下さ い。 4. QA C 4.5.3J 4.5.3J のインストール QA C 4.5.3J のインストールは、以下の手順で行って下さい。 1. QA C 4.5.3J をインストールする新しいディレクトリを作成します。 既に前のバージョンの QA C がインストールされている場合は、QA C 4.5.3J を新しいディレク トリにインストールすることをお勧めします。インストールには、約 40 M バイトのディスク容量が 必要となります。 インストール手順の記述の中で、QA C をインストールするディレクトリを示すために QACDIR という表記を用います。これ以降、QACDIR と記された部分は、ディレクトリ名に適宜読み替え て下さい。 Programming Research Ltd.のツールは、/usr/prqa の下に作成したディレクトリ内にインストー ルすることをお勧めします。QA C 4.5.3J の場合は、QACDIR が指すディレクトリとして /usr/prqa/QAC4.5.3J をお勧めします。 2. カレント・ディレクトリを QACDIR に移動し、以下のコマンドを使用して QA C のファイルを解 凍します。プラットフォームに適合する tar ファイルは、QA C の CD の QAC-4.5.3J/UNIX ディレクトリ内にあります。 gunzip -c <tar ファイル名> | tar -xvf 3. インストール用のスクリプトを、以下のように実行します。 ./install.qac QA C の実行に必要な環境変数の設定とパスの検索をセットアップするための、.cshrc と.profile の両スクリプトの例が作成されます。 C シェルで動作させる場合には、以下のように入力します。 source .cshrc Bourne シェルまたは Korn シェルでは、以下のように入力します。 . .profile ユーザ自身のホーム・ディレクトリから QA C にアクセスしたい場合には、.cshrc または.profile の内容を、ユーザのホーム・ディレクトリ内にある相当する既存ファイルに併合して下さい。 © 2003 Programming Research Limited / (株)東陽テクニカ 5 5. ライセンスの ライセンスのインストール 以下に、ネットワーク・ライセンスのインストールに関する手順を記述します。 5.1. FLEXlm のインストール 1) QA C の CD の/FLEXlm ディレクトリから該当する OS の tar ファイルを任意のディレクトリ にコピーしてください。本書では/usr/prqa/FLEXlm に FLEXlm をインストールすることを 想定して説明いたします Solaris7、8 用 :FLEXlm_for_Solaris.tar Solaris2.6 用 :FLEXlm_for_Sol26.tar HP 用 2) :FLEXlm_for_HP.tar tar 形式ファイルを解凍して下さい。以下の 4 つのファイルが現れます ライセンス・ユーティリティ・プログラム lmutil ライセンス・デーモン・プログラム lmgrd インストール・スクリプト install.sh Programmin Research Ltd.のライセンス・デーモン prflexd <tar ファイルの解凍方法> Solaris の場合: cd /usr/prqa/FLEXlm tar xfv FLEXlm_for_Solaris.tar HP の場合: cd /usr/prqa/FLEXlm tar xfv FLEXlm_for_HP.tar 3) ライセンス・インストール用スクリプト install.sh を実行して、FLEXlm ディレクトリ内の全ての ユーティリティへのリンクを作成してください。 実行例: /usr/prqa/FLEXlm/install.sh © 2003 Programming Research Limited / (株)東陽テクニカ 6 5.2. ‘LMLM-HostID’ HostID’ の取得 (ライセンス・ ライセンス・ファイル取 ファイル取得の手続き 手続き) QA C の CD にある /usr/prqa/FLEXlm ディレクトリ内にある適合したプラットフォーム用のコマン ドを使い、“lmutil lmhostid”を実行すると、以下のように LM-HostID が出力されます。 実行例: /usr/prqa/FLEXlm>lmutil lmhostid lmutil - Copyright (C) 1989-2002 Globetrotter Software, Inc. The FLEXlm host ID of this machine is "00c04f07c7d3" この情報を QA C パッケージに同梱されている「QA C/QA C++ライセンス申請書」にご記入の 上、(株)東陽テクニカ ソフトウェア・ソリューション QA C / QA C++サポート係まで FAX してください。ま た、「QA C/QA C++ライセンス申請書」と同等の情報をss_support@toyo.co.jp に e-mail でお 送りいただいても、ライセンス・ファイルを発行いたします。 5.2. ネットワーク・ ットワーク・ライセンス・ ライセンス・サーバの サーバの起動 サーバの LM-HostID に合った有効なライセンス・ファイルが必要となります。LM-HostID の取得 については、上述の手順をご参照下さい。 /usr/prqa/FLEXlm ディレクトリで、以下のコマンドを実行して下さい。 lmgrd -c <フルパスのライセンス・ファイル名> -l log_file.log ※ライセンス・ファイルには、LM-HostID に合った有効なライセンスが登録されています。 5.3. ネットワーク・ ネットワーク・ライセンス・ ライセンス・サーバの サーバのクライアントとしての クライアントとしての操作 としての操作 各クライアント・マシンでは、C シェルで QA C を動作させる場合には.cshrc を、Bourne シェルまた は Korn シェルで QA C を動作させる場合には.profile を編集してください。 .cshrc の編集: setenv PRLDHOST @<サーバ名> ※サーバ名が toyo の場合は、「 setenv PRLDHOST @toyo」と設定します。 .profile の編集: PRLDHOST=@<サーバ名>;export PRLDHOST ※サーバ名が toyo の場合は、「 PRLDHOST=@toyo ; export PRLDHOST」と設定します。 © 2003 Programming Research Limited / (株)東陽テクニカ 7 5.4. ‘.flexlmrc’ .flexlmrc’ ファイル QA C の実行時、ライセンス・ファイル名またはサーバ名は、各クライアント・マシンの $HOME/.flexlmrc に、以下のエントリとして格納されています。 PRFLEXlmXD_LICENSE_FILE=@<servername> このファイルは、アプリケーションがライセンスを取得する際に、path 変数のようにライセンス・ファイ ル名やサーバ名を検索するのに使用されます。 © 2003 Programming Research Limited / (株)東陽テクニカ 8 6. 解析の 解析の改良点と 改良点と新機能 CR で始まる番号は、PRL 社の管理番号です。 6.1. MISRA 対応 ! CR506: MISRA ルール 54「空の文はそれ自身を一行だけにおかなければならず、同じ行 にはその他どんなテキストもおいてはならない。」: 新しいメッセージ 3141 が、コメントのみ を伴った空の文に対して出力されます。 ! CR516: MISRA ルール 93「関数形式マクロよりは、関数を使用すべきである。」: 新しいメッ セージ 3429 が出力されます。 ! CR621: MISRA ルール 14「char 型は常に unsigned char か signed char で定義されなけれ ばならない。」: 新しいメッセージ 3625 が、単なる char 型が使用されている全ての箇所で 出力されます。 ! CR628: MISRA ルール 74「引数の一部でも識別子が与えられた場合、宣言や定義で使用 された識別子は等しくなければならない。」: 新しいメッセージ 1330 が出力されます。 ! CR662: MISRA ルール 113「構造体(または共用体)のメンバには全て名前をつけ、その名 前を経由してのみアクセスしなければならない。」: 新しいメッセージ 660 が、名前のない構 造体メンバに対して出力されます。 ! CR762: MISRA ルール 91「マクロはブロック内で、定義される (#define)と同時に定義を解 除(#undef)されてはならない。」: 新しいメッセージ 842 が出力されます。 ! CR763: MISRA ルール 111「ビットフィールドは、unsigned int 型か signed int 型に対しての み定義しなければならない。」: 新しいメッセージ 634 が、単なる int、short または char が ビットフィールド宣言に使用された場合に出力されます。 6.2. 解釈( 解釈(パーシング) パーシング) ! CR662: 入れ子になった名前のない構造体のメンバを指すことを許す言語拡張をサポート しました。新しいメッセージ 662 が出力されます。 ! CR785: -d で設定したマクロでセミコロンを定義した際に発生していたパーシング・エラー を修正しました。 ! CR800: ‘for’ループの条件式に増分/減分演算子がある場合に発生していたパーシン グ・エラーを修正しました。 ! CR807: キャストを含む式や浮動小数点式で初期化された static オブジェクトに対して、 メッセージ 685 が誤って出力されていたのを修正しました。 ! CR821: 書式指定子 %% に対して、メッセージ 160(%s 番目の変換指定子はサポートされて いません。)が誤って出力されていたのを修正しました。 ! CR853: セミコロン(‘;’)を含む文字列リテラルが改行文字(‘\’)の後に続く合法的な記述 に対し、メッセージ 259(文字列リテラルに改行文字(new-line character)が含まれていま す。)が誤って出力されていたのを修正しました。 ! CR863: Microsoft や Hiware コンパイラに含まれるインライン・アセンブラ・コードに対応す るために、新たに幾つかの形式の構文をサポートできるようになりました。 ! CR884: “munch” の能力を増強し、‘@’ トークンを直接扱うことができる ‘_munch_at’ を備 © 2003 Programming Research Limited / (株)東陽テクニカ 9 えました。 ! CR885: ビットマップ・データ型(言語拡張)の識別子を定義するのに使用される ‘.’ 演算 子が、ファイル有効範囲(スコープ)内で解釈できるようになりました。 ! "Munch"機能の追加により、解析をしない非 C トークンを指定することが可能になりました。 使用方法などの詳細はマニュアル/ヘルプを参照してください。 ! 直接の解析を行うために C スタイルの引用符に行番号を埋め込むようにプリプロセスする ように拡張されました。 ! long long 拡張型(接尾辞 LL、ll)のための字句サポートを拡張しました。 ! ビットフィールドアクセス構文の拡張(Keil コンパイラの要件)をしました。 ! asm と endasm の代わりの ASM と ENDASM を許容するため、拡張の振舞いが改善されま した。 ! //コメントの扱いの一貫性に関する拡張がされました。C++拡張はメッセージ 1011 の生成 を抑制し、メッセージ 1326 は削除されました。 ! ファイルが正しく解析完了しなかった場合に解析ウィンドウにパーシングエラーが表示され ます。 ! @ <qualifier> および @ <address> 使用のためのシンタックス拡張を行いました。 ! 精度の損失に関するメッセージ(#4120)の表現の不正確さを修正しました。 6.3. プリプロセッサ ! CR748: #include “filename” 文に対して、ソースファイルが置かれたディレクトリが最初に検 索されなかった点を修正しました。 ! CR796: 波括弧(‘{’)が同じ行にない場合にも、‘_munch_paren’ が正しく動作するように修 正しました。 ! CR816: 複雑なマクロに対してメッセージ 3411(マクロ定義の中に、対になっていない角括 弧または括弧があります。)が出力される問題を修正しました。 ! CR864: “##” 演算子の誤用が検出された後の、復帰能力を向上しました。 ! CR870: マクロ定義内の特定のキーワードや字句の使用に関するメッセージ群を再編成し、 一部は MISRA ルールに対応させました。 3413 このマクロ定義は typedef に置き換えることができるはずです。 3414 マクロ定義に記憶域修飾子 ‘%s’ が含まれています。 3428 マクロ定義に型修飾子 ‘%s’ が含まれています。 3412 マクロ定義に、‘{‘, ‘}’, ‘;’ またはキーワードが含まれています。 3439 マクロはキーワードの再定義に使用してはいけません。 6.4. レイアウト ! CR886: #define で除去された字句に対する桁位置の補正が正しくないためにメッセージ 2200(この行の段付けは上の行より左に寄っています。)が出力される問題を修正しました。 © 2003 Programming Research Limited / (株)東陽テクニカ 10 6.5. 宣言/ 宣言/定義 ! CR758: .met ファイル内の<DEFINE>レコードが、連続する暗黙的な関数宣言に対して正 しく生成されない問題を修正しました。 ! CR760: メッセージ 3203(変数 ‘%s’ を設定しましたが、その後使用していません。)がポイ ンタに対して正しく出力されない問題を修正しました。 ! CR813: メッセージ 3672(const ではない関数へのポインタを使用しています。)は、typedef に対しては出力されなくなりました。このメッセージは、宣言/定義のみを対象としています。 ! CR847: メッセージ 3002(関数 ‘%s()’ を定義する際に識別子リストと仮引数宣言を分離し て記述するのは、旧式の方法です。)は、空の仮引数リストと共に定義された関数に対して は出力されなくなりました。 ! CR848: メッセージ 422/423(関数呼び出しの実引数の数が、そのプロトタイプで示される 数より少なすぎます。/多すぎます。)は、プロトタイプが明記されている場合以外は出力さ れなくなりました。プロトタイプが明記されていない場合には、既存のメッセージ 3319(定義 での引数の数と異なる引数の数で関数を呼び出しています。)が出力されます。 ! CR855: メッセージ 1305(広域変数 ‘%s’ は ‘const’ と宣言されていますが、‘static’ とも ‘extern’ とも指定されていません。- C では、これは ‘extern’ を意味します。しかし C++ では ‘static’ を意味します。)が、配列の宣言に対しても出力されるようになりました。 ! CR862: 以下のメッセージについて、ファイルまたは関数の終端から定義された位置へと、 メッセージ出力位置を変更しました。 554 ‘static %s()’ が使われていますが定義が与えられていません。 612 オブジェクト ‘%s’ のサイズが 32767 バイトを超えます。- プログラムは ISO 規格に適 合していません。 620 変数 ‘%s’ は暗黙的に初期化されません。サイズが不明だからです。 1306 ‘%s’ に対する複数の一時的定義があります。- C では動作しますが、C++では動作 しません。 3202 ラベル ‘%s:’ はこの関数では使用していません。削除できます。 3203 変数 ‘%s’ を設定しましたが、その後使用していません。 3218 ファイル有効範囲にある静的変数 ‘%s’ は一つの関数からしかアクセスされていま せん。 3408 ‘%s’ は外部から見えます。 ! CR865: メッセージ 2547(タグ ‘%s’ を使うことによってよりグローバルな宣言を隠していま す。)が、union タグや enum タグだけではなく、struct タグに対しても出力されるようになり ました。 ! CR867: 関数の戻り値の型がないものや、return 文が存在しないか正しくないものに対す るメッセージが連携して動作するようになり、少ないメッセージ出力で済むようになりました。 ! 戻り値を指定せずに関数が定義された(‘int’ と仮定される)場合: ‘return;’ を検出すると メッセージ 3113 が出力され、return 文が存在しないとメッセージ 3114 が出力されます。 ! 関数が ‘void’ 型で定義された場合: ‘return 式;’ を検出するとメッセージ 746 が出力さ © 2003 Programming Research Limited / (株)東陽テクニカ 11 れます。 ! 関数が ‘void’ 型以外の型を返す場合: ‘return;’ を検出するとメッセージ 1325(C++との 互換性に関する警告)とメッセージ 745 が出力され、return 文が存在しないとメッセージ 744 が出力されます。 ! 関数内に ‘return;’ と ‘return 式;’ が混在している場合、更にメッセージ 754 が出力され ます。 ! 関数内に複数個の return 文が含まれている場合、メッセージ 2006 が出力されます。 ! CR871: メッセージ 776~779(内部/外部識別子名がユーザ定義/ISO 限界の文字数の 範囲内で一致)は、各識別子が検出された最初の 1 回のみ出力されるようになりました。 ! CR871: メッセージ 776 と 778 は、コンパイラ・パーソナリティに属する -strict オプションを オフにしても抑止されなくなりました。これらのメッセージを抑止する場合には、メッセージ・ パーソナリティで抑止する通常の方法を用いて下さい。 ! CR880: メッセージ 3308(‘%s()’ は ‘static’ と宣言されました。しかしどこにも定義がありま せん。この宣言は冗長です。)が、ヘッダ・ファイル内の宣言に対しては抑止されてしまう問 題を修正しました。 ! CR881: 新しいメッセージ 3219(static 関数 ‘%s()’ は、この翻訳単位内で使用されていま せん。)が追加されました。 ! CR883: メッセージ 3210(グローバルな識別子 ‘%s’ は宣言されましたが使用されていませ ん。)が、構造体の使用されていないメンバに対して、他のメンバが使用されているにもか かわらず出力されてしまう問題を修正しました。 6.6. リテラル ! CR744: 接尾辞の付いたリテラル定数が誤ったデータ型として解釈されてしまう(例: unsigned int のはずが long )問題を修正しました。 ! CR798: メッセージ 3324(符号無しの値は常にゼロかゼロ以上です。このテストは常に真に なります。)が、符号無しの値をゼロと比較する際に誤って出力されていた問題を修正しま した。 ! CR809: (QA C 4.4.2 で解釈をサポートするようになった)2 進数定数に対し、新しいメッ セージ 246(2 進数定数は一部のコンパイラでのみ使用できます。)が追加されました。. ! CR818: 新しいメッセージとして、文字列リテラルの直接使用に対するもの(メッセージ 3122)と文字定数の直接使用に対するもの(メッセージ 3123)が追加されました。 ! CR861: ビットフィールドのサイズを定義するのに使用される定数に対してはメッセージ 3120 は出力されなくなり、この状況を検出するために、新しいメッセージ 3131(ビットフィー ルドの大きさの指定に ‘%s’ が直接使用されています。)が追加されました。 ! CR882: int 型以外の定数に対して、メッセージ 1271(int 型以外の式を使用しても、列挙 定数の型は変更されません。)が出力されない問題を修正しました。 6.7. 変換 ! CR611: 符号無しデータの汎整数拡張に関係する式に対して、メッセージ 4130(符号付き データに対するビット単位の演算は未定義の結果になります。)の出力を抑止するように改 良しました。 © 2003 Programming Research Limited / (株)東陽テクニカ 12 ! CR725: メッセージ 3892(明示的なキャストは他の型への暗黙的なキャストです。)が、void * 型にキャストされた式への代入や比較に対しては出力されなくなりました。 ! CR739: 符号無しデータの汎整数拡張に関係する式に対して、メッセージ 502(符号付き データに対する右シフトは、算術型と論理型の両方の可能性があります。)の出力を抑止 するように改良しました。 ! CR679: 関数呼び出しの実引数が一致しない状況が検出された場合、以下の新しいメッ セージが出力されます。 1331: 実引数の型か個数が、この関数の前の使用時と異なります。 1332: 実引数の型か個数が、この後で見つかる関数プロトタイプと異なります。 1333: 実引数の型か個数が、この後で見つかる関数定義と異なります。 ! CR829: 整数型と浮動小数点型との間の暗黙の変換に関するいくつかの問題が解消され ています。(メッセージ 3700~3831、3900~4031) ! CR843: 符号付きデータと符号無しデータとの間の暗黙の変換に関するいくつかの問題が 解消されています。(メッセージ 3700~3831、3900~4031) ! CR845: 単なる char データが関係する暗黙の変換に関するいくつかの問題が解消されて います。(メッセージ 3700~3831、3900~4031) ! CR851: 汎整数拡張と実引数拡張について完全な範囲で識別するための新しいメッセー ジが導入されました。既存のメッセージ 2100, 2101 と新しいメッセージ 2102~2107 が汎 整数拡張を扱い、メッセージ 2110~2118 がデフォルトの実引数拡張に対して出力されま す。 ! CR856: 浮動小数点定数のバランシングに関係する式において、メッセージ 1262 が正しく 出力されない問題を修正しました。 ! CR858: 新しいメッセージ 1274/1275(接尾辞が付いていない/付いた浮動小数点型リテ ラルが、他のオペランドの暗黙的なキャストを引き起こします。)が追加されました。 ! CR858: 新しいメッセージ 1276(整数型リテラルが、代入の前に暗黙的に浮動小数点型へ キャストされます。)が追加されました。 ! CR859: メッセージ 1260(整数型リテラルが、暗黙的に浮動小数点型へキャストされます。) は、明示的なキャストに対しては出力されなくなりました。 ! CR874: 暗黙的キャストに関するメッセージ(3700 番台)が、リテラル定数の変換に関する メッセージ(1250~1276)と重複する場合には出力されなくなりました。 6.8. 文 ! CR695: メッセージ 402(副作用完了点の間で、‘%s’ が変更され、アクセスされています。評価の順番は未定義です。)が、括弧付きの代入(‘(a) = a;’)に対して正しく出力されない 問題を修正しました。 ! CR695: メッセージ 402(副作用完了点の間で、‘%s’ が変更され、アクセスされています。評価の順番は未定義です。)が、配列型の実引数が関係する式の一部で正しく出力され ない問題を修正しました。 ! CR747: メッセージ 3217(ローカル変数のアドレスがそのメモリが開放された後も維持され る静的変数に代入されています。)は、広域変数から関数の static 変数への代入時には © 2003 Programming Research Limited / (株)東陽テクニカ 13 出力されなくなりました。 ! CR788: メッセージ 3112(この文は何の副作用もありません。- 削除できます。)は、volatile オブジェクトに対しては出力されなくなりました。 ! CR839: メッセージ 404(副作用完了点の間で2つ以上のデータ・アイテムが変更されるか もしれません。- データがオーバーラップすると危険です。)が、メッセージ 402(副作用完 了点の間で、‘%s’ が変更され、アクセスされています。- 評価の順番は未定義です。)の かわりに誤って出力される問題を修正し、メッセージ 404~406 は廃止されました。 6.9. 式 ! CR722: 配列終端の 1 つ先の要素アドレスを取得した場合には、メッセージ 3680(配列の 領域外を指しています。)は出力されなくなりました。このアドレスの内容を参照した場合に は、新しいメッセージ 3683(配列の終端の 1 つ先の要素の位置を指しています。)がその 危険性を指摘します。 ! CR761: メッセージ 3344(値のテストは明示的に行うべきです。)が、条件演算子(‘? :’)の 最初のオペランドに対しても出力されるようになりました。 ! CR789: 新しいメッセージ 4131(符号付きのオペランドを左シフトしています。)が追加され ました。 ! CR790: メッセージ 500(シフト演算子の右オペランドが負の値です。- これは定義されてい ません。)とメッセージ 501(シフト演算子の右オペランドが大きすぎます。- これは定義され ていません。)が正しく出力されない問題を修正しました。 ! CR797: メッセージ 4130(符号付きデータに対するビット単位の演算は未定義の結果にな ります。)が、‘signed short’ 型に対しても出力されるようになりました。 ! CR838: メッセージ 556(代入の左オペランドは変更可能なオブジェクトでなければなりませ ん。)が、ポインタを介して定数を変更しようとした場合にも出力されるようになりました。 ! CR873: メッセージ 3322(否定 ‘!’ のオペランドが定数です。)が、 ‘#define TRUE (!FALSE)’ のような定数 0 または 1 に対しては出力されなくなりました。 ! CR875: メッセージ 4108/4109(論理演算子の左側/右側のオペランドが算術式です。)と 4111/4112(関係演算子の右側/左側のオペランドが論理式です。)が、オペランドとして 式だけでなく単純な変数に対しても出力されるようになりました。 ! CR875: 新しいメッセージ 4113(関係演算子の両側のオペランドが論理式です。)が追加さ れました。 6.10. 制御文 ! CR650: ‘for’ ループの増分式で使用されている変数がループ本体の中で初期化されて いる場合に、メッセージ 3321(変数 ‘%s’ は、この時点では設定されていないかもしれませ ん。)が誤って出力されてしまう問題を修正しました。 ! CR724: ループ制御変数に対するチェック(2460 番台のメッセージ)が、構造体の要素に 対しては出力されなくなりました。 ! CR815: switch 文の case ラベルの後に空のブロックがある場合、そのブロックの後の、次 の case の前にある行で、メッセージ 3201(この文には到達できません。)が誤って出力され てしまう問題を修正しました。 © 2003 Programming Research Limited / (株)東陽テクニカ 14 ! CR819: メッセージ 2003(空でない case は明示的な break で終わるべきです。)が、switch 文の default ラベルに対しては出力されない問題を修正しました。 6.11. データフロー ! CR787: メッセージ 3321(変数 ‘%s’ は、この時点では設定されていないかもしれません。) が、共用体のメンバに対して誤って出力されてしまう問題を修正しました。 ! CR850: メッセージ 3204(変数 ‘%s’ を1度しか設定していません。- それが決して変わらな いことを示すために ‘const’ を使用することを考慮するべきです。)が、 定数値による代入 の場合にのみ出力されるようになりました。 6.12. メトリックス ! CR836: STCDN(コメント密度)メトリックスが、 ファイル内のどの位置にあるコメントをカウン トするかの設定に応じて正しく算出されるようになり、コメントのカウント対象を設定するオプ ション -comment が、アナライザ・パーソナリティに加わりました。 6.13. 設定 ! CR699: 新しい設定オプション(-intrinsictype)で、size_t, ptrdiff_t, wchar_t の各々の実装 定義型のサイズを指定できるようになりました。これらの実装定義型の設定がソースコード 内の typedef と矛盾する場合には、新しいメッセージ 40~42 が出力されます。 ! CR824: ユーザが設定したメトリックス境界値を、-threshold オプションで設定できるように なりました。境界値を超えた場合には、予め指定したユーザ・メッセージまたは新しいメッ セージ 4700(メトリックス %s の値が境界値を超えています。)が出力されます。 ! 現在の qac のパラメータを明らかにするための新規オプション (-set+) が追加されました。 ! UNIX と PC の qacmet.txt ファイルをマージしました。 ! 解析後の処理の構成へ、パーソナリティ設定を示す%P を追加しました。 © 2003 Programming Research Limited / (株)東陽テクニカ 15 7. インターフェースの インターフェースの改良点と 改良点と新機能 CR で始まる番号は、PRL 社の管理番号です。 ! QA C の PC 版との機能と用語の統一性を向上するため、メニューの配置を変更しました。 以下に、一部の例を示します。 o 「オプション」メニュー項目を「構成」に変更しました。 o 「サブ・プロジェクト」は「フォルダ」として参照されるようになりました。 o 「プロジェクトの編集」を「フォルダ・パラメータ」に変更しました。 o 「フォルダ・パラメータ」ダイアログからパーソナリティ・ファイルを編集するためのショート カット・ボタンを新設しました。 o 新しいオプションとして「プリプロセス済みソースの表示」を追加しました。 o 新しいオプションとして「.met ファイルの表示」を追加しました。 o ポップアップメニュー[変更をサブフォルダへ反映]によって、フォルダ設定の変更を全 サブフォルダへ反映させることが可能になりました。 o メインメニュー項目の配置と構成を改善しました。 o errdsp と prjdsp で出力ファイルの名前指定をするための新しいオプション -file が追加 されました。 ! パーソナリティ・ファイルの位置を、フォルダ・パラメータを指定することで宣言することがで きるようになりました。 ! 出力ファイルのディレクトリ位置が、アナライザ・パーソナリティでなく、フォルダ・パラメータ として指定できるようになりました。QA C の以前のバージョンで生成されたプロジェクトを読 み込んだ場合は、出力ファイル・パスが ‘.’ に設定されます。 ! プロジェクトレベルの構成と一般の構成を変更しました。 ! メッセージ・パーソナリティ: o メッセージ・パーソナリティにおける抑止するメッセージの表示方法を改善し、リスト・ ボックスではなくツリー構造にしました。 o ヘルプ・ファイルの位置の指定が、-usrpath で設定できるようになりました。 o MISRA Compliance Module が、メッセージ・パーソナリティ・ファイルから直接設定でき るようになりました。 o 解析後の処理が、GUI から設定できるようになりました。 o 抑止されたメッセージ・オプション、または選択されたメッセージ・オプションとしての保 存を受け付けることができるようになりました。 o パーソナリティ編集ダイアログの[別名保存…]ボタンにより、編集中のパーソナリティを 別の名前で保存できるようになりました。 ! アナライザパーソナリティ: © 2003 Programming Research Limited / (株)東陽テクニカ 16 o ユーザ定義のメトリック境界値を指定できるようになりました。 o #pragma ブロックの設定が、コンパイラ・パーソナリティからアナライザ・パーソナリティに 移されました。 o 出力パスの設定が、アナライザ・パーソナリティからフォルダ・パラメータに移されました。 o アナライザパーソナリティ項目のレイアウトを変更しました。(C456) o マクロ定義オプション(アナライザ/コンパイラパーソナリティ)はクォーテーションで囲ま れます。 (例 -D”sfr=unsigned int”) (C696) ! コンパイラ・パーソナリティ: o システム・ヘッダの設定が、アナライザ・パーソナリティだけでなくコンパイラ・パーソナリ ティでもできるようになりました。 o #pragma ブロックの設定が、コンパイラ・パーソナリティからアナライザ・パーソナリティに 移されました。 o 型のサイズとアライメントを設定する機能が向上しました。 o マクロ定義オプション(アナライザ/コンパイラパーソナリティ)はクォーテーションで囲ま れます。 (例 -D”sfr=unsigned int”) (C696) ! カスタム・レポート: o 新しい機能で、「構成」-「オプション」メニューで指定します。 o 「レポート」メニューから起動します。 o 構成のオプションにカスタムレポートセクションを追加し、レポートメニューに追加しまし た。 ! 新しいヘルプ・オプション: o メッセージ・ヘルプと C 言語ヘルプが加わりました。 ! 関係図は全てのインクルードされたファイルと連結、マージされるようになりました。 ! 関係図でファンイン/ファンアウト機能が拡張されました。 ! 外部の HTML ブラウザが以下の表示用に設定できるようになりました。 o ヘルプ・ページ o メッセージの説明 o 宣言のクロス・チェック o 警告リスト・レポート o カスタム・レポート © 2003 Programming Research Limited / (株)東陽テクニカ 17 8. その他 その他の改良点と 改良点と新機能 CR で始まる番号は、PRL 社の管理番号です。 ! CR1023 絶対パスで指定されたインクルード・ファイルの検索に失敗する問題を修正しまし た。 ! CR1033 パーソナリティの定義を編集すると、-D オプションのダブル・クォーテーションが 外れてしまう問題を修正しました。 ! CR1071: enum への int でキャストした代入がある場合に、解釈に失敗していた問題を修正 しました。 ! CR1092: 環境変数 $VALUE が、プロジェクト・ファイルで使用できるようになりました。 ! CR1093: .qacrc ファイルを扱う能力が向上しました。 ! CR1094: デモグラフィック・ブラウザに以下の変更を加えました。 o グリッド線が追加されました。 o バーが存在しなくても、範囲が表示されるようになりました。 o 範囲を示す % の値が、空のバーを表示するように更新されました。 o タイトルが、.prm ファイルから読み込まれるようになりました。 o qac.met が .kiv ファイルの代わりに使用されるようになりました。 ! CR1094: メトリックス・ブラウザに以下の変更を加えました。 o デモグラフィック・ファイルが、メトリックスから生成されるようになりました。 o 関数構造図にジャンプできるようになりました。 o 指定したメトリックに対して、タイトル・バーが追加されました。 o メニューが、PC 版のメニューに合わせて変更されました。 ! CR1095: パーソナリティ・ダイアログ・ボックスの構成を改善するために、タブが追加されま した。 ! CR1095: パーソナリティ・ダイアログ・ボックスのサイズが変更可能になりました。 ! CR1152: ステータス・ウィンドウの機能向上で、解析時間が短縮されました。GUI から各 ファイルの解析時にプロジェクト内の全ソースファイル、.met/.err ファイルを誤ってオープ ンしていたのを修正しました。 ! CR1170: -forceinclude オプションで指定された追加インクルード・ファイルに対して、 #include パス指定に関するメッセージが出力されてしまう問題を修正しました。 ! CR1172: 前処理指令の式の評価が誤っていた問題を修正しました。 ! CR1174: インライン・アセンブラ文 “asm()” が或る状況下で解釈の誤りを引き起こす問題 を修正しました。 ! CR1177: enum を返す関数へのポインタを指す場合に解釈が異常終了してしまう問題を修 正しました。 © 2003 Programming Research Limited / (株)東陽テクニカ 18 ! 以前のバージョンで使用されていたライセンス機構が、新しく FLEXlm ライセンス・ソフト ウェアに置き換えられました。 © 2003 Programming Research Limited / (株)東陽テクニカ 19 9. 既知 既知の の問題 NO 1 OS LANG 問題内容 対策 プロトタイプ宣言されている行より前に定義さ れている関数で、プロトタイプ宣言の関数が使 用されている場合に、失敗:未定義の反応(プ リプロセス中断)となります。 不具合として PRL に報告いたし ましたが、残念ながら現時点で は回避することができません。 例: 関数 boo は、5 行目で宣言されていますが、3 全プラット SJIS/ 行目で関数 foo が関数 boo を呼び出していま フォーム EUC す。 1:void foo(void) 2:{ 3: boo(); 4:} 5:int boo(void); フォルダ名やパス名に、0x8ea1 ~ 0x8edf ま での 63 種類の文字を使用すると QAC は解 析を失敗します。 2 全プラット SJIS フォーム 具体例: 治爾璽痔磁示而耳自蒔辞汐鹿式識 鴫竺軸宍雫七叱執失嫉室悉湿漆疾質 実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮 社紗者謝車遮蛇邪借勺尺杓灼爵酌釈 オンラインヘルプで日本語のヘルプを表示す ると文字化けをおこす場合があります。 3 GUI のヘルプブラウザで文字化けが報告され UNIX 全 SJIS/ ています。 般 EUC EUC の場合、「ォ」や「制」が文字化けします。 例:「デフォルト」→「デフェ c)ルト」、「制御」 →「凄 c)」など SJIS の場合、「か」や「見」が文字化けします。 © 2003 Programming Research Limited / (株)東陽テクニカ 不具合として PRL に報告いたし ましたが、残念ながら現時点で は回避することができません。 恐れ入りますが、0x8ea1 ~ 0x8edf までの 63 種類の文字を フォルダ名やファイル名に使用 しないで下さい。 恐れ入りますが、外部の HTML ブラウザをご使用ください。 設定は以下の通りです。 1.xqac コマンドで QAC の GUI を起動する。 2.プルダウンメニュー「構成」-> 「オプション」->「HTML ブラウザ の指定」を選択して、ご使用の HTML ブラウザの起動コマンド を入力してください。 20 NO OS LANG 問題内容 対策 「表示」->「関数メトリックス」、「表示」->「ファイ ルメトリックス」の操作で表示されるメトリックブ ラウザのプルダウンメニューと画面右上に表示 されるメトリックス名が英語で表示されます。 4 UNIX 全 SJIS/ 般 EUC EUC 用と SJIS 用の qacmet.txt を、ロケールに合わせて英語版 の qacmet.txt と入れ替えると日 本語表示できます。 メトリックス表示はデフォルトで英 語です。メトリックス名等を日本 語表示したい方はお手数です が、以下の手続きを実施してくだ さい。 1.ご使用になるロケールを決定 してください。QA C では、ロ ケール毎の qacmet.txt を用意し ています。 EUC 用の qacmet.txt は、 qacmet.jp.euc.txt です。 SJIS 用の qacmet.txt は、 qacmet.jp.sj.txt です。 2.$QACBIN へチェンジディレ クトリしてください。 3.qacmet.txt を qacmet.txt.org にリネームしてください。 4.qacmet.jp.euc.txt または qacmet.jp.sj.txt を qacmet.txt に リネームしてください。 5.ファイル名の変更が終了した ら、QA C を起動してください。 6 デモグラフィック画面で、タイトルとメニュー内 UNIX 全 SJIS/ のメトリックス名は英語で表示されます。 般 EUC QA C4.5.3J のデモグラフィック 画面のタイトルは英語で表示さ れます。 GUI のプルダウンメニュー「レポート」から選択 で作成されるレポートは英語で表示されま す。・警告リスト・未使用外部変数・識別子宣 UNIX 全 SJIS/ 言・近似名の解析・外部クロスリファレンス・ 般 EUC COCOMO コストモデル・カスタム・レポートな ど。 QA C4.5.3J のレポート機能はす べて英語での提供となります。 SJIS ロケールで UNIX 版 QA C の v_callcheck を実行した出力のエラーメッセー ジが文字化けします。 ただし、警告メッセ-ジは文字化けしません。 この問題は GUI でもコマンドラインでも発生し ます。 不具合として PRL に報告いたし ましたが、残念ながら現時点で は回避することができません。 7 8 UNIX 全 般 SJIS © 2003 Programming Research Limited / (株)東陽テクニカ 21 10. FAQ 集 NO 1 OS UNIX 全般 LANG 質問 対策 外部エディタを設定しました QA C は外部エディタ起動時 xterm を使用して が、日本語を表示できません。 います。そのため、起動された外部エディタは 日本語を扱えません。 日本語を正しく表示させるためには、 $QACBIN/Xqac を編集して日本語を扱える ターミナルを起動するように変更してください。 SJIS/ 編集個所は、Xqac の1行目です。 EUC Xqac*app_xterm: xterm<-修正 OS により使用している日本語ターミナルがこと なるため、ご使用の環境にあったターミナル起 動コマンドを入力してください。 正常に印刷できません。 2 3 4 HP-UX SJIS/ EUC 旧バージョンの解析オプション ファイルを使用して解析を実施 しましたが、エラーになりまし 全プラット SJIS/ た。 フォーム EUC 全プラット SJIS/ フォーム EUC ライセンスが取得できないた め、QA C が使用できません。 プリンタの機種によっては特殊なオプションを 追加しなければならない場合があります。 プリンタの機種にあわせた特殊なオプションを x_print.sh スクリプトのlpコマンドのオプションに 追加してください。 詳細は、ss_support@toyo.co.jp にお問い合わ せください。 解析オプションの指定で、値の設定を必要とするオ プション(+,-以外の設定が必要なオプション)で は、オプションと設定値の間にスペースを入れること が必須になりました。 QA C4.5.x より以前のバージョンで使用していた QA C 解析用オプション設定ファイルをご使用の ユーザは、オプションと設定値の間に空白を挿入し てください。 ライセンスサーバとクライアントのマシンタイムが 極端に異なる(約一日以上)場合、ライセンスを 取得できなくなります。 ライセンスサーバとクライアントマシンのマシン タイムを合わせてください。 © 2003 Programming Research Limited / (株)東陽テクニカ 22 NO 5 OS LANG 質問 対策 QA C の旧バージョンと同じ QA C4.5.3J から、メッセージのグループが変 メッセージグループを使用して わりました。 解析したい。 QA C4.x のバージョンと同じメッセージグルー プを使用したい場合は、qac.usr.jp.sj.mcm また は qac.usr.jp.euc.mcm を、ユーザメッセージ ファイルとして設定してください。 全プラット SJIS/ このファイルは、QA C4.5.3J をインストールした フォーム EUC ディレクトリの下のbinにあります。 ユーザメッセージファイルの設定方法は、QA C ユーザーズガイド(QAC4.5.3J/Docs/QAC4.5.3J-UNIX-UsersGuide.pdf)の付録 B 構成 オプションの-usrpath 及び-usrfile をご参照く ださい。 © 2003 Programming Research Limited / (株)東陽テクニカ 23 テクニカへのお へのお問合 問合せ せ 11. 株式会社東陽テクニカ 株式会社東陽テクニカ へのお 問合 株式会社東陽テクニカは、Programming Research 社の日本国内における総代理店です。 日本国内でのお問合せについては、株式会社東陽テクニカへお願いします。 株式会社 東陽テクニカ ソフトウェア・ソリューション 郵便番号 住所 電話 FAX E-Mail(営業窓口) 〒103-8284 東京都中央区八重洲 1-1-6 03-3245-1248 03-3246-0645 ss_sales@toyo.co.jp E-Mail(サポート窓口) ss_support@toyo.co.jp 問合せ せ 12. Programming Research Limited へのお問合 へのお問合 以下に示す Programming Research Ltd.の本社に直接お問合せいただくこともできます。 電話 +44 (0) 1 932 888 080 FAX +44 (0) 1 932 888 081 e-mail support@programmingresearch.com 保証の の免責 13. 保証 和文: Programming Research Ltd.では、作成時に細心の注意を払って本書を正確に記述することに努 めておりますが、本書内の誤りや欠落に関する責任は負いかねます。また、本書内の記述通りに 製品が動作することを表現かつ意味する保証書として作成された文書ではないことをお断りして おきます。 英文: The staff of Programming Research Ltd. have taken due care in preparing this document which is believed to be accurate at the time of printing. However, no liability can be accepted for errors or omissions nor should this document be considered as an expressed or implied warranty that the products described perform as specified within. © 2003 Programming Research Limited / (株)東陽テクニカ 24 著作権について について 14. 著作権 和文: 本書には著作権があり、全体または一部を問わず、どのような方法(電子的またはその他)によっ ても、Programming Research Ltd.の文書による事前の承諾なしには、複製、再生、公開、転記、翻 訳、縮小を行うことはできません。 英文: This document is copyright and may not, in whole or in part be copied, reproduced, disclosed, transferred, translated, or reduced to any form, including electronic medium or machinereadable form, or transmitted by any means, electronic or otherwise, unless Programming Research Ltd. consents in writing in advance. 15. 商標 QA C++, QA Fortran, QA Manager は、Programming Research Ltd.の商標です。 MISRA は、 MISRA Consortium を代表して運営する The Motor Industry Research Association の登録商標で す。PR:QA と PR:QA ロゴは、Programming Research Ltd.の登録商標です。QA C, Microsoft と Windows は、Microsoft Corporation の登録商標です。UNIX は、UNIX System Laboratories, Inc. の登録商標です。 本書内に示した他の全ての製品やサービスには、それらを販売する企業で選定された商標、サー ビスマーク、製品名が含まれます。 © 2003 Programming Research Limited / (株)東陽テクニカ 25 付録A. 付録 A. 警告 番号 40 41 42 180 246 277 310 339 428 488 551 634 660 662 689 693 694 695 696 697 722 723 769 770 780 832 838 839 841 842 861 862 878 880 881 889 890 891 906 1018 追加された 追加されたメッセージ されたメッセージ メッセージ size_t の定義が設定された型と異なります。 ptrdiff_t の定義が設定された型と異なります。 wchar_t の定義が設定された型と異なります。 [S] 変換指定子 %s に ll を使用することは ISO C では正当ではありません。 2 進数定数は一部のコンパイラでのみ使用できます。 符号無しのキャストを負の値に対して行っています。 異なるポインタ型へのキャストです。 8 進定数の使用は 推奨されていません。 おそらく関数に () を付け忘れています。 ポインタ算術を行っています。 代入演算子の左オペランドに キャストをしてはなりません。 ビットフィールドは、unsigned または signed として明示的に宣言するべきです。 構造体/共有体のメンバーに名前がありません。 名前無しの構造体の要素にアクセスするために、拡張された構文を使用しています。 初期化子が飛び越されるか、全く使用されていない可能性があります。 構造体初期化子に、 オプションの { がありません。 配列初期化子に、 オプションの { がありません。 sizeof に与えた型が malloc のキャストに使われている型と適合しません。 malloc された大きさが、ポインタの指す型の大きさより小さいです。 malloc されたデータの大きさは示された型の大きさの積として正しい値になっていません。 前の列挙定数は、 明示的に値が代入されました。 この列挙子並びでは、 なにも初期化しないか、最初だけ初期化するか、 全てを初期化してくださ い。 break 文は switch 文の中でのみ使用されるべきです。 continue 文は使用するべきではありません。 %s と名づけられた識別子は 他の名前空間でも宣言されています。 #include 前処理指令の中の マクロ代替です。 ファイルは既にトップレベルで インクルードされています。 ファイルは前の include の中で インクルードされました。 プログラミング標準の中には #undef の使用を推奨していないものがあります。 マクロは、ブロック内で#define したり#undef したりしないで下さい。 <%s> の内容はソースの中で 参照されません。 "%s" の内容はソースの中で 参照されません。 ワイド文字または 文字列リテラルを使用しています。 [U] # と ## 演算子の評価の 順序は未定義です。 [U] 複数の ## 演算子の 評価順序は未定義です。 既に#undef されている識別子を #undef しています。 既に(ネストされた #if で)#undef されている識別子を#ifdef しています。 既に#undef されている識別子を #ifdef しています。 [U] 基本ソース文字集合内に無い文字が使われています。 [S] 接尾語'LL'は、ISO C に対する拡張仕様です。 © 2003 Programming Research Limited / (株)東陽テクニカ 26 警告 番号 1019 1020 1021 1022 1023 1024 1025 1026 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1271 1272 1273 1274 1275 1276 1330 1331 1332 1333 1400 1401 1402 1403 メッセージ [S] '@ address'は、ISO C ではサポートされていません。 '__typeof__' は正当な ISO C の 字句(トークン)ではありません。拡張として扱われます。 式の中の文は ISO では有効ではありません。 拡張とみなされます。 '__alignof__' は ISO C 字句として 有効ではありません。拡張とみなされます。 [C] 関数型に対する '__alignof__'は違法です。 [C] 不完全型に対する '__alignof__'は違法です。 [C] ビットフィールドに対する '__alignof__'は違法です。 [S] この '@ word'は無視されました。 接尾辞が付いていない整数型リテラルが、他のオペランドの暗黙的なキャストを引き起こします。 接尾辞が付いた整数型リテラルが、他のオペランドの暗黙的なキャストを引き起こします。 接尾辞が付いた整数型リテラルが、暗黙的に他の型へキャストされます。 接尾辞が付いていない整数型リテラルが、暗黙的に他の型へキャストされます。 リテラルの接尾辞が、整数定数の結果の型と一致しません。 接尾辞が付いていない整数型リテラルが、int 型ではありません。 接尾辞が付いた整数型リテラルが、代入の前に暗黙的にキャストされます。 接尾辞が付いた整数型リテラルが、代入の前に暗黙的により小さな型へキャストされます。 接尾辞が付いた整数型リテラルが、明示的に他の型へキャストされます。 接尾辞が付いていない整数型リテラルが、明示的に他の型へキャストされます。 整数型リテラルが、暗黙的に浮動小数点型へキャストされます。 接尾辞が付いた浮動小数点型リテラルが、暗黙的に他の型へキャストされます。 接尾辞が付いていない浮動小数点型リテラルが、暗黙的に他の型へキャストされます。 浮動小数点型リテラルは 他の整数型オペランドの暗黙的なキャストを引き起こします。 接尾辞が付いた浮動小数点型リテラルが、代入の前に暗黙的にキャストされます。 接尾辞が付いていない浮動小数点型リテラルが、代入の前に暗黙的にキャストされます。 浮動小数点型リテラルは 代入の前に整数型へキャストされます。 接尾辞が付いた浮動小数点型リテラルが、明示的に他の型へキャストされます。 接尾辞が付いていない浮動小数点型リテラルが、明示的に他の型へキャストされます。 浮動小数点型リテラルが、明示的に整数型へキャストされます。 非 int 型の式を使用しても、列挙定数の型は変更されません。 数字のリテラルの先頭にゼロを付けても それ自身の型に影響を与えません。 リテラル定数が、意図した型よりも大きすぎます。 接尾辞が付いていない浮動小数点型リテラルが、他のオペランドの暗黙的なキャストを引き起こし ます。 接尾辞が付いた浮動小数点型リテラルが、他のオペランドの暗黙的なキャストを引き起こします。 整数型リテラルが、代入の前に暗黙的に浮動小数点型へキャストされます。 関数定義で使用されている仮引数識別子が、関数プロトタイプのものと異なります。 実引数の型か個数が、この関数の前の使用時と異なります。 実引数の型か個数が、この後で見つかる関数プロトタイプと異なります。 実引数の型か個数が、この後で見つかる関数定義と異なります。 列挙型に無い列挙定数と等価比較を しています。 渡された実引数は 列挙型に無い列挙定数です。 列挙型に無い列挙定数の 代入です。 列挙型に無い列挙定数が 返されています。 © 2003 Programming Research Limited / (株)東陽テクニカ 27 警告 番号 1404 1410 1411 1412 1413 1414 1420 1421 1422 1423 1424 1431 1432 1433 1440 1441 1442 1443 1444 1460 1461 1470 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 2102 2103 2104 2105 2106 2107 2110 2111 メッセージ 列挙型に無い列挙定数を 比較しています。 列挙型が期待されている所で リテラルと等価比較をしています。 列挙型が期待されている所で リテラルが実引数として渡されています。 列挙型が期待されている所で リテラルが代入されています。 列挙型が期待されている所で リテラルが返されています。 列挙型が期待されている所で リテラルが比較されています。 異なる型の列挙オブジェクトとの 等価比較をしています。 異なる型の列挙オブジェクトが 実引数として渡されています。 異なる型の列挙オブジェクトの 代入です。 異なる型の列挙オブジェクトが 返されています。 異なる型の列挙オブジェクトの 比較をしています。 列挙型が期待されていない所で 列挙型が実引数として渡されています。 列挙型を非列挙型へ 代入しています。 列挙型を非列挙型へ 返しています。 列挙型と非列挙型を 等価比較しています。 列挙型が期待されている所で 非列挙型を実引数として渡しています。これは 値域を超える可能 性があります。 非列挙型を列挙型へ代入しています。 これは値域を超える可能性があります。 非列挙型を列挙型へ返しています。 これは値域を超える可能性があります。 非列挙型と列挙型の比較です。 switch 文の名札の値である %s は 列挙型に含まれていません。 値は列挙型にありませんが、 型の列挙定数をビット単位の OR 演算しています。 列挙定数ではなくリテラルが 列挙型の switch 式で使用されています。 case 名札が異なる 列挙型に属しています。 :演算子のオペランドは異なる 列挙型です。 列挙体の値に対してビット単位の 演算を行っています。 列挙型の値の取り得る範囲を考えると、このテストは常に真になります。 列挙型の値の取り得る範囲を考えると、このテストは常に偽になります。 列挙型のオブジェクトは 非シンボリック名のゼロと暗黙的に比較されています。 ゼロ値を持たない列挙型のオブジェクトが 暗黙的にゼロと比較されようとしています。 列挙されたオブジェクトに 算術が行われています。 ビット単位の演算子の オペランドは異なる列挙型です。 単項演算子が列挙型へ 適用されています。 列挙型へのキャスト式は この型で表示される表現できる範囲の値を持たない可能性があります。 列挙オブジェクトまたは 列挙定数が旧式のスタイルの関数宣言の 実引数として渡されています。 汎整数拡張 : unsigned char は unsigned int に拡張されます。 汎整数拡張 : unsigned short は unsigned int に拡張されます。 汎整数拡張 : signed char は signed int に拡張されます。 汎整数拡張 : signed short は signed int に拡張されます。 汎整数拡張 : 単なる char は signed int に拡張されます。 汎整数拡張 : 単なる char は unsigned int に拡張されます。 デフォルトの引数拡張 : unsigned char は signed int に拡張されます。 デフォルトの引数拡張 : unsigned short は signed int に拡張されます。 © 2003 Programming Research Limited / (株)東陽テクニカ 28 警告 番号 2112 2113 2114 2115 2116 2117 2118 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 3003 3131 3140 3141 3216 3217 3218 3219 3344 3404 3405 3422 3423 3424 3425 3426 3427 3428 3429 3430 3432 3433 3434 メッセージ デフォルトの引数拡張 : unsigned char は unsigned int に拡張されます。 デフォルトの引数拡張 : unsigned short は unsigned int に拡張されます。 デフォルトの引数拡張 : signed char は signed int に拡張されます。 デフォルトの引数拡張 : signed short は signed int に拡張されます。 デフォルトの引数拡張 : 単なる char は signed int に拡張されます。 デフォルトの引数拡張 : 単なる char は unsigned int に拡張されます。 デフォルトの引数拡張 : float は double に拡張されます。 制御変数 %s はブロック有効範囲を 持ちません。 制御変数 %s はこの for ループ式で 初期化されていません。 制御変数 %s は増分式に 現れません。 制御変数 %s はループヘッダで 2 度変更されています。 ループが 1 回しか実行されません。 制御変数は繰返しが行われない ことを示唆しています。 制御変数 %s は、 ループの内側で変更されません。 制御変数 %s は、ファイル有効範囲を 持ちますが、ループの内側で変更されません。 ループ本体の中で、制御変数'%s'が変更されています。 ループの制御変数 %s の 制御変数のアドレスを得ています。 ループの制御変数を 推測することができません。 ループ制御変数が複数ある可能性があります。 このトークンは疑わしい NULL ポインタ定数です。 ビットフィールドの大きさの指定に %s が直接使用されています。 コメントのない空の文が、それ自身だけで 1 行に置かれています。 空の文は、それ自身だけを 1 行に置くべきです。 代入されるオブジェクトの有効範囲が代入されるオブジェクトの有効範囲よりもより制限されていま す。 ローカル変数のアドレスがそのメモリが開放された後も維持される静的変数に代入されています。 ファイル有効範囲静的変数, '%s', は一つの関数からしかアクセスされていません。 static 関数 '%s()'は、この翻訳単位内で使用されていません。 値のテストは明示的に行うべきです。 *p++ の意味は *(p++) であり、(*p)++ ではありません。この式には副作用がありません。 Index[Array] は Array[Index] と同等ですが、より混乱を生じ易い形式です。 式文の最上位に冗長な演算子が含まれています。 式文のトップ・レベルに不要なキャストがあります。 おそらくビット演算子ではなくて、論理演算子を意図しています。 ':'演算子の片側の式に副作用がありません。 カンマ演算子の右側に副作用がなく、その値は使用されません。 論理演算子の右側に副作用がありません マクロ定義に型修飾子 '%s'が含まれています。 関数型マクロよりも関数を使用すべきです。 マクロの実引数は括弧で囲むべきです。 マクロ本体のただ一つしかない対象物を()で囲っていません。 数字マクロ本体が()で囲われていません。 リテラルマクロ本体が()で囲われていません。 © 2003 Programming Research Limited / (株)東陽テクニカ 29 警告 番号 3436 3437 3438 3439 3611 3625 3660 3661 3662 3663 3664 3670 3671 3672 3680 3681 3682 3683 3890 3891 3892 3893 3894 4113 4131 4700 メッセージ マクロ定義が宣言済みの識別子を隠蔽します。 [U] 'assert'マクロを抑制して、この名前の関数を呼べるようにしています。未定義の振る舞いを生 じます。 [U] 'assert'マクロを#undef してその名前の関数を呼べるようにすると、未定義の振る舞いになりま す。 マクロはキーワードの再定義に使用してはいけません。 単なる char と負の定数との比較には、移植性がありません。 char 型の宣言には、明示的に unsigned または signed を付けるべきです。 1 ビットの符号付きビット・フィールドは-1 と 0 を表す事が出来ます。 単なる int のビットフィールドと 0 との比較には、移植性がありません。 単なる int のビットフィールドと負の定数との比較には、移植性がありません。 名前無しビットフィールドを宣言しています。 '.'による個々のビット選択は ISO 標準に準拠しません。 この呼出しについての関数の再帰的呼出しがあります。 関数へのポインタを介した関数呼出しです。 const ではない関数へのポインタを使用しています。 [U]配列の領域外を指しています。 配列の領域外を指す可能性があります。 インデックスが要素数より大きい値を取るかもしれません。 配列の終端の 1 つ先の要素の位置を指しています。 左シフトされた式をより大きい型へキャストしています。 右シフトされた式をより大きな型へキャストしています。 明示的なキャストは他の型への暗黙的なキャストです。 左シフトされた式をより小さい型へキャストしています。 右シフトされた式をより小さな型へキャストしています。 関係演算子の両側のオペランドが論理式です。 符号付きのオペランドを左シフトしています。 メトリックス %s の値が閾値を超えています。 © 2003 Programming Research Limited / (株)東陽テクニカ 30 付録B. 付録 B. 変更された されたメッセージ 変更 された メッセージ 警告 番号 メッセージ 160 [U] %s 番目の変換指定子はサポートされていません。 161 [U] %s 番目の変換指定子'I'または'd'に未知のフラグが使われています。 162 [U] %s 番目の変換指定子'o'に未知のフラグが使われています。 163 [U] %s 番目の変換指定子'u'に未知のフラグが使われています。 164 [U] %s 番目の変換指定子'x'に未知のフラグが使われています。 165 [U] %s 番目の変換指定子'X'に未知のフラグが使われています。 166 [U] %s 番目の変換指定子'f'に未知のフラグが使われています。 167 [U] %s 番目の変換指定子'e'に未知のフラグが使われています。 168 [U] %s 番目の変換指定子'E'に未知のフラグが使われています。 169 [U] %s 番目の変換指定子'g'に未知のフラグが使われています。 170 [U] %s 番目の変換指定子'G'に未知のフラグが使われています。 171 [U] %s 番目の変換指定子'c'に未知のフラグが使われています。 172 [U] %s 番目の変換指定子'%%'に未知のフラグが使われています。 173 [U] %s 番目の変換指定子's'に未知のフラグが使われています。 174 [U] %s 番目の変換指定子'n'未知のフラグが使われています。 175 [U] %s 番目の変換指定子'p'に未知のフラグが使われています。 176 [U] %s 番目の変換指定子は未知の仕様です。 177 [U] フィールド幅が 509 文字を超えました。 178 [U] 精度幅が 509 文字を超えました。 179 [U] 変換指定子 '%s' と実引数の型が合っていません。 184 [U] %s 番目の変換指定子を満足させるための実引数が足りません。 185 [U] 変換指定子で指定した数より多くの実引数で呼び出されています。 186 [U] 少なくとも一つの実引数を使って呼び出さなければいけません。 190 [U] %s 番目の変換指定子はサポートされていません。 191 [U] %s 番目の変換指定子'd/I/n'に未知のフラグが使われています。 192 [U] %s 番目の変換指定子'o'に未知のフラグが使われています。 193 [U] %s 番目の変換指定子'u'に未知のフラグが使われています。 194 [U] %s 番目の変換指定子'x/X'に未知のフラグが使われています。 195 [U] %s 番目の変換指定子'e/E/f/g/G'に未知のフラグが使われています。 © 2003 Programming Research Limited / (株)東陽テクニカ 31 警告 番号 メッセージ 196 [U] %s 番目の変換指定子's'に未知のフラグが使われています。 197 [U] %s 番目の変換指定子'p'に未知のフラグが使われています。 198 [U] %s 番目の変換指定子'%%'に未知のフラグが使われています。 199 [U] %s 番目の変換指定子'['に未知のフラグが使われています。 200 [U] %s 番目の変換指定子'c'に未知のフラグが使われています。 201 [U] %s 番目の変換指定子は未知の仕様です。 202 [U] '[]'変換仕様の中の'-'文字は処理系に依存して定義されます。 203 [U] '[]'内の'-'の前にある文字の値が次に続く文字より大きいです。 204 [U] フィールド幅が 509 文字を超えました。 206 [U] 実引数の型が%s 番目の変換指定子と一致していません。 207 [U] 'scanf' にはデータを格納すべきオブジェクトのアドレスが必要です。 208 [U] scanset(走査文字集合:[]に囲われた文字のセット)に同じ文字が1つ以上現れています。 241 このファイルには Ctrl-Z が存在します。- これは PC から転送されたコードですか? 274 定数の値が対象の型で表現できる範囲を外れています。 280 [L] 結果は ISO で定義されている符号付きの値の範囲を超えています。 283 [L] 浮動小数点定数が、表現可能な範囲を超えています。 304 [U] 'register'として宣言された配列のアドレスを演算してはなりません。 307 [U] このキャストをポインタに対して行うことは定義されていません。 308 不完全型に対して、ポインタを含む移植性のないキャストを行っています。 308 不完全型に対して、ポインタを含む移植性のないキャストを行っています。 340 多くの K&R コンパイラは '#error'を受け付けません。 341 K&R コンパイラは ISO 文字列生成演算子 '#'をサポートしていません。 342 K&R コンパイラは ISO 文字列連結演算子 '##'をサポートしていません。 343 文字列の連結は ISO の機能です。K&R コンパイラでは機能しません。 344 K&R コンパイラは関数プロトタイプをサポートしていません。 345 旧式の K&R コンパイラは'void'を識別子として扱うでしょう。 346 %s' は ISO の予約語ですが K&R コンパイラでは認識されません。 347 K&R コンパイラは'extern'変数の初期化を許しません。 348 旧式の K&R コンパイラはビットフィールドをサポートしません。 349 単項演算子 '+' は ISO の機能です。これは全ての K&R コンパイラでサポートされているわけ ではありません。 © 2003 Programming Research Limited / (株)東陽テクニカ 32 警告 番号 350 メッセージ K&R コンパイラの中には'enum'をサポートしていないものや、正しくサポートをしないものがあ ります。 352 '#elif' は全ての K&R コンパイラがサポートしているわけではありません。 446 [C] ++/--のオペランドはスカラ(算術またはポインタ)型でなくてはなりません。 447 [C] ++/--のオペランドは変更可能なオブジェクトでなければなりません。 448 [C] サイズが不明なオブジェクトへのポインタの増分(減分)はできません。 449 [C] 関数へのポインタの増分(減分)はできません。 457 [C] アドレス演算子 '&' はビットフィールドに適用できません。 475 [u] サイズが未定義のビットフィールド式です。 476 [C] 'sizeof'はビットフィールドに適用できません。 486 [C] 整数式と適合するポインタのみがポインタから減算することができます。 502 符号付きデータに対する右シフトは、算術型と論理型の両方の可能性があります。 547 [U] このタグ '%s' の宣言は、前の宣言と矛盾しています。 588 [C] ビットフィールドの幅は整数定数式でなければなりません。 592 負の'case'ラベルは全てのコンパイラに対して移植性があるわけではありません。 625 [U] '%s'は内部リンケージと外部リンケージの両方で宣言されています。振る舞いは未定義で す。 635 [U] int 以外の型を持つビットフィールドの振る舞いは未定義です。 635 [U] int 以外の型を持つビットフィールドの振る舞いは未定義です。 644 [C] ビットフィールドの幅は'int'の幅を超えてはなりません。 645 [C]幅がゼロのビットフィールドに名前を与えることはできません。 650 [C] 関数の仮引数に違法な記憶クラス指定子が使われています。 652 [U] 識別子は関数プロトタイプの中の仮引数全てに与えるか全く与えないかどちらかであるべ きです。 661 [U] '%s()'は、ローカルに宣言されたときに記憶クラス指定子'static'を伴っていない可能性があ ります。 664 関数の仮引数に'(void)'型は使用できません。おそらく、仮引数リストを'(void)'にする意図だっ たはずです。 664 関数の仮引数に'(void)'型は使用できません。おそらく、仮引数リストを'(void)'にする意図だっ たはずです。 685 [C] 'struct'、 'union'または配列型、あるいは静的記憶期間を持つオブジェクトの初期化子は 定数式でなければなりません。 687 結合された文字列を用いて配列が初期化されていて、初期化子の数が宣言されたサイズより 小さくなっています。 © 2003 Programming Research Limited / (株)東陽テクニカ 33 警告 番号 メッセージ 688 配列のサイズが、結合された文字列を含む初期化子の数によって決定されています。 735 'switch'文の中で関係演算子や論理演算子を使うと、通常はプログラミング・エラーとなりま す。 744 [U] ' %s()'は'void'型以外の型を返すと定義されていますが、'return'文がありません。 745 %s()'は、'void'型以外の型を返すと定義されていますが、'return;'が見つかりました。 747 [u] 'void'型の関数として定義された'%s()'内で、'return 式;'が見つかりました。 754 %s()'は、'return;'と'return 式;'の両方の文を持っています。 776 [L] 外部識別子名が他の識別子名(例 '%s')と、最初の 6 文字で一致しています。- プログラム は ISO 準拠ではありません。 777 [U] 外部識別子名が他の識別子名(例 '%s')と、指定された文字数の範囲内で異なっていませ ん。 778 [L] 識別子名が他の識別子名(例 '%s')と、最初の 31 文字で一致しています。- プログラムは ISO 準拠ではありません。 779 [U] 識別子名が他の識別子名(例 '%s')と、指定された文字数の範囲内で異なっていません。 813 [U] '#include <%s>'内での' " \\ または /*の使用は未定義の振る舞いを生じます。 814 [U] '#include "%s"'内での' '\\ または /*の使用は未定義の振る舞いを生じます。 815 [L] #include <…> の名前は ISO の制約違反です。 816 [L] #include "…" の名前は ISO の制約違反です。 818 [C] '%s'を見つけることができません。適切な検索パスが設定されていないのでしょう。 819 [C] '%s'を開くことができません。適切な検索パスが設定されていないのでしょう。 820 #include'にはヘッダ名が必要です。 821 [C] '#include %s'は処理できるヘッダまたはソースファイルを特定できません。 823 [S] 予期しない #else または#elif 指令です。#else または #elif 指令は #if グループの else ブ ランチにあってはなりません。 830 [S] 前処理指令の後には空白類と改行のみを続けられます前処理指令に対する余分なテキス トを追加するにはコメントを使用して下さい。 831 この'#include'行で使われる'\\'は PC 用の拡張です。- '/'であると仮定します。この使い方は 移植性を損ねます。 845 [C] オブジェクト型マクロ '%s'を関数型マクロとして再定義しています。 855 前処理の結果が、前処理指令の形式を持つトークンの並びの中に存在します。 857 [L] マクロ定義の数が 1024 を超えています。 - プログラムは ISO 準拠ではありません。 858 [L] マクロ仮引数の数が 31 を超えています。 - プログラムは ISO 準拠ではありません。 859 [L] マクロ呼び出しの実引数の数が 31 を超えています。 869 #error'前処理指令:%s 解析が'#error'によって中止されました。 © 2003 Programming Research Limited / (株)東陽テクニカ 34 警告 番号 メッセージ 874 [U] 文字列リテラルとワイド文字列リテラルが隣接しています。 899 [C] '#'は前処理トークン内の区切子か'#define'内の演算子としてのみ使用できます。 918 ソースが複雑すぎます。この問題を東陽テクニカ(ss_support@toyo.co.jp)に連絡して下さい。 1003 [S] '#%s'はインライン・アセンブラ用の言語拡張です。 1004 [S] 対応する'#asm'前処理指令が無い '#endasm'が見つかりました。 1005 [S] '#%s'前処理指令を探している途中で、ファイルの終端に到達してしまいました。 1006 [S] このアセンブラ定数は無視されました。 1011 [S] C++コメント '//' の使用は、C 言語としては拡張仕様です。 1100 ラベル '%s' は、typedef としても宣言されています. 1301 一部の C++では '%s' は予約語です。 1303 関数型の空の仮引数並びは C++では異なる意味を持ちます。 1304 古いスタイルの関数定義'%s()' は C++への移植性がありません。 1306 '%s'に対する複数の一時的定義があります。 - C では動作しますが、C++では動作しません。 1307 名前無しの 構造体型と共用体型は C++への移行の際に移植上の問題を引き起こすかも知れ ません。 1309 C++では、typedef '%s'既に存在する 構造体タグ/共用体タグ/'enum'タグと衝突します。 1310 '%s'は同じ構造体/共用体/'enum'に対してタグ並びに typedef として使われています。 1312 この初期化されている配列は文字列初期化子の終端の'\0'を保持しません。 1314 タグ'%s'は他の構造体/共用体の中で定義されました。 1315 C++では、'static'を指定できるのはオブジェクトまたは関数だけです。 1317 列挙型に無い値です。 1318 C++では、列挙型オブジェクトに対して += 等の複合型演算子を使用することはできません。 1319 C++では、増分と減分演算子は列挙型付きのオブジェクトには適用できません。 1323 列挙型定数の sizeof は、C++では sizeof(int)とは保証されていません。 1325 '%s()'は、'void'型以外の型を返すと定義されていますが 'return;'を含んでいます。これは C++では許されません。 1327 C++では、マクロ__STDC__ の値や存在は何も保証されていません。 1328 関数宣言の中でタグ付けされた型が定義されています。 1999 外部識別子 %s のインタフェース定義ファイルは既に存在します。 2002 この 'switch' 文には 'default' ラベルがありません。 2003 空でない 'case' ラベルは明示的な 'break' 文で終わるべきです。 2004 'if'-'else'-'if'文を完結させる 'else'文が存在しません。 © 2003 Programming Research Limited / (株)東陽テクニカ 35 警告 番号 メッセージ 2006 関数'%s()' には複数の'return'文が存在します。 2008 case'ラベルまたは'default'ラベルの前に'switch'文本体のコードが存在します。 2010 関数'%s()' を呼び出してはいけません。 2100 汎整数拡張 :unsigned char は signed int に拡張されます。 2101 汎整数拡張 :unsigned short は signed int に拡張されます。 2547 タグ'%s'を使うことによってより広域な宣言を隠しています。 3002 関数'%s()'を定義する際に識別子リストと仮引数宣言を分離して記述するのは、旧式の方法で す。 3101 単項演算子 '-' を unsigned int または unsigned long に対して使用すると、結果が'unsigned' になってしまいます。 3104 #pragma '%s' は不正な実引数を持つので無視されました。 3105 #pragma ブロックが、#pragma %s によって閉じられていません。 3106 この #指令は無視されています。この#指令は#pragma %s を期待する#pragma ブロックの中に 存在します。 3108 [S] 入れ子(ネスティング)のコメントは ISO 標準では認識されないため、使用するべきではあり ません。 3110 この ','の左オペランドは何の副作用もありません。 3120 整数定数'%s'が直接使用されています。これは避けるべきです。 3121 浮動小数点型定数'%s'が直接使用されています。これは避けるべきです。 3122 文字列定数"%s"が直接使用されています。これは避けるべきです。 3123 文字定数'%s'が直接使用されています。これは避けるべきです。 3205 識別子 '%s'はその有効範囲で使用されていません。削除可能です。 3208 '%s()' は値を返しますが、無視されていることがあります。 3209 '%s()' は値を返しますが、いつも無視されています。 3210 識別子 '%s'は広域宣言されましたが使用されていません。 3211 識別子 '%s'は広域定義されましたが使用されていません。 3302 定数式での符号無しの引き算の結果が 0 を下回ったため、上位ビットが失われました。 3303 定数式での符号無しの演算の結果が最大値を超えたため、上位ビットが失われました。 3304 定数式での符号無しの掛け算の結果が最大値を超えたため、上位ビットが失われました。 3305 より制限された境界調整へのポインタキャストです。 3309 この'switch'文の条件式は定数式です。 3310 この構造体タグ'%s'の定義はまだ、与えられていません。 © 2003 Programming Research Limited / (株)東陽テクニカ 36 警告 番号 メッセージ 3311 このブロックの外側からラベル '%s' へジャンプしています。ローカルな初期化は行なわれませ ん。 3312 [U] ラベル '%s' が、そこにジャンプすると実行されないローカルな初期化文を含むブロック内 にあります。 3313 この構造体タグ'%s'の定義が見つかりません。 3316 符号無しのデータを 0 と比較するのは危険です。 3323 このループの制御条件が定数値です。 3330 関数 '%s()'が、可変個の実引数を伴って呼び出されています。 3331 [U] '%s()'の値が使用されていますが、値を返しません。この振る舞いは未定義です。 3332 この '#if…' で使用されているマクロ '%s'が定義されていません。 3333 break'文は 'switch'文の中でのみ使用されるべきです。 3334 この'%s'の宣言はより広域な宣言を隠しています。 3335 関数プロトタイプがありません。省略時解釈で'extern int %s'が挿入されます。 3336 この列挙型はまだ定義されていません。 3409 マクロ本体が()で囲われていません。 3410 マクロ仮引数が()で囲われていません。 3411 マクロ定義の中に、対になっていない角括弧または括弧があります。 3412 マクロ定義の中に、'{', '}', ';' またはキーワード予約語が含まれています。 3413 このマクロ定義は typedef に置き換えることができるはずです。 3414 マクロ定義に記憶域修飾子 '%s'が含まれています。 3415 演算子 '&&', '||', '? :' の右オペランドに副作用があります。 3416 この論理式に副作用があります。 3418 カンマ演算子が for ループのヘッダで使用されています。 3419 for'文の初期化式に副作用がありません。 3420 for'文の増分式に副作用がありません。 3607 仮引数 '%s'は関数として宣言されているので、関数ポインタに暗黙の変換が行われます。 3612 単なる char と 0 との比較には、移植性がありません。 3613 コンパイラによってはこの 8 または 9 を 8 進数定数の一部とみなします。 3616 文字定数はプリプロセッサの演算での値と実際のコードでの値が異なるかもしれません。 3617 構造体/共用体 の代入は、古いコンパイラではサポートしていません。 3621 ビットフィールドは移植性が良くありません -古いコンパイラによってはそれをサポートしないも のもあります。 © 2003 Programming Research Limited / (株)東陽テクニカ 37 警告 番号 メッセージ 3623 関数に構造体または共用体を値で渡しています。 3624 関数から構造体または共用体を値で返しています。 3651 サイズが不明な配列に typedef を使用することは予期できない結果を引き起こします。 3700 暗黙のキャスト:char から signed char。移植性のない単なる char からの型変換です。 3701 暗黙のキャスト:char から unsigned char。移植性のない単なる char からの型変換です。 3703 暗黙のキャスト:char から unsigned short。移植性のない単なる char からの型変換です。 3705 暗黙のキャスト:char から unsigned int。移植性のない単なる char からの型変換です。 3707 暗黙のキャスト:char から long。移植性のない単なる char からの型変換です。 3708 暗黙のキャスト:char から float。整数から浮動小数点への型変換です。 3709 暗黙のキャスト:char から doublet。整数から浮動小数点への型変換です。 3710 暗黙のキャスト:char から long double。整数から浮動小数点への型変換です。 3711 暗黙のキャスト:unsigned char から char。移植性のない単なる char への型変換です。 3712 暗黙のキャスト:unsigned char から signed char。符号無しから符号付きへの型変換です。 3713 暗黙のキャスト:unsigned char から short。 3715 暗黙のキャスト:unsigned char から int。 3717 暗黙のキャスト:unsigned char から long。 3719 暗黙のキャスト:unsigned char から float。 整数から浮動小数点数への変換です。 3720 暗黙のキャスト:unsigned char から double。 整数から浮動小数点数への変換です。 3721 暗黙のキャスト:unsigned char から long double。 整数から浮動小数点数への変換です。 3722 暗黙のキャスト:signed char から char。 単なる char への移植性のない変換です。 3723 暗黙のキャスト:signed char から unsigned char。 符号付きから符号無しへの変換です。 3725 暗黙のキャスト:signed char から unsigned short。 符号付きから符号無しへの変換です。 3727 暗黙のキャスト:signed char から unsigned int。 符号付きから符号無しへの変換です。 3729 暗黙のキャスト:signed char から unsigned long。 符号付きから符号無しへの変換です。 3730 暗黙のキャスト:signed char から float。 整数から浮動小数点数への変換です。 3731 暗黙のキャスト:signed char から double。 整数から浮動小数点数への変換です。 3732 暗黙のキャスト:signed char から long double。 整数から浮動小数点数への変換です。 3733 暗黙のキャスト:short から char。 より小さな型への変換。 3734 暗黙のキャスト:short から signed char。 より小さな型への変換です。 3735 暗黙のキャスト:short から unsigned char。符号付きから より小さな符号無しへの変換です。 3736 暗黙のキャスト:short から unsigned short。 符号付きから符号無しへの変換です。 © 2003 Programming Research Limited / (株)東陽テクニカ 38 警告 番号 メッセージ 3738 暗黙のキャスト:short から unsigned int。 符号付きから符号無しへの変換です。 3740 暗黙のキャスト:short から unsigned long。 符号付きから符号無しへの変換です。 3741 暗黙のキャスト:short から float。 整数から浮動小数点数への変換です。 3742 暗黙のキャスト:short から double。 整数から浮動小数点数への変換です。 3743 暗黙のキャスト:short から long double。 整数から浮動小数点数への変換です。 3744 暗黙のキャスト:unsigned short から char。 より小さな型への変換。単なる char への移植性の ない変換です。 3745 暗黙のキャスト:unsigned short から signed char。符号無しから より小さな符号付きへの変換 です。 3746 暗黙のキャスト:unsigned short から unsigned char。 より小さな型への変換です。 3747 暗黙のキャスト:unsigned short から short。 符号無しから符号付きへの変換です。 3748 暗黙のキャスト:unsigned short から int。 3750 暗黙のキャスト:unsigned short から long。 3752 暗黙のキャスト:unsigned short から float。 整数から浮動小数点数への変換です。 3753 暗黙のキャスト:unsigned short から double。 整数から浮動小数点数への変換です。 3754 暗黙のキャスト:unsigned short から long double。 整数から浮動小数点数への変換です。 3755 暗黙のキャスト:int から char。 より小さな型への変換。単なる char への移植性のない変換で す。 3756 暗黙のキャスト:int から signed char。 より小さな型への変換です。 3757 暗黙のキャスト:int から unsigned char。 符号付きから より小さな符号無しへの変換です。 3758 暗黙のキャスト:int から short。 より小さな型への変換です。 3759 暗黙のキャスト:int から unsigned short。 符号付きから より小さな符号無しへの変換です。 3760 暗黙のキャスト:int から unsigned int。 符号付きから符号無しへの変換です。 3762 暗黙のキャスト:int から unsigned long。 符号付きから符号無しへの変換です。 3763 暗黙のキャスト:int から float。 整数から浮動小数点数への変換です。 3764 暗黙のキャスト:int から double。 整数から浮動小数点数への変換です。 3765 暗黙のキャスト:int から long double。 整数から浮動小数点数への変換です。 3766 暗黙のキャスト:unsigned int から char。 小さな型への変換。単なる char への移植性のない変 換です。 3767 暗黙のキャスト:unsigned int から signed char。符号無しから より小さな符号付きへの変換で す。 3768 暗黙のキャスト:unsigned int から unsigned char。 より小さな型への変換です。 3769 暗黙のキャスト:unsigned int から short。 符号無しから より小さな符号付きへの変換です。 © 2003 Programming Research Limited / (株)東陽テクニカ 39 警告 番号 メッセージ 3770 暗黙のキャスト:unsigned int から unsigned short。 より小さな型への変換です。 3771 暗黙のキャスト:unsigned int から int。 符号無しから符号付きへの変換です。 3772 暗黙のキャスト:unsigned int から long。 3774 暗黙のキャスト:unsigned int から float。 整数から浮動小数点数への変換です。 3775 暗黙のキャスト:unsigned int から double。 整数から浮動小数点数への変換です。 3776 暗黙のキャスト:unsigned int から long double。 整数から浮動小数点数への変換です。 3777 暗黙のキャスト:long から char。 より小さな型への変換。単なる char への移植性のない変換 です。 3778 暗黙のキャスト:long から signed char。 より小さな型への変換です。 3779 暗黙のキャスト:long から unsigned char。符号付きから より小さな符号無しへの変換です。 3780 暗黙のキャスト:long から short。 より小さな型への変換です。 3781 暗黙のキャスト:long から unsigned short。符号付きから より小さな符号無しへの変換です。 3782 暗黙のキャスト:long から int。 より小さな型への変換です。 3783 暗黙のキャスト:long から unsigned int。符号付きから より小さな符号無しへの変換です。 3784 暗黙のキャスト:long から unsigned long。符号付きから符号無しへの変換です。 3785 暗黙のキャスト:long から float。 整数から浮動小数点数への変換です。 3786 暗黙のキャスト:long から double。 整数から浮動小数点数への変換です。 3787 暗黙のキャスト:long から long double。 整数から浮動小数点数への変換です。 3788 暗黙のキャスト:unsigned long から char。 より小さな型への変換。単なる char への移植性の ない変換です。 3789 暗黙のキャスト:unsigned long から signed char。符号無しから より小さな符号付きへの変換で す。 3790 暗黙のキャスト:unsigned long から unsigned char。 より小さな型への変換です。 3791 暗黙のキャスト:unsigned long から short。符号無しから より小さな符号付きへの変換です。 3792 暗黙のキャスト:unsigned long から unsigned short。 より小さな型への変換です。 3793 暗黙のキャスト:unsigned long から int。符号無しから より小さな符号付きへの変換です。 3794 暗黙のキャスト:unsigned long から unsigned int。 より小さな型への変換です。 3795 暗黙のキャスト:unsigned long から long。 符号無しから符号付きへの変換です。 3796 暗黙のキャスト:unsigned long から float。 整数から浮動小数点数への変換です。 3797 暗黙のキャスト:unsigned long から double。 整数から浮動小数点数への変換です。 3798 暗黙のキャスト:unsigned long から long double。 整数から浮動小数点数への変換です。 3799 暗黙のキャスト:float から char。 精度の損失が起こり得ます。 © 2003 Programming Research Limited / (株)東陽テクニカ 40 警告 番号 メッセージ 3800 暗黙のキャスト:float から signed char。 精度の損失が起こり得ます。 3801 暗黙のキャスト:float から unsigned char。 精度の損失が起こり得ます。 3802 暗黙のキャスト:float から short。 精度の損失が起こり得ます。 3803 暗黙のキャスト:float から unsigned short。 精度の損失が起こり得ます。 3804 暗黙のキャスト:float から int。 精度の損失が起こり得ます。 3805 暗黙のキャスト:float から unsigned int。 精度の損失が起こり得ます。 3806 暗黙のキャスト:float から long。 精度の損失が起こり得ます。 3807 暗黙のキャスト:float から unsigned long。 精度の損失が起こり得ます。 3810 暗黙のキャスト:double から char。 精度の損失が起こり得ます。 3811 暗黙のキャスト:double から signed char。 精度の損失が起こり得ます。 3812 暗黙のキャスト:double から unsigned char。 精度の損失が起こり得ます。 3813 暗黙のキャスト:double から short。 精度の損失が起こり得ます。 3814 暗黙のキャスト:double から unsigned short。 精度の損失が起こり得ます。 3815 暗黙のキャスト:double から int。 精度の損失が起こり得ます。 3816 暗黙のキャスト:double から unsigned int。 精度の損失が起こり得ます。 3817 暗黙のキャスト:double から long。 精度の損失が起こり得ます。 3818 暗黙のキャスト:double から unsigned long。 精度の損失が起こり得ます。 3819 暗黙のキャスト:double から float。 精度の損失が起こり得ます。 3821 暗黙のキャスト:long double から char。 精度の損失が起こり得ます。 3822 暗黙のキャスト:long double から signed char。 精度の損失が起こり得ます。 3823 暗黙のキャスト:long double から unsigned char。 精度の損失が起こり得ます。 3824 暗黙のキャスト:long double から short。 精度の損失が起こり得ます。 3825 暗黙のキャスト:long double から unsigned short 。 精度の損失が起こり得ます。 3826 暗黙のキャスト:long double から int。 精度の損失が起こり得ます。 3827 暗黙のキャスト:long double から unsigned int。 精度の損失が起こり得ます。 3828 暗黙のキャスト:long double から long。 精度の損失が起こり得ます。 3829 暗黙のキャスト:long double から unsigned long。 精度の損失が起こり得ます。 3830 暗黙のキャスト:long double から float。 精度の損失が起こり得ます。 3831 暗黙のキャスト:long double から double。 精度の損失が起こり得ます。 3900 char の値が signed char %s()から返されています。単なる char の移植性のない型変換です。 3901 char の値が unsigned char %s()から返されています。単なる char の移植性のない型変換で す。 © 2003 Programming Research Limited / (株)東陽テクニカ 41 警告 番号 メッセージ 3903 char の値が unsigned short %s()から返されています。単なる char の移植性のない型変換で す。 3905 char の値が unsigned int %s()から返されています。単なる char の移植性のない型変換です。 3907 char の値が unsigned long %s()から返されています。単なる char の移植性のない型変換で す。 3908 char の値が float %s()から返されています。整数から浮動小数点数への変換です。 3909 char の値が double %s()から返されています。整数から浮動小数点数への変換です。 3910 char の値が long double %s()から返されています。整数から浮動小数点数への変換です。 3911 unsigned char の値が char %s()から返されています。単なる char への移植性のない変換で す。 3912 unsigned char の値が signed char %s()から返されています。符号無しから符号付きへの変換で す。 3913 unsigned char の値が short %s()から返されています。 3915 unsigned char の値が int %s()から返されています。 3917 unsigned char の値が long %s()から返されています。 3919 unsigned char の値が float %s()から返されています。整数から浮動小数点数への変換です。 3920 unsigned char の値が double %s()から返されています。整数から浮動小数点数への変換で す。 3921 unsigned char の値が long double %s()から返されています。整数から浮動小数点数への変換 です。 3922 signed char の値が char %s()から返されています。単なる char への移植性のない変換です。 3923 signed char の値が unsigned char %s()から返されています。符号付きから符号無しへの変換で す。 3925 signed char の値が unsigned short %s()から返されています。符号付きから符号無しへの変換 です。 3927 signed char の値が unsigned int %s()から返されています。符号付きから符号無しへの変換で す。 3929 signed char の値が unsigned long %s()から返されています。符号付きから符号無しへの変換で す。 3930 signed char の値が float %s()から返されています。整数から浮動小数点数への変換です。 3931 signed char の値が double %s()から返されています。整数から浮動小数点数への変換です。 3932 signed char の値が long double %s()から返されています。整数から浮動小数点数への変換で す。 3933 short の値が char %s()から返されています。より小さな型への変換です。単なる char への移植 性のない変換です。 © 2003 Programming Research Limited / (株)東陽テクニカ 42 警告 番号 メッセージ 3934 short の値が signed char %s()から返されています。より小さな型への変換です。 3935 short の値が unsigned char %s()から返されています。符号付きから小さな符号無しへの変換 です。 3936 short の値が unsigned short %s()から返されています。符号付きから符号無しへの変換です。 3938 short の値が unsigned int %s()から返されています。符号付きから符号無しへの変換です。 3940 short の値が unsigned long %s()から返されています。符号付きから符号無しへの変換です。 3941 short の値が float %s()から返されています。整数から浮動小数点数への変換です。 3942 short の値が double %s()から返されています。整数から浮動小数点数への変換です。 3943 short の値が long double %s()から返されています。整数から浮動小数点数への変換です。 3944 unsigned short の値が char %s()から返されています。より小さな型への変換です。単なる char への移植性のない変換です。 3945 unsigned short の値が signed char %s()から返されています。符号無しから より小さな符号付き への変換です。 3946 unsigned short の値が unsigned char %s()から返されています。より小さな型への変換です。 3947 unsigned short の値が short %s()から返されています。符号無しから符号付きへの変換です。 3948 unsigned short の値が int %s()から返されています。 3950 unsigned short の値が long %s()から返されています。 3952 unsigned short の値が float %s()から返されています。整数から浮動小数点数への変換です。 3953 unsigned short の値が double %s()から返されています。整数から浮動小数点数への変換で す。 3954 unsigned short の値が long double %s()から返されています。整数から浮動小数点数への変換 です。 3955 int の値が char %s()から返されています。より小さな型への変換です。単なる char への移植性 のない変換です。 3956 int の値が signed char %s()から返されています。より小さな型への変換です。 3957 int の値が unsigned char %s()から返されています。符号付きから より小さな符号無しへの変換 です。 3958 int の値が short %s()から返されています。より小さな型への変換です。 3959 int の値が unsigned short %s()から返されています。符号付きから より小さな符号無しへの変 換です。 3960 int の値が unsigned int %s()から返されています。符号付きから符号無しへの変換です。 3962 int の値が unsigned long %s()から返されています。符号付きから符号無しへの変換です。 3963 int の値が float %s()から返されています。整数から浮動小数点数への変換です。 3964 int の値が double %s()から返されています。整数から浮動小数点数への変換です。 © 2003 Programming Research Limited / (株)東陽テクニカ 43 警告 番号 メッセージ 3965 int の値が long double %s()から返されています。整数から浮動小数点数への変換です。 3966 unsigned int の値が char %s()から返されています。より小さな型への変換です。単なる char へ の移植性のない変換です。 3967 unsigned int の値が signed char %s()から返されています。符号無しから より小さな符号付きへ の変換です。 3968 unsigned int の値が unsigned char %s()から返されています。より小さな型への変換です。 3969 unsigned int の値が short %s()から返されています。符号無しから より小さな符号付きへの変 換です。 3970 unsigned int の値が unsigned short %s()から返されています。より小さな型への変換です。 3971 unsigned int の値が int %s()から返されています。符号無しから符号付きへの変換です。 3972 unsigned int の値が long %s()から返されています。 3974 unsigned int の値が float %s()から返されています。整数から浮動小数点数への変換です。 3975 unsigned int の値が double %s()から返されています。整数から浮動小数点数への変換です。 3976 unsigned int の値が long double %s()から返されています。整数から浮動小数点数への変換で す。 3977 long の値が char %s()から返されています。より小さな型への変換です。単なる char への移植 性のない変換です。 3978 long の値が signed char %s()から返されています。より小さな型への変換です。 3979 long の値が unsigned char %s()から返されています。符号付きから より小さな符号無しへの変 換です。 3980 long の値が short %s()から返されています。より小さな型への変換です。 3981 long の値が unsigned short %s()から返されています。符号付きから より小さな符号無しへの変 換です。 3982 long の値が int %s()から返されています。より小さな型への変換です。 3983 long の値が unsigned int %s()から返されています。符号付きから より小さな符号無しへの変換 です。 3984 long の値が unsigned long %s()から返されています。符号付きから符号無しへの変換です。 3985 long の値が float %s()から返されています。整数から浮動小数点数への変換です。 3986 long の値が double %s()から返されています。整数から浮動小数点数への変換です。 3987 long の値が long double %s()から返されています。整数から浮動小数点数への変換です。 3988 unsigned long の値が char %s()から返されています。より小さな型への変換です。単なる char への移植性のない変換です。 3989 unsigned long の値が signed char %s()から返されています。符号無しから より小さな符号付き への変換です。 3990 unsigned long の値が unsigned char %s()から返されています。より小さな型への変換です。 © 2003 Programming Research Limited / (株)東陽テクニカ 44 警告 番号 メッセージ 3991 unsigned long の値が short %s()から返されています。符号無しから より小さな符号付きへの変 換です。 3992 unsigned long の値が unsigned short %s()から返されています。より小さな型への変換です。 3993 unsigned long の値が int %s()から返されています。符号無しから より小さな符号付きへの変換 です。 3994 unsigned long の値が unsigned int %s()から返されています。より小さな型への変換です。 3995 unsigned long の値が long %s()から返されています。符号無しから符号付きへの変換です。 3996 unsigned long の値が float %s()から返されています。整数から浮動小数点数への変換です。 3997 unsigned long の値が double %s()から返されています。整数から浮動小数点数への変換で す。 3998 unsigned long の値が long double %s()から返されています。整数から浮動小数点数への変換 です。 3999 float の値が char %s()から返されています。精度の損失が起こり得ます。 4000 float の値が signed char %s()から返されています。精度の損失が起こり得ます。 4001 float の値が unsigned char %s()から返されています。精度の損失が起こり得ます。 4002 float の値 short %s()から返されています。精度の損失が起こり得ます。 4003 float の値が unsigned short %s()から返されています。精度の損失が起こり得ます。 4004 float の値が int %s()から返されています。精度の損失が起こり得ます。 4005 float の値が unsigned int %s()から返されています。精度の損失が起こり得ます。 4006 float の値が long %s()から返されています。精度の損失が起こり得ます。 4007 float の値が unsigned long %s()から返されています。精度の損失が起こり得ます。 4010 double の値が char %s()から返されています。精度の損失が起こり得ます。 4011 double の値が signed char %s()から返されています。精度の損失が起こり得ます。 4012 double の値が unsigned char %s()から返されています。精度の損失が起こり得ます。 4013 double の値が short %s()から返されています。精度の損失が起こり得ます。 4014 double の値が unsigned short %s()から返されています。精度の損失が起こり得ます。 4015 double の値が int %s()から返されています。精度の損失が起こり得ます。 4016 double の値が unsigned int %s()から返されています。精度の損失が起こり得ます。 4017 double の値が long %s()から返されています。精度の損失が起こり得ます。 4018 double の値が unsigned long %s()から返されています。精度の損失が起こり得ます。 4019 double の値が float %s()から返されています。精度の損失が起こり得ます。 4021 long double の値が char %s()から返されています。精度の損失が起こり得ます。 4022 long double の値が signed char %s()から返されています。精度の損失が起こり得ます。 © 2003 Programming Research Limited / (株)東陽テクニカ 45 警告 番号 メッセージ 4023 long double の値が unsigned char %s()から返されています。精度の損失が起こり得ます。 4024 long double の値が short %s()から返されています。精度の損失が起こり得ます。 4025 long double の値が unsigned short %s()から返されています。精度の損失が起こり得ます。 4026 long double の値が int %s()から返されています。精度の損失が起こり得ます。 4027 long double の値が unsigned int %s()から返されています。精度の損失が起こり得ます。 4028 long double の値が long %s()から返されています。精度の損失が起こり得ます。 4029 long double の値が unsigned long %s()から返されています。精度の損失が起こり得ます。 4030 long double の値が float %s()から返されています。精度の損失が起こり得ます。 4031 long double の値が double %s()から返されています。精度の損失が起こり得ます。 4101 ビット演算子 '&' の両側のオペランドが論理式です。 4102 ビット演算子 '|' の両側のオペランドが論理式です。 4103 算術演算子の両側のオペランドが論理式です。 4104 算術演算子の左側のオペランドが論理式です。 4105 算術演算子の右側のオペランドが論理式です。 4106 論理積演算子 '&&' の両側のオペランドが算術式です。 4107 論理和演算子 '||' の両側のオペランドが算術式です。 4108 論理演算子の左側のオペランドが算術式です。 4109 論理演算子の右側のオペランドが算術式です。 4110 論理否定演算子 '!' が算術式に使用されています。 4111 関係演算子の右側のオペランドが論理式です。 4112 関係演算子の左側のオペランドが論理式です。 4120 代入時に、整数式が暗黙的により大きな型にキャストされます。 4123 代入時に、'float'式が暗黙的に 'double'にキャストされます。 4124 代入時に、'float'式が暗黙的に 'long double'にキャストされます。 4125 代入時に、'double'式が暗黙的に 'long double'にキャストされます。 4130 符号付きデータに対するビット単位の演算は未定義の結果になります。 4140 関数の戻り値にローカルなデータのアドレスを返しています。 4150 文字の 'l' と '1' だけが使用されている名前 '%s' は混乱を引き起こすかもしれません。 4151 文字の '0' と 'O' だけが使用されている名前 '%s' は混乱を引き起こすかもしれません。 4152 文字の 'l' と '1' が使用されている名前 '%s' は混乱を引き起こすかもしれません。 4153 文字の '0' と 'O' が使用されている名前 '%s' は混乱を引き起こすかもしれません。 注)ここに記載されいる警告文以外にも用語の統一などで若干の変更を加えたものがあります。 © 2003 Programming Research Limited / (株)東陽テクニカ 46 付録C. 付録 C. 削除された 削除されたメッセージ されたメッセージ 警告 メッセージ 番号 6 実引数が範囲外です。 99 評価版のため各メッセージは2度までしか表示されません。 155 ヒープ領域が足りません。 156 メモリー・マネージャのノードが足りません。 157 メモリー・マネージャのブロックが足りません。 205 精度幅が 509 文字を超えました。 236 拡張表記の値が移植性の良い'char'型の値の範囲(0-127)を超えています。 247 2 文字表記を全てのコンパイラがサポートしている訳ではありません。 ワイド文字定数とワイド文字列リテラルは、まだ全てのコンパイラでサポートされている訳ではあり 260 ません。 [C] ファイルの終端の印の前には、改行文字が必要です。このエラーを修正するために最終行 270 に改行文字を付け加えるべきです。 [u] 副作用完了点の間で2つ以上のデータ・アイテムが変更されるかもしれません。 - データが 404 オーバーラップすると危険です。 [u] 副作用完了点の間でデータ・アイテムが変更され、アクセスされます。 - データがオーバー 405 ラップすると危険です。 [u] 副作用完了点の間でデータ・アイテムが変更され、アクセスされるかもしれません。 - データ 406 がオーバーラップすると危険です。 [L] 括弧の入れ子(ネスティング)が 32 を超えました。- プログラムは ISO 規格に適合していませ 410 ん。 421 [L] 関数の実引数の数が 31 を超えます。- プログラムは ISO 規格に適合していません。 461 [C] 'const'からそうでないものへキャストしないで下さい。 521 [C] 'int [ pointer ]' はいですが、広く受け入れられている書き方は 'pointer [ int ]'です。 566 '*'と'/'演算子には算術オペランドが必要です。 567 '+'には、算術型のオペランド又はポインタと整数型のオペランドが必要です。 568 ポインタ '-' ポインタ、又はポインタ '-' 汎整数のオペランドが必要です。 569 '-' には、算術オペランド又は2つのポインタオペランドが必要です。 570 '*'と'/'演算子には算術オペランドが必要です。 571 '%s'には、汎整数型オペランドが必要です。 572 '<<'と'>>'には汎整数型のオペランドが必要です。 573 '<', '>', '<=', '>=' には算術またはポインタ演算子が必要です。 574 '=='と'!='には、算術型またはポインタ型のオペランドが必要です。 575 '&','|','^'には、整数型のオペランドが必要です。 [L] 宣言子の中の修飾子の数が 12 を超えています。- プログラムは ISO 規格に適合していま 609 せん。 [L] 宣言子の中での括弧の入れ子(ネスティング)の数が 31 を超えました。- プログラムは ISO 610 規格に適合していません。 [L] '構造体(struct)'又は'共用体(union)'型の入れ子(ネスティング)の数が 15 を超えました。611 プログラムは ISO 規格に適合していません。 613 [L] 仮引数の数が 31 を超えます。- プログラムは ISO 規格に適合していません。 [L] 1 つのブロック中におけるブロック有効範囲をもつ識別子の数が 127 を超えました。- プログ 614 ラムは ISO 規格に適合していません。 © 2003 Programming Research Limited / (株)東陽テクニカ 47 警告 番号 615 619 669 691 692 700 710 720 721 730 748 749 750 751 822 840 860 870 871 876 900 908 909 910 912 921 1016 1017 1200 1201 1202 1203 1316 1320 1321 1326 1600 メッセージ [L] 外部識別子の数が1つのファイルで 511 を超えます。- プログラムは ISO 規格に適合してい ません。 [C] 修飾子 '%s' は一度だけ表れる事が許されています。 型名は、ファイル有効範囲でのみ宣言されるべきです。 'const'ではないポインタを広域データに返すことは得策ではありません。 非'const'のポインタを広域(global)データへ渡さないで下さい。 各宣言は唯一つの識別子を宣言すべきです。 指定子の順番は'typedef', 記憶クラス, 型指定子の順にすべきです。そうすることで宣言が読み 易くなります。 最初の列挙子に値を指定するのを避けた方が得策です。 列挙定数の値を指定するのを避けた方が得策です。 'asm' 宣言を使用すべきではありません。 [U] '%s()'は'int'型の値を返しますが、式を指定した'return'文がありません。- 返却値は定義さ れていません。 [U] 返却値の型を 'int' にしている '%s()'の中に 'return;' があります。このプログラムは不正な 振舞いをする可能性があります。 'union'を使うべきではありません。 匿名の'union'は、使用すべきでありません。- このような使用法はエラーの傾向があります。 [S] 予期しない#else 指令です。if 群の中では、ただ 1 つの#else が許されます。複数の条件は #elif 指令でテストできます。 ポインタ'%s'は安全を考えて明示的に初期化すべきです。 マクロ'%s'が非常に長すぎます。-これは、クロス-モジュール・チェックから外されます。 '#pragma' は実装定義の振舞いをするので移植性を損ねます。 [U] '#' 演算子の前処理の結果は正当な文字列リテラルではありません。 [L] 論理行が 509 文字を超えました。- プログラムは ISO C 規格に適合していません。 '..'から字句を作ることができません。 - '.' で代用しています。 [C] 前処理している字句を正当な字句に変換できません。 [C] '#' と '##'演算子は'#define'前処理指令の中以外では違法です。 '{' '}', '(' ')', '[' ']' 又は '<' '>'が対応しません。 字句解析を続けるために'%s'字句を無視します。 宣言が ';'で終了していません。 未定義のプリプロセッサ命令です。この行は無視されました。 関数に '...' を使うことは避けるべきです。 '%s'が異なった typedef 名を使って再宣言されています。同じ名前を使う方が良いやり方といえ るでしょう。 オペランドの型のシンボル名が一貫していません。 代入のオペランドの型は一貫性のないシンボリック名を使っています。 '構造体(struct)', '共用体(union)' 又は '列挙体(enum)'が2つの異なる typedef 名で宣言されて います。これは混乱を招く可能性があります。同じ名前を使う方が良いやり方といえるでしょう。 値の代入は C++では適合する列挙子または列挙子型でなければなりません。 列挙型へのキャストは C++では、非常に厳しく制限されています。この操作は変換された値が正 式の列挙子の値になる場合にのみ定義されます。 このキャストは C++では定義されていません。キャストされた値がその型の宣言された列挙子の 1つになっていないからです。 '//' は C++ コンパイラではコメントとして扱われます。 指令は第一桁目から書き始めるべきです。 © 2003 Programming Research Limited / (株)東陽テクニカ 48 警告 メッセージ 番号 1601 スキップされた前処理指令は第一桁目から始まっていません。 1636 再帰的なマクロを使うべきではありません。 1670 再帰的なマクロを使うべきではありません。 1671 再帰的なマクロを使うべきではありません。 1681 再帰的なマクロを使うべきではありません。 1690 再帰的なマクロを使うべきではありません。 1691 再帰的なマクロを使うべきではありません。 1957 'while' は'}'の後ろに一つスペースを空けて書くべきです。 1963 'else'-'if'の中の、この if 文はそれを制御する 'else'文と同一行に書くべきです。 1966 関数 '%s' の返却値の型はその名前の上の行に分けて記述すべきです。 1967 複数引数の並びにおいて、引数 '%s' は独自の行で指定するべきです。 1968 この関数の実引数の位置は前のものとそろっていません。 2011 '%s()'を呼び出すべきではありません。コードが非構造的になるからです。 2012 '%s()'を呼び出すべきではありません。プログラムの異常終了を起こすからです。 2013 '%s()'を呼び出すべきではありません。予期しない振舞いを起こす可能性があるからです。 '%s()'を呼び出すべきではありません。全てのプラットホームが正しくこれをサポートしている訳で 2014 はないからです。 2202 この波括弧のスタイルはこのファイルの中の前のスタイルと一貫していません。 2206 この行の段付けはこれ以降の段付けと一貫していません。 2454 '%s'は'for'ループを制御しています。- ループ文の本体の中で変更すべきではありません。 '%s'が 'for'ループを制御しています。この呼び出しは、その値を変更するかも知れません。それ 2455 により望み通りではない振舞いをするでしょう。 2456 複数の制御変数を'for'文の中で使用する事は、勧められません。 実引数'%s'は、前の宣言で名前がついていません。- 宣言における引数に名前をつけることを 2657 必須としている規約があります。 2658 この実引数は前の宣言で'%s'と名付けられました。一貫した名前を使うべきです。 2659 名前のない実引数は、使用すべきではありません。 2714 各'typedef'宣言では、1つの型名のみを宣言すべきです。 2718 '%s'を、次に続く仮引数の集合の中で明示的に宣言するべきです。 文字列リテラルの中にナル文字'\0'を含めることは推奨されていません。- 文字列ライブラリの 3000 結果が予期しないものになる可能性があります。 3004 精度が異なるもの同士の算術演算は安全ではありません。 3005 ポインタの境界調整問題が起きかねません。 3119 コンマ演算子の使用は避けるべきです。 3124 #include 行のマクロ展開は信頼性がありません。この使用法は移植性を損ねます。 #include 指令に絶対パスを指定すべきではありません。- '%s'は '/' または '\'で開始されてい 3125 ます。 3126 #include 指令に相対パスを指定すべきではありません。- '%s' は '.' で開始されています。 #include 指令で相対ディレクトリを使ってファイル名を指定することは避けるべきです。'%s' に 3127 '/' または '\'が含まれています。 3128 '%s'はグローバルです。 できるなら、'%s'を最初に使用する場所の近くで宣言するべきです。変数の有効範囲をできるだ 3129 け狭くしておくことにより、将来の保守がしやすくなります。 '%s'は最後に使用されてから長い間有効範囲にとどまっています。 - {}を使用して有効範囲を狭 3130 めることを検討して下さい。 3213 明示的なキャストは避けるべきです。 © 2003 Programming Research Limited / (株)東陽テクニカ 49 警告 番号 3214 3215 3299 3300 3327 3329 3338 3339 3342 3599 3622 3702 3704 3706 3714 3716 3718 3724 3726 3728 3737 3739 3749 3751 3761 3773 3808 3809 3820 3902 3904 3906 3914 3916 3918 3924 3926 3928 メッセージ '%s'は最後に更新されて以来ここまでアクセスされていません。最後の更新は冗長かもしれませ ん。 '%s'は、初期化された後、この変更までアクセスされていません。- この変更を初期化で行う事が 可能かもしれません。 ローカルデータのアドレスが戻されるかも知れません。- 注意深くチェックして下さい。 ローカルデータのアドレスを関数の返却値としています。大変危険です! 符号無しの 'char' は決して負の値になりません。- このテストは正しく評価されません。 %s 番目の実引数は以前の呼び出しでの型と異なります。 整数型と浮動小数点型を混在させるのは安全ではありません。 ブール型が期待されている場所で浮動小数点の値が見つかりました。これは避けるべきです。 '%s' は浮動小数点の'for'ループのインデックスです。これは整数型に置き換えるべきです。 3 文字表記と混合するので、??文字の使用は避けるべきです。 スキップした指令の#と指令の間に空白類があります。 暗黙のキャスト: char 型から short 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: char 型から int 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: char 型から long 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: unsigned char 型から unsigned short 型への変換。暗黙のキャストは避けるべき です。 暗黙のキャスト: unsigned char 型から unsigned int 型への変換。暗黙のキャストは避けるべきで す。 暗黙のキャスト: unsigned char 型から unsigned long 型への変換。暗黙のキャストは避けるべき です。 暗黙のキャスト: signed char 型から short 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: signed char 型から int 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: signed char 型から long 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: short 型から int 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: short 型から long 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: unsigned short 型から unsigned int 型への変換。暗黙のキャストは避けるべきで す。 暗黙のキャスト: unsigned short 型から unsigned long 型への変換。暗黙のキャストは避けるべき です。 暗黙のキャスト: int 型から long 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: unsigned int 型から unsigned long 型への変換。暗黙のキャストは避けるべきで す。 暗黙のキャスト: float 型から double 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: float 型から long double 型への変換。暗黙のキャストは避けるべきです。 暗黙のキャスト: double 型から long double 型への変換。暗黙のキャストは避けるべきです。 char 型の値が short %s()から返されました。 char 型の値が int %s()から返されました。 char 型の値が long %s()から返されました。 unsigned char 型の値が unsigned short %s()から返されました。 unsigned char 型の値が unsigned int %s()から返されました。 unsigned char 型の値が'unsigned long %s()から返されました。 signed char 型の値が short %s()から返されました。 signed char 型の値が int %s()から返されました。 signed char 型の値が long %s()から返されました。 © 2003 Programming Research Limited / (株)東陽テクニカ 50 警告 メッセージ 番号 3937 short 型の値が'int %s()から返されました。 3939 short 型の値が long %s()から返されました。 3949 unsigned short 型の値が unsigned int %s()から返されました。 3951 unsigned short 型の値が unsigned long %s()から返されました。 3961 int 型の値が long %s()から返されました。 3973 unsigned int 型の値が unsigned long %s()から返されました。 4008 float 型の値が double %s()から返されました。 4009 float 型の値が long double %s()から返されました。 4020 double 型の値が long double %s()から返されました。 4701 このファイルにはもっとコメントがあるべきです。 4702 このファイルにはとても多くの割合でコメントが含まれています。これは読みにくくなりそうです。 '%s()' は高いノット密度を持ち、構造化されていません。ループの中で'break'や'continue'を使 4704 用するのは避けるべきです。'goto'は使用すべきではありません。 '%s()' はとても高いノット密度を持ち、構造化されていません。ループの中で'break'や'continue' 4705 を使用するのは避けるべきです。'goto'は使用すべきではありません。 '%s()' は非常に高いノット密度を持ち、構造化されていません。ループの中で'break'や 4706 'continue'を使用するのは避けるべきです。'goto'は使用すべきではありません。 '%s()' は判定と判定の間に非常にたくさんのインライン・コードを含んでいます。これらのコードの 4707 ブロックのいくつかをサブ関数にする事を考えるべきでしょう。 '%s()' は高い判定密度を持っています。サブ関数に分割して論理を明確にすると良いかもしれ 4708 ません。 4709 '%s()' はかなりの数の判定を持っており、理解するのが難しいかも知れません。 '%s()' は高い判定数を持っており、理解可能な限界を超えているかもしれません。論理の数を減 4710 らすか関数をサブ関数へ分割することによってこれを避けることができます。 '%s()' は極端な数の判定を持っています。これでは理解できないかも知れません。サブ関数に 4711 分割するべきです。 '%s()' には大変多くの戻る方向のジャンプが存在します。理解するのが難しいコードになりそうで 4712 す。 このファイルを語彙分析した結果、同じ又はよく似たコードを含むブロックがあります。これは、サ 4713 ブ関数にできるでしょう。 4714 '%s()' はおそらく長過ぎます。サブ関数に分割した方がよさそうです。 このファイル中の関数の平均行数が大きすぎます。このプログラムのモジュール化のレビューを 4715 することは有益かもしれません。 4716 '%s()' は高いパスカウントを持っています。テストするのは困難かもしれません。 4717 '%s()' は非常に高いパスカウントを持っており、テストするのは難しいかも知れません。 4718 '%s()' はおそらくテストできません。サブ関数に分割するべきです。 メトリックス・ファイル'%s'を作成できません。環境変数 QACOUTPATH の値を確認するか、'4901 OP' を使用して下さい。 4902 メトリックス・ファイル'%s'をオープンできません。ファイルのパーミッションを確認して下さい。 4903 メトリックス・ファイル'%s'への書き込みができません。ファイルのパーミッションを確認して下さい。 4904 メトリックス・ファイル'%s'への書き込みができません。ファイルのパーミッションを確認して下さい。 4905 4906 データベース・ファイル '%s'を作成できません。 データベース・ファイル '%s'をオープンできません。ファイルのパーミッションを確認して下さい。 データベース・ファイル '%s'を読み込むことができません。ファイルのパーミッションを確認して下 4907 さい。 © 2003 Programming Research Limited / (株)東陽テクニカ 51 警告 番号 メッセージ データベース・ファイル'%s'への書き込みができません。ファイルのパーミッションを確認して下さ い。 4909 ソースファイル名'%s'が正しくありません。 4910 ログ・ファイル '%s'が開けません。イルのパーミッションを確認して下さい。 4911 ログ・ファイル'%s'への書き込みができません。ファイルのパーミッションを確認して下さい。 4908 © 2003 Programming Research Limited / (株)東陽テクニカ 52
© Copyright 2024 Paperzz