ARM コンパイラツールチェーン エラーおよび警告リファレンス

Similar documents
RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

プログラミング実習I

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

R2.7 ポインタの型に気を付ける R2.7.1 (1) ポインタ型は 他のポインタ型及び整数型と相互に変換してはならない ただし データへのポインタ型における void* 型との相互変換は除く (2) ポインタ型は 他のポインタ型 及びポインタ型のデータ幅未満の整数型と相互に変換してはならない た

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

Microsoft PowerPoint - CproNt02.ppt [互換モード]

PowerPoint プレゼンテーション

プログラミング実習I

数値計算

Microsoft Word - Training10_プリプロセッサ.docx

Microsoft Word - no02.doc

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

02: 変数と標準入出力

gengo1-2

02: 変数と標準入出力

Java講座

JavaプログラミングⅠ

Microsoft PowerPoint pptx

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

Microsoft PowerPoint - 計算機言語 第7回.ppt

株式会社アルウィン C 言語コーディング規約 ver.0.1

SuperH RISC engine C/C++ コンパイラ Ver.7 不具合内容 - 過去のお知らせ SuperH RISC engine C/C++ コンパイラ Ver.7 台における不具合内容を以下に示します のチェックツールをルネサスエレクトロニクス株式会社のホームページ

Microsoft PowerPoint - 09.pptx

Cコンパイラパッケージお知らせ

講習No.1

Taro-ポインタ変数Ⅰ(公開版).j

Prog1_10th

情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 )

第1回 プログラミング演習3 センサーアプリケーション

Prog2_12th

PowerPoint プレゼンテーション

Microsoft PowerPoint - 12.ppt [互換モード]

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a

4-3- 基 C++ に関する知識 オープンソースシステムのソースを解読する上で C++ の知識は必須であるといえる 本カリキュラムでは まずオブジェクト指向に関する Ⅰ. 概要理解を深め クラスの扱い方について学習し STL を使用してアルゴリズムとデータ構造を実装する方法を学習する Ⅱ. 対象専

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - 12.ppt [互換モード]

Microsoft Word - 3new.doc

演算増幅器

Microsoft Word - Cプログラミング演習(11)

Microsoft PowerPoint - 13.ppt [互換モード]

Prog1_6th

PowerPoint Presentation

Microsoft PowerPoint - 13th.ppt [互換モード]

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

プログラミングI第10回

プログラミング基礎I(再)

AquesTalk プログラミングガイド

ガイダンス

memo

Microsoft Word - Cプログラミング演習(12)

RL78開発環境移行ガイド RL78ファミリ間の移行 (コンパイラ編:コンパイラオプション・アセンブラオプション)(CA78K0R→CC-RL)

UIOUSBCOM.DLLコマンドリファレンス

02: 変数と標準入出力

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Microsoft PowerPoint - prog03.ppt

JavaプログラミングⅠ

JavaプログラミングⅠ

PowerPoint Presentation

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

Microsoft PowerPoint pptx

講習No.12

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

JavaプログラミングⅠ

02: 変数と標準入出力

Prog1_12th

AquesTalk for WinCE プログラミングガイド

第2回講義:まとめ

Microsoft PowerPoint pptx[読み取り専用]

02: 変数と標準入出力

Slide 1

講習No.9

Taro-リストⅠ(公開版).jtd

JavaプログラミングⅠ

PowerPoint プレゼンテーション

JavaプログラミングⅠ

PowerPoint プレゼンテーション

slide5.pptx

program7app.ppt

gengo1-12

解きながら学ぶC++入門編

02: 変数と標準入出力

ポインタ変数


Microsoft PowerPoint - 4.ppt [互換モード]

Microsoft PowerPoint - 3.ppt [互換モード]

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要.

Microsoft PowerPoint ppt

02: 変数と標準入出力

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

2006年10月5日(木)実施

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

JavaプログラミングⅠ

Microsoft PowerPoint - 2.ppt [互換モード]

Prog1_2nd

Microsoft PowerPoint ppt

Transcription:

ARM コンパイラツールチェーン バージョン 4.1 エラーおよび警告リファレンス 発行日 : 1 18, 2011 Copyright 2010 ARM. All rights reserved. DUI 0496BJ()

ARM コンパイラツールチェーンエラーおよび警告リファレンス Copyright 2010 ARM. All rights reserved. リリース情報 変更履歴 説明発行機密保持ステータス変更点 2010 年 5 月 28 日 A 非機密扱い ARM コンパイラツールチェーン v4.1 リリース 2010 年 9 月 30 日 B 非機密扱い ARM コンパイラツールチェーン v4.1 のアップ デート 1 著作権 または のマークが付いた言葉およびロゴは この著作権情報で別段に規定されている場合を除き ARM の EU またはその他の国における登録商標および商標です 本書に記載されている他の製品名は 各社の所有する商標です 本書に記載されている情報の全部または一部 ならびに本書で紹介する製品は 著作権所有者の文書による事前の許可を得ない限り 転用 複製することを禁じます 本書に記載されている製品は 今後も継続的に開発 改良の対象となります 本書に含まれる製品およびその利用方法についての情報は ARM が利用者の利益のために提供するものです したがって当社では 製品の市販性または利用の適切性を含め 暗示的 明示的に関係なく一切の責任を負いません 本書は 本製品の利用者をサポートすることだけを目的としています 本書に記載されている情報の使用 情報の誤りまたは省略 あるいは本製品の誤使用によって発生したいかなる損失 損傷についても ARM は一切責任を負いません ARM という用語が使用されている場合 "ARM または必要に応じてその子会社 " を指します 機密保持ステータス 本書は非機密扱いであり 本書を使用 複製 および開示する権利は ARM および ARM が本書を提供した当事者との間で締結した契約の条項に基づいたライセンスの制限により異なります 製品ステータス 本書の情報は最終版であり 開発済み製品に対応しています Web アドレス http://www.arm.com DUI 0496BJ Copyright 2010 ARM. All rights reserved. ii

目次 ARM コンパイラツールチェーンエラーおよび警告リファレンス 第 1 章第 2 章第 3 章第 4 章第 5 章第 6 章 表記規則とフィードバック C および C++ コンパイラのエラーおよび警告 2.1 内部エラーとその他の予期しないエラー... 2-2 2.2 armcc のエラーおよび警告メッセージの非表示... 2-3 2.3 armcc のエラーおよび警告メッセージのリスト... 2-4 2.4 旧式の armcc のエラーおよび警告メッセージのリスト... 2-67 アセンブラのエラーおよび警告 3.1 armasm のエラーおよび警告メッセージのリスト... 3-2 リンカのエラーおよび警告 4.1 armlink のエラーおよび警告メッセージの非表示... 4-2 4.2 armlink のエラーおよび警告メッセージのリスト... 4-3 ELF イメージ変換ユーティリティのエラーおよび警告 5.1 fromelf のエラーおよび警告メッセージのリスト... 5-2 ライブラリアンのエラーおよび警告 6.1 armar のエラーおよび警告メッセージのリスト... 6-2 DUI 0496BJ Copyright 2010 ARM. All rights reserved. iii

目次 第 7 章 付録 A その他のエラーおよび警告 7.1 その他のエラーおよび警告メッセージのリスト... 7-2 エラーおよび警告リファレンス に対する改訂 DUI 0496BJ Copyright 2010 ARM. All rights reserved. iv

第 1 章表記規則とフィードバック 以下では 表記規則とフィードバックの方法について説明します 表記規則 以下の表記規則を使用しています monospace コマンド ファイル名 プログラム名 ソースコードなど キーボードから入力可能なテキストを示しています monospace コマンドまたはオプションに使用可能な略語を示します コマンド名またはオプション名をすべて入力する代わりに 下線部分の文字だけを入力することができます monospace italic コマンドまたは関数の引数で 特定の値に置き換えることが可能なものを示しています monospace bold サンプルコード以外に使用される言語キーワードを示しています italic 重要事項 重要用語 相互参照 引用箇所を斜体で記載しています bold メニュー名などのユーザインタフェース要素を太字で記載しています また 適宜記述リスト内の重要箇所と ARM プロセッサの信号名にも太字を用いています DUI 0496BJ Copyright 2010 ARM. All rights reserved. 1-1

表記規則とフィードバック 本製品に関するフィードバック本製品についてのご意見やご提案がございましたら 以下の情報を添えて購入元までお寄せ下さい お名前と会社名 製品のシリアル番号 製品のリリース情報 ご使用のプラットフォームの詳細 ( ハードウェアプラットフォーム オペレーティングシステムの種類とバージョンなど ) 問題を再現するサイズの小さな独立したサンプルコード 操作の目的と実際の動作に関する詳しい説明 使用したコマンド ( コマンドラインオプションを含む ) 問題を例示するサンプル出力 ツールのバージョン情報 ( バージョン番号 ビルド番号を含む ) 内容に関するフィードバック内容に関するご意見につきましては 電子メールを errata@arm.com まで送信して下さい その際には 以下の内容を記載して下さい タイトル 文書番号 (DUI 0496BJ) オンラインでご覧の場合は 該当するトピック名 PDF 版の文書をご覧の場合は 問題のあるページ番号 問題点の簡潔な説明また 補足すべき点や改善すべき点についての全般的なご提案もお待ちしております ARM では 技術情報記事や FAQ の拡充と共に ドキュメントに対する更新と訂正を ARM Information Center にて定期的に行っております その他の情報 ARM Information Center, http://infocenter.arm.com/help/index.jsp ARM Technical Support Knowledge Articles, http://infocenter.arm.com/help/topic/com.arm.doc.faqs/index.html ARM Support and Maintenance, http://www.arm.com/support/services/support-maintenance.php DUI 0496BJ Copyright 2010 ARM. All rights reserved. 1-2

第 2 章 C および C++ コンパイラのエラーおよび警告 以下のトピックでは C および C++ コンパイラ (armcc) のエラーおよび警告メッセージについて説明しています 内部エラーとその他の予期しないエラー ( ページ 2-2) armcc のエラーおよび警告メッセージの非表示 ( ページ 2-3) armcc のエラーおよび警告メッセージのリスト ( ページ 2-4) 旧式の armcc のエラーおよび警告メッセージのリスト ( ページ 2-67) DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-1

C および C++ コンパイラのエラーおよび警告 2.1 内部エラーとその他の予期しないエラー コンパイラの内部エラーは 通常 発生していてもまだ文書化されていないエラーであるか コンパイラ自体の潜在的な問題を意味しています 以下に例を示します 内部エラー : [0x87ecef:410591] これには 以下の情報が含まれています メッセージの説明 ( 内部エラー ) 発生したエラーを示す 6 桁の 16 進数のエラーコード (0x87ecef) 以前のバージョンのコードは 4 桁でした バージョン番号 (41 は ARM コンパイラ v4.1) ビルド番号 ( この例では 0591) 内部エラーが表示された場合は 購入元にお問い合わせ下さい 調査を容易にするために エラーを発生させたソースファイルまたは関数のみを送るようにして下さい また コードのコンパイルに使用したコンパイラオプションもお知らせ下さい ファイルの前処理が必要になる場合もあります つまり #include で追加されるファイルも考慮する必要があります その場合は 次のようにして ファイルをプリプロセッサに通します armcc <options> E sourcefile.c > PPsourcefile.c ここで <options> は -O2 -g -I -D などの通常のコンパイルスイッチです ただし -c は指定しません 前処理したファイルでもエラーが再現されるかどうかを確認するために 次のようにして ファイルをコンパイルします armcc <options> -c PPsourcefile.c その後 PPsourcefile.c ファイルとコンパイルの <options> を購入元に送付して下さい DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-2

C および C++ コンパイラのエラーおよび警告 2.2 armcc のエラーおよび警告メッセージの非表示 コンパイラは 通常 潜在的な移植性の問題やその他の問題点に関する警告を表示します 従来のコード ( 例えば旧式の C) を ARM に移植する場合 多くの警告が報告されます これらのすべての警告を W で非表示にするのが便利だと思える場合もあります しかし 移植性に関する理由から 警告を非表示にするよりも コードを ANSI 互換に変更することを推奨します 一部の警告は デフォルトで非表示になっています これをオーバーライドするには --strict_warnings スイッチを使って 非表示になっているすべての警告を有効にします デフォルトでは 最適化メッセージ (1593 から 2159 までのメッセージの大部分 ) は警告ではありません 最適化メッセージを警告として扱うには --diag_warning=optimizations オプションを使用します 2.2.1 関連項目 参照 コンパイラリファレンス : --diag_warning=tag[,tag,...] ( ページ 3-53) --strict_warnings ( ページ 3-123) -W ( ページ 3-136) DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-3

C および C++ コンパイラのエラーおよび警告 2.3 armcc のエラーおよび警告メッセージのリスト armcc のエラーおよび警告メッセージは 次のとおりです 0 不明なエラー 1 ファイルの最終行が復帰改行文字なしで終了しています 2 ファイルの最終行がバックスラッシュで終了しています 3 # インクルードファイル <entity> はそのファイル自体をインクルードします 4 メモリが不足しています 5 <entity> の入力ファイル <filename> を開けません :<reason> 以下に例を示します #include <file.h> では 次のようなメッセージが表示されます エラー :#5: source の入力ファイル "file.h" を開けません : そのようなファイルまたはディレクトリはありませんこれは file.h がシステムインクルードディレクトリに存在しないためです 6 コメントがファイルの最後で閉じられていませんコメントが /* で始まっていますが コメントを閉じるための対応する */ がありません 7 認識されないトークン 8 閉じ引用符がありません以下に例を示します char foo[] = {"\"}; この例では バックスラッシュによって 後ろの引用符 " が文字列を閉じる記号ではなく リテラル文字として扱われています これを修正するには 次のようにします char foo[] = {"\\"}; 9 コメントを入れ子にすることはできません以下に例を示します /*nested /*comment*/ 10 ここでは "#" は期待されていません 11 認識されないプリプロセッシングディレクティブ以下に例を示します #foo 12 前の構文エラーの後 解析はここから再開されます 13 ファイル名が期待されます以下に例を示します #include <stdio.h> 14 プリプロセッシングディレクティブの最後と期待される場所の後に余分なテキストがあります DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-4

C および C++ コンパイラのエラーおよび警告 以下に例を示します #if EMBEDDED foo または #include <stdio.h> foo または #ifdef SOMETHING : #endif SOMETHING #endif は 引数を必要としません 行の末尾の部分を次のようにコメントとして囲めば 問題を解決できます #endif /* SOMETHING */ 16 <entity> は有効なソースファイル名ではありません 17 ] が期待されます 18 ) が期待されます以下に例を示します int main(void { ここでは ) が欠けています 19 数字の最後と期待される場所の後に余分なテキストがあります以下に例を示します int a = 37r; 20 識別子 <entity> が定義されていません例えば C++ でコンパイルする場合 以下のコード void foo( arg ) { } では 次のようなメッセージが表示されます エラー :#20: 識別子 <arg> が定義されていません 次のコード例も このエラーを発生させます int foo(void) { int a = 4; a = i; } 次のようなメッセージが表示されます エラー :#20: 識別子 "i" が定義されていません これは i が宣言されていないためです 21 型修飾子はこの宣言内では無効です 22 無効な 16 進数 23 整数定数が長すぎます 24 無効な 8 進数以下に例を示します int a = 0378; 25 引用符で囲まれたストリング内には 少なくとも 1 つの文字が含まれている必要があります DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-5

C および C++ コンパイラのエラーおよび警告 以下に例を示します char a =''; 26 文字定数内に文字が多すぎます 以下に例を示します char a = abcd ; これは エラーになります 注単一引用符で囲まれた文字列には 1 文字しか指定できません 複数の文字を指定する場合は 二重引用符を使用する必要があります 文字列は a[] のような適切な変数に割り当てる必要があります 27 文字の値が範囲外です 以下に例を示します char foo[] = {"\xbbbb" }; では 次のようなメッセージが表示されます 警告 : #27-D : 文字の値が範囲外です 28 式に定数値を含める必要があります 29 式が期待されます 30 浮動小数点定数が範囲外です 31 式は整数型である必要があります 32 式は算術型である必要があります 33 行番号が期待されます 34 無効な行番号 35 # エラーディレクティブ :<entity> 36 このディレクティブの #if がありません 37 このディレクティブの #endif がありません 開かれた #if がまだアクティブになっていて ファイルの末尾よりも前で #endif によって閉じられていません 38 ディレクティブは使用できません -- #else が既に表示されています 39 ゼロによる除算 40 識別子が期待されますこのエラーは プリプロセッサステートメントが正しい形式でない場合に発生します 例えば プリプロセッサコマンドの直後に必要な識別子が指定されていない場合などです #define の後の識別子がなかった場合は 次のエラーが表示されます エラー :#40: 識別子が期待されますこのエラーは 次のような C++ キーワードが含まれている C コードを C++ コンパイラでコンパイルした場合にも発生します int *new(void *p) { return p; } これは new が C++ のキーワードであるため エラーになります DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-6

C および C++ コンパイラのエラーおよび警告 41 式は算術型またはポインタ型である必要があります 42 オペランドの型の間に互換性がありません (<type> と <type>) 44 式はポインタ型である必要があります 45 #undef はこの定義済み名には使用できません 46 <entity> は定義済みです 再定義は無視されます 47 マクロ <entity> の再定義に互換性がありません マクロが 2 回 ( 異なる置換文字列で ) 定義されました そのようにする必要がある場合は 2 回目の定義の前でマクロの定義を解除して下さい (#undef) 以下に例を示します #define TEST 0 #define TEST 1 このようにすると コンパイラによって以下のメッセージが生成されます 警告 : #47-D : マクロ "TEST" の再定義に互換性がありません ( 行 1 で宣言 ) このエラーをコンパイラオプションで直接制御する方法はありません しかし コンディショナルプリプロセッシングを使用することができます 以下に例を示します #ifdef TEST_EQUALS_ZERO #define TEST 0 #else #define TEST 1 #endif armcc -c foo.c でコンパイルすると TEST は 1 として定義されます ( デフォルト ) armcc -c -DTEST_EQUALS_ZERO foo.c でコンパイルすると TEST は 0 として定義されます 49 マクロパラメータ名が重複しています 50 "##" をマクロ定義の最初にすることはできません 51 "##" をマクロ定義の最後にすることはできません 52 マクロパラメータ名が期待されます 53 : が期待されます 54 マクロ呼び出し内の引数が少なすぎます 55 マクロ呼び出し内の引数が多すぎます 56 sizeof のオペランドに関数は使用できません 57 この演算子は定数式では使用できません 58 この演算子はプリプロセッシング式では使用できません 59 関数呼び出しは定数式では使用できません 60 この演算子は整数的な定数式では使用できません 61 整数演算の結果が範囲外です DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-7

C および C++ コンパイラのエラーおよび警告 62 シフト数が負です 63 シフト数が大きすぎます 64 宣言で何も宣言されていません 以下に例を示します int; 65 ; が期待されます 66 列挙値が "int" の範囲外です この診断メッセージは enum 定数が signed int の範囲外である場合に コンパイラによって生成されます 以下に例を示します typedef enum { Bit31 = 0x80000000 } Bits; C モードでコンパイルすると このメッセージが警告として生成されます 注以前のバージョン間でも --enum_is_int および --strict スイッチを使用している場合でも コンパイラの動作が変更されています C モード : 警告が生成されますが コンパイラによって定数が unsigned に昇格されます スイッチ --strict は 常にこのメッセージをエラーとして生成します C++ モード : デフォルトでは 範囲外の定数は警告なしで unsigned に昇格されます --strict が使用されている場合でも 同様です メッセージがエラーである場合の対応策として 以下のコード例を使用して下さい typedef enum { Bit31 = (int)0x80000000 } Bits; オーバーフローは発生しなくなり エラーも報告されなくなります 注 Bit31 は signed int になるので その値は負になります コンパイラリファレンス の 構造体 共用体 列挙型 ビットフィールド ( ページ 6-6) を参照して下さい 67 } が期待されます 68 整数変換の結果 符号が変更されました定数が signed long で表現するには大きすぎるので unsigned 型にされました DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-8

C および C++ コンパイラのエラーおよび警告 例 : long l = 2147483648; 69 整数変換の結果 切り捨てられました 70 不完全型は使用できません 例 : typedef struct{ unsigned char size; char string[]; } FOO; 構造体の中の配列のサイズが宣言されていないので コンパイラが構造体のサイズを割り当てることができません 不完全型は --gnu および --c99 モードでは使用できます 71 sizeof のオペランドにビットフィールドは使用できません 76 マクロの引数が空です 77 この宣言には記憶クラスも型指定子もありません 78 パラメータ宣言にイニシャライザを含めることはできません 79 型指定子が期待されます可変個引数関数 ( 例えば printf()) を示す省略記号は その前に少なくとも 1 つのパラメータが必要です 次の関数は int foo(...); 次のように変更します int foo( int bar,...); 80 ここに記憶クラスを指定することはできません 81 記憶クラスを複数指定することはできません 82 記憶クラスが最初ではありません 83 型指定子が複数回指定されています 84 型指定子の組み合わせが無効です 型名または型指定子は 同一の宣言内で 2 番目の型名または型指定子として使うことはできません 以下に例を示します typedef int int; 85 パラメータの記憶クラスが無効です 86 関数の記憶クラスが無効です 87 ここで型指定子を使用することはできません 88 関数の配列は使用できません 89 void 型の配列は使用できません 90 関数を返す関数は使用できません 91 配列を返す関数は使用できません 92 識別子リストパラメータは関数定義でのみ使用できます 93 関数型は typedef からは取得できません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-9

C および C++ コンパイラのエラーおよび警告 94 配列のサイズはゼロより大きくする必要があります サイズがゼロの配列は GNU モード (--gnu) だけで使用できます 以下に例を示します char name[0]; コンパイラリファレンス の以下のセクションを参照して下さい --gnu ( ページ 3-70) C および C++ 言語に対する GNU 拡張機能 ( ページ 4-22) 95 配列が大きすぎます配列または構造体の最大サイズには 4GB の制限があります 96 変換単位には 少なくとも 1 つの宣言が含まれている必要があります 97 関数はこの型の値を返すことはできません 98 配列にこの型のエレメントを含めることはできません 99 ここの宣言はパラメータを宣言する必要があります 100 パラメータ名が重複しています 101 <entity> は現在の有効範囲で既に宣言されています 102 列挙型の forward 宣言は標準ではありません 103 クラスが大きすぎます 104 構造体またはユニオンが大きすぎます 105 ビットフィールドのサイズが無効ですビットフィールドの大きさは 型のサイズ以下である必要があります 例えば --strict を使った 以下のような場合です struct X{ int y:5000; }; 106 ビットフィールドの型が無効ですビットフィールドは整数型である必要があります 例 : struct X{ float x:5; float y:2; }; 107 長さがゼロのビットフィールドは無名でなければなりません 108 長さが 1 の符号付きビットフィールド 109 式は ( ポインタ -) 関数型である必要があります 110 定義またはタグ名が期待されます 111 ステートメントに到達できません 112 while が期待されます 114 <entity> が参照されましたが定義されていません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-10

C および C++ コンパイラのエラーおよび警告 115 continue ステートメントはループ内でのみ使用できます 116 break ステートメントはループまたはスイッチ内でのみ使用できます 例 : void foo(void){ int a=0; continue; } または void bar(void){ int a=0; break; } 117 non-void <entity> は値を返す必要があります 118 void 関数は値を返すことができません 119 <type> 型にキャストできません 120 戻り値型と関数型が一致していません 121 case ラベルはスイッチ内でのみ使用できます 122 default ラベルはスイッチ内でのみ使用できます 123 case ラベルの値はこのスイッチ内に既にあります 124 default ラベルはこのスイッチ内に既にあります 125 ( が期待されます 126 式は左辺値でなければなりません 127 ステートメントが期待されます 128 ループには前のコードからは到達できません 129 block-scope 関数には extern 記憶クラスのみを含めることができます 130 { が期待されます 131 式はポインタ - クラス型である必要があります 132 式は構造体へのポインタまたはユニオンへのポインタである必要があります 133 メンバ名が期待されます 134 フィールド名が期待されます 135 <entity> にメンバ <entity> がありません 136 <entity> にフィールド <entity> がありません 137 式は修正可能な左辺値でなければなりません 138 レジスタ変数のアドレスを取得することはできません 139 ビットフィールドのアドレスを取得することはできません 140 関数呼び出し内の引数が多すぎます関数宣言が前の関数プロトタイプのパラメータ数と一致しません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-11

C および C++ コンパイラのエラーおよび警告 例 : extern void foo(int x); void bar(void) { foo(1,2); } 141 ボディがある場合 無名のプロトタイプのパラメータは使用できません 142 式はポインタ - オブジェクト型である必要があります 143 プログラムが大きすぎるか複雑すぎてコンパイルできません 144 <type> 型の値を使用して <type> 型のエンティティを初期化することはできません固定サイズの文字配列を初期化する文字列が 配列のサイズと正確に同じ長さであり 終端の \0 のための余裕がありません 例えば 次のような場合です char name[5] = "Hello"; name 配列は 最大 5 文字を保持できます C の文字列は常に NULL で終わるため ( 例えば "Hello\0") "Hello" は収まりません コンパイラによって 以下のようなメッセージが報告されます エラー :#144: "const char [6]" 型の値を使用して "char [5]" 型のエンティティを初期化することはできませんゼロ以外の int から pointer への暗黙的なキャストが行われる場合にも 同様のエラーが発生します 以下に例を示します void foo_func( void ) { char *foo=1; } では 次のようなメッセージが表示されます #144: "int" 型の値を使用して "char *" 型のエンティティを初期化することはできません キャストに関しては --loose_implicit_cast スイッチを使用して このエラーを非表示にすることができます 145 <entity> は初期化できません 146 イニシャライザの値が多すぎます 147 宣言は <entity> と互換性がありません次の不適切な C コード typedef enum { e } E; typedef enum { f } F; E g(void); F g(void); は すべてのモードで任意エラーであり --diag_warning 147 を使ってエラーから警告にダウングレードすることも --diag_suppress 147 を使って完全に非表示にすることもできます 148 <entity> は既に初期化されています 149 グローバルスコープ宣言にこの記憶クラスを含めることができません 150 型名はパラメータとして再宣言できません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-12

C および C++ コンパイラのエラーおよび警告 151 typedef 名はパラメータとして再宣言できません 152 非ゼロ整数をポインタに変換します 153 式はクラス型である必要があります 154 式は構造体型またはユニオン型である必要があります 155 古い形式の代入演算子 156 古い形式のイニシャライザ 157 式は整数的な定数式でなければなりません 158 式は左辺値または関数指定子でなければなりません 159 宣言は前の <entity> と互換性がありません 160 <entity> の外部名と外部名競合が発生しました 161 認識されない #pragma 163 テンポラリファイル <entity> を開けませんでした 164 テンポラリファイルのディレクトリ名が長すぎます (<entity>) 165 関数呼び出しに引数が少なすぎます 関数プロトタイプで定義されているパラメータの数が 関数呼び出しで渡されたパラメータの数と一致しません 以下に例を示します extern void foo(int x); void bar(void) { foo(); } 166 浮動小数点定数が無効です 167 <type> 型の引数は <type> 型のパラメータと互換性がありません 168 ここでは関数型を使用できません 169 宣言が期待されますこの問題は いくつかの C++ ヘッダファイルを C++ コンパイラではなく C コンパイラでコンパイルしようとした場合に発生します 以下のメッセージが報告されます エラー :#169: 宣言が期待されます 170 ポインタが ベースとなっているオブジェクトの外側を指しています 171 型変換が無効です 172 外部 / 内部のリンケージが前の宣言と競合していますリンケージの不一致に関するエラーは 関数が暗黙的に extern として宣言され 後で static として再宣言された場合 --strict でコンパイルされていなければ 非表示になります 例 : extern void foo(void); static void foo(void){} DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-13

C および C++ コンパイラのエラーおよび警告 173 浮動小数点値が必要な整数型に収まりません 174 式は機能しません 175 添字が範囲外です 177 <entity> が宣言されましたが参照されていません デフォルトでは 使用されない宣言についての警告は 以下の場合に発生します 変数 typedef および関数のローカルな( 関数内の ) 宣言 ラベル ( 常に関数内 ) 最上位のスタティック関数とスタティック変数 --diag_suppress 177 オプションを指定すると これらの警告が非表示になります 178 配列に適用した "&" は機能しません 179 "%" の右オペランドがゼロです 180 引数は仮パラメータと互換性がありません 181 引数は対応するフォーマットストリング変換と互換性がありません例えば --strict でコンパイルした場合 以下のコード unsigned long foo = 0x1234; printf("%08x", foo); で生成される警告は 次のとおりです 警告 : #181-D : 引数は対応するフォーマットストリング変換と互換性がありません 警告が表示されないようにするには コードを次のように書き換えます unsigned long foo = 0x1234; printf("%0lx", foo); または次のようにします unsigned int foo = 0x1234; printf("%0x", foo); char short または int には %0X を使用できます ARM では int も long も 32 ビット幅ですが long 整数には lx を使用して下さい 182 ソースファイル <entity> を開けませんでした ( 検索リストにディレクトリがありません ) 183 キャスト型は整数でなければなりません 184 キャスト型は算術またはポインタでなければなりません 185 ダイナミックな初期化が到達できないコード内にあります 186 符号なし整数とゼロの無効な比較以下に例を示します unsigned short foo; if (foo<0) printf("this never happens"); この場合 符号なしの ( 例えば char や int の ) 値とゼロの比較は常に FALSE に評価されるという警告が発生します 187 == が必要な場所で "=" が使用されています例 : DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-14

C および C++ コンパイラのエラーおよび警告 int main(void) { int a; const int b =1; if (a=b) } 188 列挙型と別の型が混在しています 189 <entity> ファイルの書き込み中にエラーが発生しました 190 中間言語ファイルが無効です 191 型指定子はキャスト型では無効です C の仕様では キャストは左辺値を生成しないことになっているので 修飾された型へのキャストは修飾されていないバージョンの型へのキャストと同じ効果を持つことになります この警告は コードには問題がないものの 型修飾子が効果を持たないことをユーザに知らせるだけのものです この警告は --diag_suppress 191 で非表示にすることができます 例 : "val2 = (const float)val1;" は "val2 = (float)val1;" と同等 192 認識されない文字エスケープシーケンスこのエラーは 通常 16 ビットの Unicode 文字などの非 ASCII 文字セットを使おうとしたことに関連しています コンパイラでは Unicode などのマルチバイト文字セットがサポートされます ソースファイルは コンピュータで選択されているロケールに応じてコンパイルされます そのようにせずに エスケープ処理を使って 特定の値をエンコードすることもできます (Kernighan and Ritchie の A2.5.2 で推奨されています ) 以下に例を示します char *p = "\x12\x34\x56\x78"; // 12 34 56 78 文字エスケープと文字列エスケープでは \ の次の文字に特別な意味がない場合 エスケープの値はその文字自身となります 例えば \s は s と同じなので 警告が生成されます 193 未定義のプリプロセッシング識別子としてゼロが使用されています <entity> 194 asm ストリングが期待されます 195 asm 関数はプロトタイプにする必要があります 196 asm 関数には省略記号を含めることができません 219 ファイル <entity> の削除中にエラーが発生しました 220 整数値が必要な浮動小数点型に収まりません 221 浮動小数点値が必要な浮動小数点型に収まりません 222 浮動小数点演算の結果が範囲外です 223 関数 <entity> が暗黙に宣言されていますこれは 関数のプロトタイプがないときに発生する 一般的な警告です 以下に例を示します DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-15

C および C++ コンパイラのエラーおよび警告 void foo(void) { printf("foo"); } この問題に対処するには #include <stdio.h> を追加します このファイルに printf のプロトタイプが含まれています ANSI C では --diag_suppress 223 でこの警告を非表示にすることができます 旧式の C を ANSI C モードでコンパイルするときには この方法が便利です 224 フォーマットストリングには追加の引数が必要です 225 フォーマットストリングがこの引数の前に終了しています 226 フォーマットストリング変換が無効です 227 マクロ再帰 228 コンマが最後にくる形式は標準ではありません 229 ビットフィールドに列挙型のすべての値を入れることはできません 230 ビットフィールドでは非標準の型です厳密な ANSI C では ビットフィールドに指定できる型は int signed int および unsigned int のみです 例 : struct X { char y:2; }; 231 宣言は関数の外側では見えません 232 void の古い形式の typedef は無視されます 233 左オペランドは このフィールドを含む構造体またはユニオンではありません 234 ポインタは このフィールドを含む構造体またはユニオンを指していません 235 変数 <entity> は 未定義の型で宣言されていました 236 制御式が定数です 237 セレクタ式が定数です 238 パラメータの指定子が無効です 239 クラス宣言外の指定子が無効です 240 宣言に重複した指定子があります 241 ユニオンにはベースクラスが存在することはできません 242 複数のアクセス制御指定子は使用できません 243 クラス定義または構造体定義がありません 244 修飾された名前は クラス <type> またはそのベースクラスのメンバではありません 245 非スタティックメンバ参照は 特定のオブジェクトに関連付けられている必要があります 246 非スタティックデータメンバは そのクラスの外では定義できません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-16

C および C++ コンパイラのエラーおよび警告 247 <entity> は既に定義されています この問題の典型的な例は 変数名が複数回使用されている場合です この問題は 仮宣言に依存する従来のコードをコンパイルしている場合に発生することがあります 仮宣言では 以下のように 変数の宣言と初期化を個別のステートメントで行うことができます int a; int a = 1; 仮宣言は C コードではデフォルトで許可されていますが C++ コードではエラーになります 248 参照へのポインタは使用できません 249 参照を参照することはできません 250 void を参照することはできません 251 参照の配列は使用できません 252 参照 <entity> にはイニシャライザが必要です 253, が期待されます 254 型名は使用できませんこの問題は 以下のように typedef 名が式の中で直接使用されている場合に発生します typedef int footype; int x = footype; // " エラー :#254: 型名は使用できませんこの問題に対処するには 先にその型のインスタンスを作成します 例えば 次のように その新しい型の変数を作成します typedef int footype; footype bar = 1; int x = bar; 255 型定義は使用できません 256 型名 <entity> の再宣言は無効です 257 定数 <entity> にはイニシャライザが必要です 258 "this" は 非スタティックメンバ関数内でのみ使用できます 259 定数値が不明です 260 明示的な型がありません ("int" を想定 ) 261 アクセス制御が指定されていません ( デフォルトでは <entity>) 262 クラス名または構造体名ではありません 263 ベースクラス名が重複しています 264 ベースクラスが無効です 265 <entity> にアクセスできません C++ では --diag_warning 265 オプションによって アクセス制御エラーを警告に降格することができます 以下に例を示します DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-17

C および C++ コンパイラのエラーおよび警告 class A { void f() {}; }; // プライベートメンバ A a; void g() { a.f(); } // 誤ったアクセスでは 次のようなメッセージが表示されます エラー :#265-D : 関数 "A::f" にアクセスできません 266 <entity> があいまいです 267 古いスタイルのパラメータリストです ( アナクロニズム ) 268 宣言は ブロック内の実行可能ステートメントの後には表示できません 269 アクセスできないベースクラス <type> に変換できません 274 マクロ呼び出しが正しく終了しませんでした 276 後に "::" が付いている名前は クラス名またはネームスペース名です 277 friend 宣言が無効です 278 コンストラクタまたはデストラクタが値を返すことはできません 279 デストラクタ宣言が無効です 280 クラスと同じ名前のメンバを宣言します 281 グローバルスコープ修飾子 ("::" が先行 ) は使用できません 282 グローバルスコープには <entity> が含まれていません 283 修飾された名前は使用できません 284 NULL 参照は使用できません 285 "<...>" による初期化は <type> 型のオブジェクトには使用できません 286 ベースクラス <type> があいまいです 287 派生したクラス <type> にはクラス <type> の複数のインスタンスが含まれています 288 ベースクラス <type> へのポインタを派生クラス <type> へのポインタに変換できません ベースクラスは仮想です 289 引数リストと一致するコンストラクタ <entity> のインスタンスはありません 290 クラス <type> のコピーコンストラクタがあいまいです 291 クラス <type> のデフォルトコンストラクタはありません 292 <entity> は クラス <type> の非スタティックデータメンバまたはベースクラスではありません 293 間接非仮想ベースクラスは使用できません 294 ユニオンメンバが無効です -- クラス <type> には禁止されたメンバ関数が含まれています 296 左辺値でない配列は使用できません 297 演算子が期待されます 298 継承されたメンバは使用できません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-18

C および C++ コンパイラのエラーおよび警告 299 <entity> のどのインスタンスを対象にしているか特定できません 300 bound 関数へのポインタは関数の呼び出しにのみ使用できます 301 typedef 名は既に宣言されています ( 同じ型で ) 302 <entity> は既に定義されています 304 引数リストと一致する <entity> のインスタンスはありません 305 関数の戻り値型の宣言内では型を定義できません 306 デフォルト引数がパラメータリストの最後にありません 307 デフォルト引数の再定義です 308 <entity> の複数のインスタンスが引数リストと一致しています 309 コンストラクタ <entity> の複数のインスタンスが引数リストと一致しています 310 <type> 型のデフォルト引数は <type> 型のパラメータと互換性がありません 311 戻り値型のみで識別される関数はオーバーロードできません 312 <type> から <type> への適切なユーザ定義変換がありません 313 この関数には型指定子を使用できません 314 非スタティックメンバ関数のみを仮想にできます 315 オブジェクトにはメンバ関数と互換性のない cv 修飾子が含まれています 316 プログラムが大きすぎてコンパイルできません ( 仮想関数が多すぎます ) 317 戻り値型が戻り値型 <type> ( オーバーライドされた仮想関数 <entity> のもの ) と同じでないか 共変ではありません 318 仮想 <entity> のオーバーライドがあいまいです 319 純指定子 ("= 0") は仮想関数でのみ使用できます 320 不適切な形式の純指定子です ("= 0" のみを使用できます ) 321 データメンバイニシャライザは使用できません 322 抽象クラス型 <type> のオブジェクトは使用できません 323 抽象クラス <type> を返す関数は使用できません 324 friend 宣言が重複しています 325 インライン指定子は関数宣言でのみ使用できます 326 "inline" は使用できません 327 inline 関数の記憶クラスが無効です 328 クラスメンバの記憶クラスが無効です 329 ローカルクラスメンバ <entity> には定義が必要です 330 <entity> にアクセスできません 332 クラス <type> には const オブジェクトをコピーするためのコピーコンストラクタがありません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-19

C および C++ コンパイラのエラーおよび警告 333 暗黙に宣言されたメンバ関数を定義することはできません 334 クラス <type> には適切なコピーコンストラクタがありません 335 リンケージを指定できません 336 外部リンケージ指定が不明です 337 リンケージ指定は前の <entity> と互換性がありません 関数のリンケージが前の宣言への互換性のない指定と共に再宣言された場合に このエラーは生成されます 以下に例を示します int foo(void); int bar(void) { int x; x = foo(); return x; } extern "C" int foo(void) { return 0; } では 次のようなメッセージが表示されます エラー :#337: リンケージ指定は前の "foo" ( 行 1 で宣言 ) と互換性がありません 338 オーバーロードされた関数 <entity> の複数のインスタンスに "C" リンケージが含まれています 339 クラス <type> には複数のデフォルトコンストラクタがあります 340 値がテンポラリにコピーされ テンポラリへの参照が使用されています 341 "operator<entity>" はメンバ関数でなければなりません 342 演算子としてスタティックメンバ関数を使用できません 343 ユーザ定義変換には引数を指定できません 344 この operator 関数のパラメータが多すぎます 345 この operator 関数のパラメータが少なすぎます 346 非メンバ演算子にはクラス型のパラメータが必要です 347 デフォルト引数は指定できません 348 <type> から <type> への複数のユーザ定義変換が適用されます : 349 演算子 <entity> はこれらのオペランドと一致しません 350 複数の演算子 <entity> がこれらのオペランドと一致します : 351 allocation 関数の最初のパラメータは "size_t" 型でなければなりません 352 allocation 関数では "void *" の戻り値型が必要です 353 deallocation 関数では "void" の戻り値型が必要です 354 deallocation 関数の最初のパラメータは "void *" 型でなければなりません 356 型はオブジェクト型でなければなりません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-20

C および C++ コンパイラのエラーおよび警告 357 ベースクラス <type> は既に初期化されています 358 ベースクラス名が必要です -- <type> を想定 ( アナクロニズム ) 359 <entity> は既に初期化されています 360 メンバまたベースクラスの名前がありません 361 this への代入です ( アナクロニズム ) 362 "overload" キーワードが使用されています ( アナクロニズム ) 363 無名共用体が無効です -- パブリックでないメンバは使用できません 364 無名共用体が無効です -- メンバ関数は使用できません 365 グローバルまたはネームスペーススコープにある無名共用体は スタティックとして宣言される必要があります 366 <entity> は次のイニシャライザを提供しません : 367 クラス <type> の暗黙に生成されたコンストラクタは次のものを初期化できません : 368 <entity> は 次のものを初期化するためのコンストラクタを定義していません : これは const 構造体 または const を含む構造体があることを示しています このメッセージは エラー 369 を補助する警告として生成されます 構造体の const メンバが適切に初期化されていれば 無視しても問題ありません 369 <entity> には 初期化されていない const または reference メンバが含まれていますこれは const 構造体 または正しく初期化されていない const を含む構造体のインスタンスがあることを示しています 各インスタンスで構造体を正しく初期化するか 初期化を行うコンストラクタを用意する必要があります 370 <entity> には 初期化されていない const フィールドが含まれています 371 クラス <type> には const オブジェクトをコピーするための代入演算子がありません 372 クラス <type> には適切な代入演算子がありません 373 クラス <type> の代入演算子があいまいです 375 宣言には typedef 名が必要です 377 "virtual" は使用できません 378 "static" は使用できません 379 bound 関数の通常の関数ポインタへのキャストです ( アナクロニズム ) 380 式はポインタ - メンバ型である必要があります 381 余分な ";" は無視されます C では 次の例のように 宣言の行の末尾に予期しないセミコロンがあることによって この問題が発生する場合があります int x;; この問題は マクロを使用しているときに 不注意のために発生することもあります DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-21

C および C++ コンパイラのエラーおよび警告 同様に C++ では この問題が次のような構造によって発生することがあります class X {...} ; ; これは 多くの場合 次のようなマクロの使用が原因です #define M(c) class c {...} ; M(X); 空の宣言は不正であるため 余分なセミコロンは不正です 382 非標準メンバ定数の宣言 ( 標準形式はスタティック const 整数メンバ ) 384 引数リストと一致する多重定義された <entity> のインスタンスはありません 386 必要な型と一致する <entity> のインスタンスはありません 387 配列サイズ削除式が使用されました ( アナクロニズム ) 389 抽象クラス <type> にキャストできません 390 関数 "main" を呼び出したり この関数のアドレスを取得したりすることはできません 391 配列に対して new-initializer を指定できません 392 メンバ関数 <entity> は そのクラスの外では再宣言できません 393 不完全なクラス型へのポインタは使用できません 394 関数内部のローカル変数を参照できません 395 後置の <entity> に単一引数の関数が使用されています ( アナクロニズム ) 398 配列型へのキャストは標準ではありません (<type> へのキャストとして処理されます ) 399 <entity> には演算子 new<entity>() がありますが デフォルト演算子 delete<entity>() はありません 400 <entity> にはデフォルト演算子 delete<entity>() がありますが 演算子 new<entity>() はありません 401 ベースクラス <entity> のデストラクタは仮想ではありません 403 メンバ <entity> の再宣言は無効です 404 関数 "main" はインラインでは宣言できません 405 クラスと同じ名前のメンバ関数はコンストラクタでなければなりません 406 ネストされた <entity> を使用しています ( アナクロニズム ) 407 デストラクタにパラメータを指定することはできません 408 クラス <type> のコピーコンストラクタに <type> 型のパラメータを指定することはできません 409 <entity> は不完全型 <type> を返します 410 保護された <entity> には <type> ポインタまたはオブジェクトを介してアクセスできません 411 パラメータは指定できません 412 ここでは "asm" を宣言できません 413 <type> から <type> への適切な conversion 関数がありません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-22

C および C++ コンパイラのエラーおよび警告 414 不完全なクラスへのポインタを削除します 415 <type> から <type> に変換するための適切なコンストラクタがありません 416 <type> から <type> に変換するために複数のコンストラクタが適用されます : 417 <type> から <type> への複数の conversion 関数が適用されます : 418 <type> から組み込み型への複数の conversion 関数が適用されます : 424 コンストラクタまたはデストラクタは自らのアドレスを取得できません 427 修飾された名前はメンバ宣言では使用できません 428 列挙型と別の型が混在しています ( アナクロニズム ) 429 new 内の配列のサイズは負以外の値でなければなりません 430 ローカルテンポラリへの参照を返します 433 <type> 型の参照と <type> 型のイニシャライザのバインドで修飾子が削除されました 434 <type> 型の参照 (const で修飾されていない ) は <type> 型の値で初期化できません 435 関数へのポインタは削除できません 436 conversion 関数は非スタティックメンバ関数でなければなりません 437 ここではテンプレートを宣言できません 438 < が期待されます 439 > が期待されます 440 テンプレートパラメータ宣言がありません 441 <entity> の引数リストがありません 442 <entity> の引数が少なすぎます 443 <entity> の引数が多すぎます 450 long long 型は標準ではありません 451 <entity> の省略は標準ではありません 452 戻り値型は conversion 関数には指定できません 456 <entity> のインスタンス生成時の過剰な再帰 457 <entity> は 関数またはスタティックデータメンバではありません 458 <type> 型の引数は <type> 型のテンプレートパラメータと互換性がありません 459 テンポラリまたは変換を必要とする初期化は実行できません 460 <entity> の宣言は関数パラメータを非表示にします 461 non-const への参照の初期値は左辺値でなければなりません 463 "template" は使用できません 464 <type> はクラステンプレートではありません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-23

C および C++ コンパイラのエラーおよび警告 467 <entity> への参照が無効です ( ユニオン / 非ユニオンが不一致 ) 468 テンプレート引数はローカル型を参照できません 469 <entity> のタグの種類は <entity> の宣言と互換性がありません 470 グローバルスコープには <entity> という名前のタグが含まれていません 471 <entity> には <entity> という名前のタグメンバがありません 473 <entity> は メンバへのポインタ宣言でのみ使用できます 476 後に "::~" が付いている名前は クラス名または型名です 477 デストラクタ名が <type> クラスの名前と一致しません 478 デストラクタ名として使用されている型が <type> 型と一致しません 479 <entity> は 呼び出された後に "inline" で再宣言されています 485 <entity> は インスタンス化できるエンティティではありません 486 コンパイラによって生成された <entity> は明示的にインスタンス化できません 487 インライン <entity> は明示的にインスタンス化できません 490 <entity> はインスタンス化できません -- 明示的に特殊化されています 494 typedef によって void 型のパラメータリストを宣言するのは標準ではありません コンパイラが ANSI C モードである場合 このエラーは関数宣言 f(v)(v は void 型 ) によって発生した可能性があります f が引数を持たない関数であることを示す特殊構文 f(<void>) では キーワード <void> が必要です 代わりに void 型の名前を使用することはできません 496 テンプレートパラメータ <entity> はこのスコープでは再宣言できません 497 <entity> の宣言はテンプレートパラメータを非表示にします 498 テンプレート引数リストはパラメータリストと一致していなければなりません 501 演算子名は関数として宣言する必要があります 502 演算子名は使用できません 503 <entity> は現在のスコープでは特殊化できません 504 メンバ関数のアドレスを取得するための非標準形式です C++ 標準では メンバへのポインタの名前が 修飾名と & 文字を使って &A::f のようになっている必要があります 以前はフロントエンドが既存の慣行に譲歩して &f や より単純な f のような非標準形式を容認していました 現在では このような使用は任意エラーを生成します 505 テンプレートパラメータが少なすぎます -- 前の宣言と一致しません 506 テンプレートパラメータが多すぎます -- 前の宣言と一致しません 507 演算子 delete(void *) の関数テンプレートは使用できません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-24

C および C++ コンパイラのエラーおよび警告 508 クラステンプレートとテンプレートパラメータの名前を同じにすることはできません 511 列挙型は使用できません 512 参照型に対して型修飾子は使用できません 513 <type> 型の値を <type> 型のエンティティに割り当てることはできません 514 符号なし整数と負の定数の無効な比較 515 不完全なクラス <type> には変換できません 516 const オブジェクトにはイニシャライザが必要です 517 オブジェクトには 初期化されていない const または reference メンバが含まれています 518 非標準のプリプロセッシングディレクティブ 519 <entity> にテンプレート引数リストを指定することはできません 520 <...> による初期化では集合タイプのオブジェクトを期待していました 521 ポインタ - メンバ選択クラス型の間に互換性がありません (<type> と <type>) 522 無効な friend 宣言 524 const オブジェクトに対して non-const 関数が呼び出されています ( アナクロニズム ) 525 依存するステーメントとして宣言は使用できません 526 パラメータを void 型にすることはできません 以下に例を示します void foo(void a) { } 529 この演算子はテンプレート引数式では使用できません 530 トライブロックには 少なくとも 1 つのハンドラが必要です 531 ハンドラには例外宣言が必要です 532 ハンドラはデフォルトハンドラによってマスクされます 533 ハンドラは潜在的に <type> 型の前のハンドラによってマスクされます 534 例外を指定するためにローカル型を使用します 535 例外の指定で型が重複しています 536 例外の指定は 前の <entity> の例外の指定と互換性がありません 540 例外処理のサポートがディセーブルされています 541 例外の指定の省略は前の <entity> と互換性がありません 542 インスタンス生成要求ファイル <entity> を作成できませんでした 543 型のないテンプレート引数では非算術処理を実行できません 544 非ローカル変数の宣言にローカル型を使用します 545 関数の宣言にローカル型を使用します 546 制御の転送により 次の初期化がバイパスされます : 例 : DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-25

C および C++ コンパイラのエラーおよび警告 int main(void){ int choice = 1; int z =1; switch(choice) { case 1: int y = 1; z = y + z; break; case 2: break; } return 0; この例では y は初期化された変数であり 他の ( 使用されない )case のスコープ内にあります C++ Standard のセクション 6.7 に 次のような記載があります It is possible to transfer into a block, but not in a way that bypasses declarations with initialization. A program that jumps from a point where a local variable with automatic storage duration is not in scope to a point where it is in scope is ill-formed unless the variable has POD type (3.9) and is declared without an initializer (8.5). ( ブロック内に移動することは可能ですが 初期化を行う宣言をバイパスしてはいけません 自動保存期間を持つローカル変数がスコープ内にない場所からスコープ内にある場所にジャンプするプログラムは その変数が POD 型であり (3.9) イニシャライザなしで宣言 (8.5) されていない限り 不正な形式です ) 注 switch ステートメントの条件から case ラベルへの移動は こうしたジャンプと考えられます この問題に対処する一般的な方法は y を宣言する case を次のように括弧で囲むことです case 1:{ int y = 1; z = y + z; } break; y は POD(Plain Old Data) 型なので 次のように 初期化を使用しない方法もあります case 1: int y; y = 1; z = y + z; break; 548 例外ハンドラに制御が転送されます 549 値が設定される前に <entity> が使用されています 550 <entity> は設定されましたが使用されませんでした 551 <entity> は現在のスコープでは定義できません 552 例外を指定できません 553 <entity> の外部 / 内部リンケージが競合しています DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-26

C および C++ コンパイラのエラーおよび警告 554 <entity> は 暗黙または明示の変換のために呼び出されません 555 <entity> のタグの種類は <type> 型のテンプレートパラメータと互換性がありません 556 演算子 new(size_t) の関数テンプレートは使用できません 558 <type> 型のメンバへのポインタは使用できません 559 operator 関数のパラメータリストに省略記号を含めることができません 560 <entity> は 将来キーワードとして使用するために予約されています 561 無効なマクロ定義 : 562 無効なマクロ未定義 : 563 無効な <entity> の出力ファイル <filename> 564 <entity> の出力ファイル <filename> を開けません :<reason> 570 デバッグオプション引数にエラーがあります 571 無効なオプション : 574 無効な番号 : 576 無効なインスタンス生成モード : 578 無効なエラーリミット : 585 仮想関数テーブルは C++ のコンパイル時にのみ抑止できます 586 アナクロニズムオプションは C++ のコンパイル時にのみ使用できます 587 インスタンス生成モードオプションは C++ のコンパイル時にのみ使用できます 588 自動インスタンス生成モードは C++ のコンパイル時にのみ使用できます 589 暗黙のテンプレートインクルードモードは C++ のコンパイル時にのみ使用できます 590 例外処理オプションは C++ のコンパイル時にのみ使用できます 593 ソースファイル名がありません 594 複数の入力ファイルをコンパイルする場合は出力ファイルを指定できません 595 コマンドラインに引数が多すぎます 596 出力ファイルが指定されていますが どのファイルも必要ありません 598 テンプレートパラメータを void 型にすることはできません 600 厳密な ANSI モードは アナクロニズムの許可と互換性がありません 601 throw 式を void 型にすることはできません 602 ローカルインスタンス生成モードは自動インスタンス生成と互換性がありません 603 抽象クラス型 <type> のパラメータは使用できません : 604 抽象クラス <type> の配列は使用できません 605 浮動小数点テンプレートパラメータは標準ではありません 606 このプラグマは宣言の直前になければなりません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-27

C および C++ コンパイラのエラーおよび警告 607 このプラグマはステートメントの直前になければなりません 608 このプラグマはステートメントまたは宣言の直前になければなりません 609 ここでこの種類のプラグマは使用できません 611 オーバーロードされた仮想関数 <entity> は <entity> で一部分がオーバーライドされます 612 inline template 関数の特定の定義は その関数が初めて使用される前に指定する必要があります 613 診断制御オプション内の無効なエラータグ : 614 診断制御オプション内の無効なエラー番号 : 615 パラメータ型には 境界が不明な配列へのポインタが含まれます 616 パラメータ型には 境界が不明な配列への参照が含まれます 617 メンバ関数へのポインタを関数へのポインタにキャストします 618 構造体またはユニオンが名前付きのメンバを宣言していません 619 非標準の無名のフィールド 620 非標準の無名のメンバ 624 <entity> は型名ではありません 625 プリコンパイルヘッダ入力ファイル <entity> を開けません :<reason> 626 プリコンパイルヘッダファイル <entity> は無効か このバージョンのコンパイラによって生成されたものではありません 627 プリコンパイルヘッダファイル <entity> がこのディレクトリで生成されていません 628 プリコンパイルヘッダファイル <entity> の生成に使用されたヘッダファイルが変更されています 629 コマンドラインオプションが プリコンパイルヘッダファイル <entity> の作成時に使用されたものと一致しません 630 プリプロセッシングディレクティブの初期シーケンスは プリコンパイルヘッダファイル <entity> の初期シーケンスと互換性がありません 631 <entity> に対して マップされたメモリを取得できません : <reason> これは 大きなプリコンパイルヘッダ (PCH) の使用を試みたときに ARM コンパイラツールチェーンが使用する TMP ディレクトリにサイズの制限がある場合に発生する可能性があります これを回避するには TMP 環境変数を削除します これにより 現在の作業ディレクトリに一時ファイルが作成されます ARM コンパイラツールチェーンの概要 の以下の章を参照して下さい 一時ファイルディレクトリの TMP および TMPDIR 環境変数 ( ページ 2-29) 632 "<entity>" : プリコンパイルヘッダファイル "<entity>" の使用 633 "<entity>" : プリコンパイルヘッダファイル "<entity>" の作成 634 メモリの使用法がプリコンパイルヘッダファイル <entity> と競合しています DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-28

C および C++ コンパイラのエラーおよび警告 これは コンパイラのアドレス空間の必須部分を使用できないために PCH ファイルをビルドにマップできない場合に発生する可能性があります エラー 631 も参照して下さい 635 PCH メモリサイズが無効です 636 PCH オプションは コマンドラインの最初に表示されなければなりません 637 PCH メモリ割り当て用のメモリが足りません 638 プリコンパイルヘッダファイルは 複数の入力ファイルをコンパイルする場合は使用できません 639 プリコンパイルヘッダファイルを生成するには 割り当て済みのメモリが足りません (<entity> バイト必要 ) 640 プログラム内に非常に大きなエンティティがあるため プリコンパイルヘッダファイルを生成できません 641 <entity> は有効なディクレトリではありません 642 テンポラリファイル名を作成できません 643 "restrict" は使用できません 644 関数型へのポインタまたは参照は "restrict" によって修飾できません 645 <entity> は 認識されない declspec 属性です 646 ここで呼び出し規則修飾子を指定することはできません 647 呼び出し規則修飾子が競合しています 650 ここで指定した呼び出し規則は無視されます 651 呼び出し規則の後に ネストされた宣言子を続けることはできません 652 この型では呼び出し規則は無視されます 654 宣言修飾子は前の宣言と互換性がありません 655 修飾子 <entity> はこの宣言には使用できません 656 トライブロックに制御が転送されます 657 インラインの指定は前の <entity> と互換性がありません 658 テンプレート定義の閉じ括弧が見つかりません 659 wchar_t keyword オプションは C++ のコンパイル時にのみ使用できます 660 パックアライメント値が無効です 661 整数定数が期待されます 662 純仮想関数の呼び出し例えば 次のように 純仮想関数 pvfn が呼び出されるとします struct T { T(); virtual void pvfn() = 0; }; // 純仮想関数 T::T() { pvfn(); } // ここで警告が発生 DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-29

C および C++ コンパイラのエラーおよび警告 デフォルトでは 純仮想関数を呼び出すと 次のような結果になります 1. ライブラリ関数 cxa_pure_virtual() が呼び出される 2. cxa_pure_virtual() 関数がシグナル SIGPVFN を生成する 3. このシグナルが default_signal_handler によってトラップされる 4. このハンドラがセミホスティングを使ってコンソールに " 純仮想関数が呼び出されました " と表示する コンパイラリファレンス の以下のセクションを参照して下さい 純仮想関数の呼び出し ( ページ E-3) 663 ソースファイル識別子ストリングが無効です 664 クラステンプレートは friend 宣言では定義できません 665 "asm" は使用できません 666 "asm" は関数定義と一緒に使用する必要があります 667 "asm" 関数は標準ではありません 668 明示的なパラメータなしの省略記号は標準ではありません 669 "&..." は標準ではありません 670 "&..." は使用できません 672 const volatile への参照の初期値としてテンポラリが使用されています ( アナクロニズム ) 673 <type> 型の参照は <type> 型の値で初期化することはできません 674 const volatile への参照の初期値は左辺値でなければなりません 676 <entity> のスコープ外宣言の使用 678 <entity> の呼び出しはインラインにできません 679 <entity> はインラインにできません 680 無効な PCH ディレクトリ : 688 <entity> がパックアライメントスタックで見つかりません 689 パックアライメントスタックが空です 690 RTTI オプションは C++ のコンパイル時にのみ使用できます 691 削除されたコピーに必要な <entity> にアクセスできません 692 参照パラメータを右辺値にバインドできないので 削除されたコピーに必要な <entity> を呼び出せません 693 <typeinfo> は typeid を使用する前にインクルードする必要があります 694 <entity> は const またはその他の型修飾子をキャストできません 695 dynamic_cast の型は 完全なクラス型へのポインタか参照 または void * でなければなりません 696 ポインタ dynamic_cast のオペランドは 完全なクラス型へのポインタでなければなりません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-30

C および C++ コンパイラのエラーおよび警告 697 参照 dynamic_cast のオペランドは 完全なクラス型の左辺値でなければなりません 698 ランタイム dynamic_cast のオペランドは ポリモーフィッククラスでなければなりません 699 bool オプションは C++ のコンパイル時にのみ使用できます 702 = が期待されます 703 条件宣言内で宣言子が期待されます 704 条件内で宣言されている <entity> は このスコープでは再宣言できません 705 デフォルトのテンプレート引数は 関数テンプレートには使用できません 706, または ">" が期待されます 707 テンプレートパラメータリストが期待されます 708 ブール値のインクリメントは廃止される予定です 709 ブール型は使用できません 710 ベースクラス <entity> のオフセット ( クラス <entity> 内 ) が大きすぎます 711 式はブール型 ( またはブールに変換可能な型 ) でなければなりません 712 array new および delete オプションは C++ のコンパイル時にのみ使用できます 713 <entity> は変数名ではありません 717 const_cast 内の型は オブジェクト型へのポインタ 参照 またはポインタ - メンバでなければなりません 718 const_cast は型指定子のみを調整できます 基本型を変更することはできません 719 mutable は使用できません 720 <entity> を再定義してアクセス権を変更することはできません 722 代替トークン "<:" の使用は予想されていません 723 代替トークン "%:" の使用は予想されていません 724 ネームスペースは定義できません 725 名前はネームスペース名でなければなりません 726 ネームスペースエイリアスは定義できません 727 ネームスペースで修飾された名前が必要です 728 ネームスペース名は使用できません 730 <entity> はクラステンプレートではありません 731 不完全な要素型の配列は標準ではありません 732 領域割り当て演算子はネームスペースでは宣言できません 733 領域解放演算子はネームスペースでは宣言できません 734 <entity> は <entity> の using 宣言と競合しています 735 <entity> の using 宣言は <entity> と競合しています DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-31

C および C++ コンパイラのエラーおよび警告 736 ネームスペースオプションは C++ のコンパイル時にのみ使用できます 737 using 宣言は無視されます -- 現在のネームスペースを参照しています 738 クラスで修飾された名前が必要です 744 互換性のないメモリ属性が指定されています 745 メモリ属性は無視されます 746 メモリ属性の後に ネストされた宣言子を続けることはできません 747 メモリ属性が複数回指定されています 748 呼び出し規則が複数回指定されています 749 型修飾子は使用できません 750 <entity> が そのテンプレートを宣言する前に使用されました 751 同じパラメータ型のスタティックおよび非スタティックメンバ関数は多重定義できません 752 <entity> が前に宣言されていません 753 テンプレート id は使用できません 754 クラスで修飾された名前は使用できません 755 <entity> は現在のスコープでは宣言できません 756 修飾された名前はネームスペースメンバ宣言では使用できません 757 <entity> は型名ではありません 758 明示的なインスタンス生成は現在のスコープでは実行できません 759 <entity> は現在のスコープでは明示的にインスタンス化できません 760 <entity> が複数回明示的にインスタンス化されています 761 typename はテンプレート内でのみ使用できます 763 typename オプションは C++ のコンパイル時にのみ使用できます 764 implicit typename オプションは C++ のコンパイル時にのみ使用できます 765 オブジェクトライクなマクロ定義の先頭に非標準文字があります 766 仮想 <entity> の例外の指定は オーバーライドされた <entity> の指定と互換性がありません 767 ポインタをより小さい整数に変換します 768 暗黙的に宣言された仮想 <entity> の例外の指定は オーバーライドされた <entity> の指定と互換性がありません 769 <entity> (<entity> から暗黙的に呼び出し ) があいまいです 770 オプション "explicit" は C++ のコンパイル時にのみ使用できます 771 "explicit" は使用できません 772 宣言が <entity> ( 予約済みクラス名 ) と競合しています 773 () のみが配列 <entity> のイニシャライザとして使用できます DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-32

C および C++ コンパイラのエラーおよび警告 774 "virtual" は関数テンプレート宣言では使用できません 775 無名共用体が無効です -- クラスメンバテンプレートは使用できません 776 テンプレートのネストの深さが <entity> の前の宣言と一致しません 777 この宣言には複数の "template <...>" 節を含めることができません 778 for-init のスコープを制御するオプションは C++ のコンパイル時にのみ使用できます 779 for-loop 初期化で宣言された <entity> は このスコープでは再宣言できません 780 <entity> への参照です -- 古い for-init スコープルールでは <entity> でした 781 for-init の相違に対する警告を制御するオプションは C++ のコンパイル時にのみ使用できます 782 ここでは仮想 <entity> の定義が必要です 783 空のコメントはトークン貼り付け演算子 "##" として解釈されます 784 記憶クラスは friend 宣言では使用できません 785 <entity> のテンプレートパラメータリストはこの宣言では使用できません 786 <entity> は有効なメンバクラスまたは関数テンプレートではありません 787 有効なメンバクラスまたは関数テンプレート宣言ではありません 788 テンプレートパラメータリストを含むテンプレート宣言の後に 明示的な特殊化宣言を続けることはできません 789 <entity> の明示的な特殊化は <entity> を初めて使用する前に行う必要があります 790 明示的な特殊化は現在のスコープでは実行できません 791 <entity> の部分的な特殊化は実行できません 792 <entity> は明示的に特殊化できるエンティティではありません 793 <entity> の明示的な特殊化は 初めて使用する前に実行する必要があります 794 テンプレートパラメータ <entity> は elaborated 型指定子では使用できません 795 <entity> を特殊化するには "template<>" 構文を使用する必要があります 798 オプション old_specializations は C++ のコンパイル時にのみ使用できます 799 template<> 構文を使用しない <entity> の特殊化は標準ではありません 800 この宣言に extern "C" リンケージを含めることはできません 801 <entity> は 現在のスコープのクラスまたは関数テンプレート名ではありません 802 参照されていない関数テンプレートの再宣言時におけるデフォルト引数の指定は標準ではありません 803 既に参照されている関数テンプレートの再宣言時にデフォルト引数を指定することはできません 804 ベースクラス <type> のメンバへのポインタは派生クラス <type> のメンバへのポインタに変換できません ベースクラスは仮想です 805 例外の指定は <entity><entity> の例外の指定と互換性がありません 806 例外の指定の省略は <entity> と互換性がありません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-33

C および C++ コンパイラのエラーおよび警告 807 デフォルト引数式の最後が期待されていませんでした 808 参照のデフォルト初期化は実行できません 809 初期化されていない <entity> に const メンバが含まれています 810 初期化されていないベースクラス <type> に const メンバが含まれています 811 const <entity> にはイニシャライザが必要です -- クラス <type> には明示的に宣言されたデフォルトコンストラクタがありません 812 const オブジェクトにはイニシャライザが必要です -- クラス <type> には明示的に宣言されたデフォルトコンストラクタがありません 814 厳密な ANSI モードは long 保存規則と互換性がありません 815 戻り値型に対する型修飾子は無効です以下に例を示します packed void foo( void ) { } 戻り値型が packed になることはありえないので packed 修飾子は無視されます 816 関数定義では "void" 戻り値型に対して型修飾子は使用できません 817 スタティックデータメンバ宣言はこのクラスでは使用できません 818 テンプレートのインスタンス生成の結果 無効な関数宣言が生成されました 819 "..." は使用できません 821 extern inline <entity> は参照されましたが定義されていません 822 <type> 型のデストラクタ名が無効です 824 デストラクタ参照があいまいです -- <entity> および <entity> の両方を使用できます 825 <entity> を使用できます 826 <entity> はまったく参照されていません 827 コンストラクタイニシャライザリストでは ユニオンの 1 つのメンバのみを指定できます 828 new[] および "delete[]" のサポートはディセーブルされています 829 生成された C コードで "long double" の代わりに "double" が使用されています 830 <entity> には対応する演算子 delete<entity> ( 割り当てられたオブジェクトの初期化中に例外がスローされた場合に呼び出されます ) がありません 831 配置の削除のサポートはディセーブルされています 832 該当する演算子 delete が表示されていません 833 不完全型へのポインタまたは参照は使用できません 834 部分的な特殊化は無効です -- <entity> は既に全体が特殊化されています 835 例外の指定が不完全です 836 ローカル変数への参照を返します 837 明示的な型の省略は標準ではありません ("int" を想定 ) DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-34

C および C++ コンパイラのエラーおよび警告 関数が戻り値型なしで宣言または定義されています 例えば 次のコードでは foo(void){ int a; } int 型の結果が想定されます 結果を返さない場合は 戻り値型として void を指定して下さい これは 旧式の C では一般的なことです --diag_suppress 837 オプションを指定すると この警告が非表示になります このメッセージの特別なケースである main() については メッセージ番号 938 も参照して下さい 838 複数の部分的な特殊化が <entity> のテンプレート引数リストと一致しています 840 テンプレート引数リストはプライマリテンプレートの宣言では使用できません 841 部分的な特殊化にデフォルトテンプレート引数を指定することはできません 842 <entity> は <entity> のテンプレート引数リストで使用されていません 844 部分的な特殊化のテンプレート引数リストには テンプレートパラメータに型を依存する型のない引数がインクルードされています 845 この部分的な特殊化は <entity> のインスタンス生成に使用されるはずでした 846 この部分的な特殊化は <entity> のインスタンス生成をあいまいにするはずでした 847 式は整数型または列挙型である必要があります 848 式は算術型または列挙型である必要があります 849 式は 算術型 列挙型 またはポインタ型である必要があります 850 キャスト型は整数または列挙でなければなりません 851 キャスト型は 算術 列挙 またはポインタでなければなりません 852 式は 完全なオブジェクト型へのポインタでなければなりません 854 部分的な特殊化の型のない引数は型のないパラメータまたは定数の名前でなければなりません 855 戻り値型が戻り値型 <type> ( オーバーライドされた仮想関数 <entity> のもの ) と同じではありません 856 オプション "guiding_decls" は C++ のコンパイル時にのみ使用できます 857 クラステンプレートの部分的な特殊化は それがメンバになっているネームスペースで宣言する必要があります 858 <entity> は純仮想関数です 859 純仮想 <entity> にはオーバライタがありません 860 declspec 属性は無視されます 861 入力行に無効な文字があります 862 関数は不完全型 <type> を返します DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-35

C および C++ コンパイラのエラーおよび警告 863 この "#pragma pack" ディレクティブの効果は <entity> に対してローカルです 864 <entity> はテンプレートではありません 865 friend 宣言では部分的な特殊化を宣言できません 866 例外の指定は無視されます 867 size_t の宣言が期待される型 <type> と一致しません 868 ネストされたテンプレート引数リストの隣接する ">" 区切り文字の間に空白が必要です (">>" は右シフト演算子 ) 869 ロケール <entity> を設定してマルチバイト文字の処理を有効にすることができませんでした 870 マルチバイト文字シーケンスが無効です 871 テンプレートのインスタンス生成の結果 予期しない関数型 <type> になりました ( テンプレート宣言以降に名前の意味が変更された可能性があります -- テンプレートの型は <type> です ) 872 導入宣言があいまいです -- 複数の関数テンプレート <entity> が <type> 型と一致します 873 型のないテンプレート引数では非整数処理を実行できません 884 メンバへのポインタ表現 <entity> は <entity> に対して既に設定されています 885 <type> を使用して <type> のコンストラクタを指定することはできません 886 整数定数の接尾文字が無効です 890 境界が指定されていない可変長配列は使用できません 891 明示的なテンプレート引数リストはこの宣言では使用できません 892 リンケージを持つエンティティは可変長配列を含む型にすることができません 893 可変長配列の保存期間をスタティックにすることができません 894 <entity> はテンプレートではありません 895 可変長配列次元 (<entity> と宣言 ) 896 テンプレート引数が期待されます 902 型修飾子は無視されます 912 クラスメンバ参照があいまいです -- <entity> が <entity> よりも優先して使用されています 915 セグメント名は既に指定されています 916 派生クラス <type> のメンバへのポインタはベースクラス <type> のメンバへのポインタに変換できません ベースクラスは仮想です 917 インスタンス生成ファイルの無効なディレクトリ : 921 インスタンス生成情報ファイル名は 複数の入力ファイルをコンパイルする場合は指定できません 923 複数のコマンドラインオプションが省略形 "--<entity>" と一致しています 925 関数型の型修飾子は無視されます 926 定義リストファイルを開けません : <entity> 928 va_start の使用法が正しくありません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-36

C および C++ コンパイラのエラーおよび警告 929 va_arg の使用法が正しくありません 930 va_end の使用法が正しくありません 931 pending instantiations は C++ のコンパイル時にのみ使用できます 932 #import ファイルの無効なディレクトリ : 934 参照型のメンバはユニオンでは使用できません 935 ここに "typedef" を指定することはできません 936 <entity> を再宣言するとアクセス権が変更されます 937 クラスまたはネームスペースで修飾された名前が必要です 938 戻り値型 "int" が関数 "main" の宣言で省略されています main() が戻り値型なしで宣言または定義されています 以下に例を示します main(void){ int a; } このコードは --strict でコンパイルされた場合 コンパイラによってエラーとして報告されます 結果を返さない場合は 戻り値型として void を指定して下さい これは 旧式の C では一般的なことです ANSI C では --diag_suppress 938 オプションを指定すると この警告が非表示になります C++ では 常にエラーになります より一般的なケースについては メッセージ番号 837 を参照して下さい 939 メンバへのポインタ表現 <entity> は <entity> において制約が大きすぎます 940 非 void <entity> の末尾に return ステートメントがありません関数に戻り値型が定義されていますが 値が返されていません 例 : int foo(int a) { printf("hello %d", a); } 941 <entity> の重複する using-declaration は無視されます 942 enum ビットフィールドは常に符号なしですが enum <type> には負の列挙子が含まれています 943 オプション "class_name_injection" は C++ のコンパイル時にのみ使用できます 944 オプション "arg_dep_lookup" は C++ のコンパイル時にのみ使用できます 945 オプション "friend_injection" は C++ のコンパイル時にのみ使用できます 946 template の後の名前はテンプレートでなければなりません 949 この宣言時におけるデフォルト引数の指定は標準ではありません 951 関数 "main" の戻り値型は "int" でなければなりません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-37

C および C++ コンパイラのエラーおよび警告 952 型のないテンプレートパラメータをクラス型にすることはできません 953 クラスの外側にあるクラステンプレートメンバの宣言時に デフォルトテンプレート引数を指定できません 954 return ステートメントは コンストラクタのトライブロックのハンドラでは使用できません 955 通常の指定子および拡張指定子は イニシャライザ指定で組み合わせることができません 956 2 番目の添字を最初の添字よりも小さくすることはできません 959 ビットフィールドの宣言されたサイズが ビットフィールド型のサイズよりも大きくなっています <entity> ビットに切り捨てられます 960 コンストラクタ名として使用されている型が <type> 型と一致しません 961 リンケージのない型を使用してリンケージのある変数を宣言しています 962 リンケージのない型を使用して関数を宣言しています 963 戻り値型はコンストラクタには指定できません 964 戻り値型はデストラクタには指定できません 965 ユニバーサル文字名が正しい形式ではありません 966 ユニバーサル文字名が無効な文字を指定しています 967 ユニバーサル文字名は 基本キャクラタセットの文字を指定できません 968 このユニバーサル文字は識別子には使用できません 969 識別子 VA_ARGS は 可変個引数マクロの置換リストにのみ表示できます 970 この friend 宣言の修飾子は無視されます 971 配列範囲指定子はダイナミックなイニシャライザには適用できません 972 プロパティ名はここには表示されません 975 可変長配列型は使用できません 976 複合リテラルは整数的な定数式では使用できません 977 <type> 型の複合リテラルは使用できません 978 テンプレート friend 宣言はローカルクラスでは宣言できません 979 あいまいな "?" 演算 : <type> 型の 2 番目のオペランドは <type> 型の 3 番目のオペランドに変換できます その逆も可能です 980 関数ポインタへの適切な operator() または変換関数のないクラス型のオブジェクトの呼び出し 982 引数リストに対して <type> 型のオブジェクトを呼び出すことができる方法が複数あります 983 typedef 名は既に宣言されています ( 同様の型で ) 984 演算子 new と演算子 delete には内部リンケージを与えることはできません 985 記憶クラス "mutable" は無名共用体には使用できません 986 プリコンパイルヘッダファイルが無効です 987 抽象クラス型 <type> はキャッチ型として使用できません : DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-38

C および C++ コンパイラのエラーおよび警告 988 修飾された関数型を使用して非メンバ関数またはスタティックメンバ関数を宣言することはできません 989 修飾された関数型を使用してパラメータを宣言することはできません 990 修飾された関数型へのポインタまたは参照を作成できません 991 余分な中括弧は標準ではありません 992 無効なマクロ定義 : コンパイル行での "-D##" のような不適切な -D の使用 993 ポインタ型 <type> および <type> の減算は標準ではありません 994 空のテンプレートパラメータリストはテンプレートテンプレートパラメータ宣言では使用できません 995 class が期待されます 996 テンプレートテンプレートパラメータを宣言する場合は "class" キーワードを使用する必要があります 997 <entity> は <entity> によって隠蔽されています -- 仮想関数のオーバーライドを意図? 998 修飾された名前は 関数定義である friend 宣言には使用できません 999 <entity> は <entity> と互換性がありません 1000 ここに記憶クラスを指定することはできません 1001 using-declaration によって指定されたクラスメンバは 直接ベースクラスで表示されていなければなりません 1006 テンプレートテンプレートパラメータは そのテンプレートパラメータのいずれかと同じ名前にすることはできません 1007 デフォルト引数の再帰的なインスタンス生成 1009 <entity> は 定義できるエンティティではありません 1010 デストラクタ名は修飾する必要があります 1011 friend クラス名は "typename" で示すことができません 1012 using-declaration ではコンストラクタまたはデストラクタを指定できません 1013 修飾された friend テンプレート宣言は 前に宣言した特定のテンプレートを参照する必要があります 1014 クラステンプレート宣言内の指定子が無効です 1015 引数は仮パラメータと互換性がありません 1016 ARM 関数修飾子の接頭文字形式は この位置に置くことができません 1017 重複する ARM 関数修飾子は使用できません 1018 ARM 関数修飾子はこの宣言 / 定義には使用できません ARM 関数修飾子には svc pure irq のような修飾子が含まれます コンパイラリファレンス の キーワードと演算子 ( ページ 5-2) を参照して下さい DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-39

C および C++ コンパイラのエラーおよび警告 1019 関数修飾子 <entity> は非スタティックメンバ関数には使用できません 1020 irq 関数は引数を取ることができません 1021 irq 関数は結果を返すことができません 1022 <entity> 関数へのポインタまたは参照を持つことはできません 1023 global_reg はこの宣言には使用できません 1024 無効なグローバルレジスタ番号です 1 ~ 8 を使用できます 無効なレジスタが global_reg で使用されています 例 : global_reg(786) int x; 1025 svc パラメータ <entity> が ARM SVC 命令の許可された範囲 (0 ~ 0xffffff) 外です SVC 番号は ARM コンパイラでは 0 ~ 0xffffff Thumb コンパイラでは 0 ~ 0xFF の範囲に制限されています 標準セミホスティング SVC は ARM では 0x123456 Thumb では 0xAB が使用されます 1026 グローバルレジスタ変数のアドレスを取得することはできません 1027 svc_indirect 関数には引数が必要です 1028 グローバルレジスタ宣言が <entity> と競合しています 1029 packed は 非ポインタパラメータでは無視されます 1030 <entity> <type> は packed なしで前に宣言されています 1031 <type> の定義 ( パックされた <type> 内 ) は packed でなければなりません コンパイラリファレンス では 次のような記載があります パック構造体のすべてのサブ構造体は packed を使用して宣言する必要があります パックされていない子構造体が パックされた親構造体に含まれていると エラーになります サブ構造体が配列である場合も同様です 以下に例を示します typedef struct ChildStruct { int a; } ChildStruct; typedef packed struct ParentStruct { ChildStruct child[1]; } ParentStruct; 次のようなメッセージが表示されます エラー :#1031: "ChildStruct" の定義 ( パックされた "ParentStruct" 内 ) は packed でなければなりません コンパイラリファレンス の packed ( ページ 5-9) を参照して下さい 1032 ネストされたアノニマス <entity> の定義 ( パックされた <type> 内 ) は packed でなければなりません 1033 <entity> は関数定義と互換性がありません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-40

C および C++ コンパイラのエラーおよび警告 1034 irq 関数を関数呼び出しのターゲットにすることはできません 1038 無効なアライメントが指定されています 2 の整数の累乗のみを指定できます 1039 アライメント宣言が <entity> と競合しています 1040 アンダーアライメントは許可されません 1041 自動オブジェクトのアライメントは 8 を超えることができません 以下に例を示します int main(void){ align(16) int foo = 10; } align はローカル変数 foo には使用できないため エラーが発生します コンパイラリファレンス の align ( ページ 5-2) を参照して下さい 1042 <entity> は 位置非依存でコンパイルされている場合 ダイナミックに初期化できません 1043 <entity> は mutable メンバを保持しているので const にできません 1044 オプション "dep_name" は C++ のコンパイル時にのみ使用できます 1045 operator-> 関数のシーケンスのループがクラス <type> で始まっています 1046 <entity> にメンバクラス <entity> がありません 1047 グローバルスコープには <entity> という名前のクラスが含まれていません 1048 テンプレートのデフォルト引数の再帰的なインスタンス生成 1049 アクセス宣言と using 宣言はユニオンに表示できません 1050 <entity> はクラスメンバではありません 1051 非標準メンバ定数を宣言できません 1053 オプション "parse_templates" は C++ のコンパイル時にのみ使用できます 1054 オプション "dep_name" は "no_parse_templates" では使用できません 1055 指定されている言語モードの間に互換性がありません 1056 ネストされたクラスの再宣言は無効です 1057 未知のサイズ配列を含む型は使用できません 1058 スタティックな保存期間を持つ変数は inline 関数内で定義できません 1059 内部リンケージを持つエンティティは 外部リンケージを持つ inline 関数内で参照できません 1060 引数の型 <type> は この型汎用の関数マクロと一致しません 1062 friend 宣言は 前の宣言にデフォルト引数を追加できません 1063 <entity> はこのスコープで宣言できません 1064 予約済みの識別子 <entity> は 関数内でのみ使用できます 1065 このユニバーサル文字を識別子の先頭には使用できません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-41

C および C++ コンパイラのエラーおよび警告 1066 文字列リテラルが期待されます 1070 va_copy の使用法が正しくありません 1071 <entity> は 浮動小数点型と一緒の場合のみ使用できます 1072 複素型は使用できません 1073 指定子の種類が無効です 1074 浮動小数点値は正確に表現できません 1075 複素数浮動小数点演算の結果が範囲外です 1077 イニシャライザは フレキシブル配列メンバに対して指定できません 1079 標準では 後続の宣言によって <entity> に型を指定する必要があります ("int" を想定 ) 1080 インライン <entity> には定義が必要です 1081 整数をより小さいポインタに変換します 1082 _Complex または _Imaginary 型の型指定子には浮動小数点型を含める必要があります 1083 インラインアセンブラの構文エラー 1084 この命令はインラインアセンブラでは使用できません 1085 オペランドがありません 1086 オペランドの型が正しくありません 1087 オペランドは定数でなければなりません 1088 オペランドの数が正しくありません 1089 PSR オペランドが無効です 1090 PSR オペランドが期待されます 1091 指定されたシフトが無効です 1092 acc0 でなければなりません 1093 修正可能な左辺値でなければなりません 1094 レジスタ式が期待されます 1095 ラベル名または関数名が期待されます 1096 命令を条件付きにすることはできません 1097 [ または ] が期待されます 1098 シフト演算が期待されます 1099 ] が期待されません 1100 レジスタ指定シフトは使用できません 1101 プレインデクスアドレシングは使用できません 1102 ポストインデクスアドレシングは使用できません 1103 アドレシングモードではライトバックできません DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-42

C および C++ コンパイラのエラーおよび警告 1104 { が期待されます 1105 } が期待されます 1106 レジスタリストにレジスタが多すぎます 1107 ここでは ^ のみが有効です 1108 レジスタリストに仮想レジスタと C/C++ 式を混在させることはできません 1109 レジスタ範囲では仮想レジスタのみを指定できます 1110 ユーザモードのレジスタ選択 /CPSR 更新は インラインアセンブラではサポートされていません 組み込みアセンブラまたはアウトオブラインアセンブラを使用してください 1111 コプロセッサ名が期待されます 1112 コプロセッサレジスタ名が期待されますこれらのエラーは 次のようなインラインアセンブラによって発生します MCR または MRC 命令で コプロセッサ番号を指定し忘れている 無効なコプロセッサ番号 / コプロセッサレジスタ番号が指定されている正しい使用例は 次のとおりです void foo() { int reg0; asm { MRC p15, 0, reg0, c1, c0, 0 } } 1113 インラインアセンブラは Thumb コードの生成時には使用できません ARM アーキテクチャ v7(armv7) 以降 つまり Cortex シリーズの多くのプロセッサ用のコンパイルでは Thumb インラインアセンブラは廃止される予定です インラインアセンブラでは Thumb(-1) Thumb-2 およびすべての ARMv6 命令がサポートされません ただし (ARM のみで )ARMv4T ARMv5TE および新しい ARMv6 命令のサブセット (ARMv6 メディア命令のみ ) は引き続きサポートされるため 従来のインラインアセンブリコードは正しくビルドされます この警告は インラインアセンブラの代わりに組み込みアセンブラまたはコンパイラ組み込み関数を使用することを推奨するためのものです この警告を回避したくてもコードを変更できない場合は 警告を非表示にするか モジュールを ARMv6 などの以前の CPU 用にコンパイルします 1114 この機能は ターゲットアーキテクチャ / プロセッサではサポートされていません例えば 以下のコードを armcc --cpu 4T でコンパイルした場合 int main(void) { int a,b,c; asm { QADD a,b,c DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-43

C および C++ コンパイラのエラーおよび警告 } return(a); } サチュレート加算命令は ARMv5TE 以降でしかサポートされていないため エラーメッセージが生成されます 1115 const オペランドに割り当てられません 1116 レジスタリストは空にできません 1117 非修飾の仮想関数は使用できません 1118 復帰改行が期待されます 1119 スタティック変数への参照は asm 関数では使用できません 1120 スタティック関数への参照は asm 関数では使用できません 1121 データメンバへのポインタは asm 関数では使用できません 1122 asm 関数にはスタティック修飾子を含めることができません 1123 ベースクラス <type> は <type> の仮想ベースクラスです 1124 ベースクラス <type> は <type> の仮想ベースクラスではありません 1125 <entity> にメンバ関数 <entity> がありません 1126 " asm" はこの宣言には使用できません 1127 メンバイニシャライザリストは asm コンストラクタには使用できません 1128 トライブロックは asm コンストラクタには使用できません 1129 オペランドの順序と前のコンパイラバージョンに互換性がありません 1130 align は typedef では使用できません 1131 移植不可能命令 ( ライトバックとベースを使用する LDM がレジスタリストで指定されている場合 ベースの最終的な値は予想できません ) 1132 移植不可能命令 ( ライトバックとベースを使用する STM がレジスタリストの最初にない場合 ベースの格納値は予想できません ) 1133 式オペランドは仮想ベースレジスタでは使用できません 1134 リテラルは "long long" として処理されます定数が signed long で表現するには大きすぎるので (signed)long long として処理されました 以下に例を示します int foo(unsigned int bar) { return (bar == 2147483648); } 2147483648 は signed long で使用できる最大値より 1 大きいので 警告が発生します ll 接尾文字は 定数が signed long 型ではなく (64 ビットの )long long 型として処理されることを意味します 警告が表示されないようにするには 定数に明示的に ll または LL 接尾文字を追加します 以下に例を示します DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-44