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

Size: px
Start display at page:

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

Transcription

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

2 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 アドレス DUI 0496BJ Copyright 2010 ARM. All rights reserved. ii

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

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

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

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

7 第 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

8 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

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

10 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

11 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

12 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

13 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

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

15 C および C++ コンパイラのエラーおよび警告 例 : long l = ; 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

16 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

17 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

18 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

19 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

20 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

21 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"; // 文字エスケープと文字列エスケープでは \ の次の文字に特別な意味がない場合 エスケープの値はその文字自身となります 例えば \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

22 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

23 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

24 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

25 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

26 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

27 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

28 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

29 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

30 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

31 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

32 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

33 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

34 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

35 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

36 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

37 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

38 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

39 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

40 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

41 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

42 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

43 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

44 C および C++ コンパイラのエラーおよび警告 952 型のないテンプレートパラメータをクラス型にすることはできません 953 クラスの外側にあるクラステンプレートメンバの宣言時に デフォルトテンプレート引数を指定できません 954 return ステートメントは コンストラクタのトライブロックのハンドラでは使用できません 955 通常の指定子および拡張指定子は イニシャライザ指定で組み合わせることができません 番目の添字を最初の添字よりも小さくすることはできません 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

45 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

46 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 では 0x 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

47 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

48 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

49 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

50 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 == ); } は signed long で使用できる最大値より 1 大きいので 警告が発生します ll 接尾文字は 定数が signed long 型ではなく (64 ビットの )long long 型として処理されることを意味します 警告が表示されないようにするには 定数に明示的に ll または LL 接尾文字を追加します 以下に例を示します DUI 0496BJ Copyright 2010 ARM. All rights reserved. 2-44

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

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用 RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用体型のローカル変数を文字列操作関数で操作する場合の注意事項 (RXC#013) 配列型構造体または共用体の配列型メンバから読み出した値を動的初期化に用いる場合の注意事項

More information

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

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く 変数 入出力 演算子ここまでに C 言語プログラミングの様子を知ってもらうため printf 文 変数 scanf 文 if 文を使った簡単なプログラムを紹介した 今回は変数の詳細について習い それに併せて使い方が増える入出力処理の方法を習う また 演算子についての復習と供に新しい演算子を紹介する 変数の宣言プログラムでデータを取り扱う場合には対象となるデータを保存する必要がでてくる このデータを保存する場所のことを

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 03 変数と式 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 3.1 変数と型 変数とは p.60 C 言語のプログラム中で, 入力あるいは計算された数や文字を保持するには, 変数を使用する. 名前がついていて値を入れられる箱, というイメージ. 変数定義 : 変数は変数定義 ( 宣言 ) してからでないと使うことはできない. 代入 : 変数には値を代入できる.

More information

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

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

More information

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

R2.7 ポインタの型に気を付ける R2.7.1 (1) ポインタ型は 他のポインタ型及び整数型と相互に変換してはならない ただし データへのポインタ型における void* 型との相互変換は除く (2) ポインタ型は 他のポインタ型 及びポインタ型のデータ幅未満の整数型と相互に変換してはならない た [ 信頼性 1] R1 領域は初期化し 大きさに気を付けて使用する R1.1 領域は 初期化してから使用する R1.1.1 自動変数は宣言時に初期化する または値を使用する直前に初期値を代入する 9.1 R9.1 EXP33-C -456 R1.1.2 const 型変数は 宣言時に初期化する EXP40-C -456 R1.2 初期化は過不足無いことが分かるように記述する R1.2.1 R1.2.2

More information

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

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い ツールニュース RENESAS TOOL NEWS 2014 年 02 月 01 日 : 140201/tn1 SuperH RISC engine ファミリ用 C/C++ コンパイラパッケージ V.7~V.9 ご使用上のお願い SuperH RISC engine ファミリ用 C/C++ コンパイラパッケージ V.7~V.9の使用上の注意事項 4 件を連絡します 同一ループ内の異なる配列要素に 同一の添え字を使用した場合の注意事項

More information

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

Microsoft PowerPoint - CproNt02.ppt [互換モード] 第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 2018/10/05 竹島研究室創成課題 第 2 回 C 言語演習 変数と演算 東京工科大学 加納徹 前回の復習 Hello, world! と表示するプログラム 1 #include 2 3 int main(void) { 4 printf("hello, world! n"); 5 return 0; 6 } 2 プログラム実行の流れ 1. 作業ディレクトリへの移動 $ cd

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,

More information

数値計算

数値計算 プログラム作成から実行まで 数値計算 垣谷公徳 17 号館 3 階電子メール : kimi@ee.ous.ac.jp Source program hello.c printf("hello\n"); コンパイラ Library libc.a 0011_printf000101001 1101_getc00011100011 1011_scanf1110010100 コンパイル Object module

More information

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

Microsoft Word - Training10_プリプロセッサ.docx Training 10 プリプロセッサ 株式会社イーシーエス出版事業推進委員会 1 Lesson1 マクロ置換 Point マクロ置換を理解しよう!! マクロ置換の機能により 文字列の置き換えをすることが出来ます プログラムの可読性と保守性 ( メンテナンス性 ) を高めることができるため よく用いられます マクロ置換で値を定義しておけば マクロの値を変更するだけで 同じマクロを使用したすべての箇所が変更ができるので便利です

More information

Microsoft Word - no02.doc

Microsoft Word - no02.doc 使い方 1ソースプログラムの入力今回の講義では C++ 言語用の統合環境ソフトといわれるプログラムを利用します デスクトップにある CPad for C++ のアイコン ( 右参照 ) をダブルクリ ックしましょう ( 同じアイコンで Java_pad とかい エディタ部 てあるものもありますので気をつけてください ) これで 起 動します 統合環境を立ち上げると エディタ部とメッセージ部をもった画面が出てきます

More information

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

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 7 ( 水 5) 13: 構造体 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2016-07-06 1 例題 : 多角形の面積 n = 5 (5 角形 ) の例 n 1 n 1 1 p 1 T 0 S = i=0 p 0 T i = i=0 2

More information

gengo1-2

gengo1-2 変数 プログラム中で 値を格納するには変数 variable を用いる変数は 格納する値の型によって 整数型 文字型 などの型 type をもつ変数を使うには 利用に先立って変数の宣言 declaration をしなければならない 値 変数の値はコンピュータのメモリ上に格納される 具体的にメモリのどの場所に格納されるかは言語処理系が自動的に扱うので プログラマ ( 特に初級者 ) が意識する必要はない

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 総機 1 ( 月 1) 13: 構造体 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2015-07-06 1 例題 : 多角形の面積 n = 5 (5 角形 ) の例 n 1 n 1 p 1 S = T i = 1 2 p i p i+1 i=0 i=0

More information

Java講座

Java講座 ~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double

More information

Microsoft PowerPoint pptx

Microsoft PowerPoint pptx 情報処理 Ⅱ 第 10 回 2010 年 12 月 20 日 ( 月 ) 授業の進め方 プリプロセッサ指令 構造体 ファイル入出力 その他の型 記憶域管理関数 2 年以降でさらに学習 習熟 自分の思う通りに, 適切な形で, 配列 文字列プログラムとして表現する. ポインタ変数の関数識別子算術型有効範囲再帰呼び出しライブラリ関数制御文演算子 式評価 プログラムの作成 コンパイル 実行 2 本日学ぶこと

More information

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

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do 8 構造体と供用体 ( 教科書 P.71) 構造体は様々なデータ型,int 型,float 型や char 型などが混在したデータを一つのまとまり, 単位として扱える.( 配列は一つのデータ型しか扱えない.) 構造体は柔軟なデータ構造を扱えるので, プログラムを効率よく開発できる. つまり構造体を使用すると, コード量を抑え, バグを少なくし, 開発時間を短くし, 簡潔なプログラムが作れる. 共用体は,

More information

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

Microsoft PowerPoint - 計算機言語 第7回.ppt 計算機言語第 7 回 長宗高樹 目的 関数について理解する. 入力 X 関数 f 出力 Y Y=f(X) 関数の例 関数の型 #include int tasu(int a, int b); main(void) int x1, x2, y; x1 = 2; x2 = 3; y = tasu(x1,x2); 実引数 printf( %d + %d = %d, x1, x2, y);

More information

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

株式会社アルウィン C 言語コーディング規約 ver.0.1 C 言語コーディング規約 ver.0.1 1. はじめに本コーディング規約は ( 株 ) アルウィン社内で作成する C 言語ソースコードの可読性 メンテナンス性の向上 丌具合の混入を防ぎやすくするための記述方法及び 推奨する記述方法を記述した文書である 2. 目的 本コーディング規約は ソースコードの可読性 メンテナンス性の向上 丌具合の混入 を可能な限り防ぎ 品質の高いソースコードを作成する一助とすることを目的とする

More information

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

SuperH RISC engine C/C++ コンパイラ Ver.7 不具合内容 - 過去のお知らせ SuperH RISC engine C/C++ コンパイラ Ver.7 台における不具合内容を以下に示します のチェックツールをルネサスエレクトロニクス株式会社のホームページ SuperH RISC engine C/C++ コンパイラ Ver.7 不具合内容 - 過去のお知らせ SuperH RISC engine C/C++ コンパイラ Ver.7 台における不具合内容を以下に示します 1. 2. 4. のチェックツールをルネサスエレクトロニクス株式会社のホームページより入手できます http//tool-support.renesas.com/jpn/toolnews/shc/shcv7/dr_shcv7_4.html

More information

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - 09.pptx 情報処理 Ⅱ 第 9 回 2014 年 12 月 22 日 ( 月 ) 関数とは なぜ関数 関数の分類 自作関数 : 自分で定義する. ユーザ関数 ユーザ定義関数 などともいう. 本日のテーマ ライブラリ関数 : 出来合いのもの.printf など. なぜ関数を定義するのか? 処理を共通化 ( 一般化 ) する プログラムの見通しをよくする 機能分割 ( モジュール化, 再利用 ) 責任 ( あるいは不具合の発生源

More information

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

Cコンパイラパッケージお知らせ 201406-2 CubeSuite+ 版 RX ファミリ用 C/C++ コンパイラパッケージ V1 および High-performance Embedded Workshop 版 RX ファミリ用 C/C++ コンパイラパッケージ ご使用上のお願い CubeSuite+ 版 RX ファミリ用 C/C++ コンパイラパッケージ V1 および High-performance Embedded Workshop

More information

講習No.1

講習No.1 プログラムはどこに保存され, どこで実行されるのか? 復習 ハードディスク キーボード Central Processing Unit 例えば i7, ARM, Cortex-A17 ディスプレイ 例えば 4G バイト メモリ プログラムは, ワープロ文章などと同様, ハードディスクなどにファイルとして保存されている. プログラムは, メモリ上に呼び出されて ( ロード ) 実行される. プログラムの作成

More information

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

Taro-ポインタ変数Ⅰ(公開版).j 0. 目次 1. ポインタ変数と変数 2. ポインタ変数と配列 3. ポインタ変数と構造体 4. ポインタ変数と線形リスト 5. 問題 問題 1 問題 2-1 - 1. ポインタ変数と変数 ポインタ変数には 記憶領域の番地が格納されている 通常の変数にはデータが格納されている 宣言 int *a; float *b; char *c; 意味ポインタ変数 aは 整数型データが保存されている番地を格納している

More information

Prog1_10th

Prog1_10th 2012 年 6 月 20 日 ( 木 ) 実施ポインタ変数と文字列前回は, ポインタ演算が用いられる典型的な例として, ポインタ変数が 1 次元配列を指す場合を挙げたが, 特に,char 型の配列に格納された文字列に対し, ポインタ変数に配列の 0 番の要素の先頭アドレスを代入して文字列を指すことで, 配列そのものを操作するよりも便利な利用法が存在する なお, 文字列リテラルは, その文字列が格納されている領域の先頭アドレスを表すので,

More information

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

情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 ) 情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 ) 本日学ぶこと 関数と変数 目的 関数を自分で定義し, 変数の利用方法 範囲を明示的に制限することで, 適切な機能分割 ( モジュール化, 再利用 ) を図る. してはいけないこと main 関数のみで 100 行以上のプログラム グローバル変数を駆使するプログラム プログラムを読みやすくする 保守性向上 入 p.109 2 関数 (Function)

More information

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

第1回 プログラミング演習3 センサーアプリケーション C プログラミング - ポインタなんて恐くない! - 藤田悟 fujita_s@hosei.ac.jp 目標 C 言語プログラムとメモリ ポインタの関係を深く理解する C 言語プログラムは メモリを素のまま利用できます これが原因のエラーが多く発生します メモリマップをよく頭にいれて ポインタの動きを理解できれば C 言語もこわくありません 1. ポインタ入門編 ディレクトリの作成と移動 mkdir

More information

Prog2_12th

Prog2_12th 2018 年 12 月 13 日 ( 木 ) 実施クラスの継承オブジェクト指向プログラミングの基本的な属性として, 親クラスのメンバを再利用, 拡張, または変更する子クラスを定義することが出来る メンバの再利用を継承と呼び, 継承元となるクラスを基底クラスと呼ぶ また, 基底クラスのメンバを継承するクラスを, 派生クラスと呼ぶ なお, メンバの中でコンストラクタは継承されない C# 言語では,Java

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラマー勉強会 1 回 basic.h 補足 [ 修飾子 ] const 付けた変数は初期化以外で値を設定することができなくなる 定数宣言に使う unsigned 付けた変数は符号がなくなり 正の値しか設定できない [ 条件コンパイル ] #ifdef M ここ以前に M がマクロとして定義されていれば ここ以下をコンパイルする #ifndef M ここ以前に M というマクロが定義されていなければ

More information

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

Microsoft PowerPoint - 12.ppt [互換モード] 第 12 回新しい型と構造体 1 今回の目標 新しい型の定義法を理解する 構造体を理解する 複素数同士を足し算する関数を作成し その関数を利用するプログラムを作成する 2 複素数の足し算 複素数は実部と虚部の2つの実数で 表現される z = a+ bi z = a + bi z = a + b i 2 つの複素数 1 1 1 と 2 2 2 の和 z = a + bi は 次式で与えられる 3 3

More information

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

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a MATLAB コードを使用した C コードの生成クイックスタートガイド (R2016a) 最初のスタンドアロン C コードの生成 スタンドアロン C コードを生成するには [ ビルド ] を [ ソースコード ] [ スタティックライブラリ ] [ ダイナミックライブラリ ] または [ 実行ファイル ] のいずれかに切り替えます MATLAB Coder を使用することで MATLAB コードから

More information

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

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

More information

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - lec10.ppt 今日の内容, とポインタの組み合わせ, 例題 1. 住所録例題 2. と関数とは. を扱う関数. 例題 3. のリスト とポインタの組み合わせ 今日の到達目標 自分で を定義する 自分で定義したについて, 配列やポインタを作成する データ型 基本データ型 char 文字 (1 文字 ) int 整数 double 浮動小数など その他のデータ型配列 データの並び ( 文字列も, 文字の並び ) ポインタ

More information

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

Microsoft PowerPoint - 12.ppt [互換モード] 第 12 回構造体 1 今回の目標 構造体を理解する 構造体の定義の仕方を理解する 構造体型を理解する 構造体型の変数 引数 戻り値を理解する 複素数同士を足し算する関数を作成し その関数を利用するプログラムを作成する 2 複素数の足し算 複素数は実部と虚部の2つの実数で 表現される 表現される z = a+ bi 2 つの複素数 z 1 = a 1+ bi 1 と z2 = a2 + b2i の和

More information

Microsoft Word - 3new.doc

Microsoft Word - 3new.doc プログラミング演習 II 講義資料 3 ポインタ I - ポインタの基礎 1 ポインタとは ポインタとはポインタは, アドレス ( データが格納されている場所 ) を扱うデータ型です つまり, アドレスを通してデータを間接的に処理します ポインタを使用する場合の, 処理の手順は以下のようになります 1 ポインタ変数を宣言する 2 ポインタ変数へアドレスを割り当てる 3 ポインタ変数を用いて処理 (

More information

演算増幅器

演算増幅器 構造体 ここまでに char int doulbe などの基本的なデータ型に加えて 同じデータ型が連続している 配列についてのデータ構造について習った これ以外にも もっと複雑なデータ型をユーザが定義 することが可能である それが構造体と呼ばれるもので 異なる型のデータをひとかたまりのデー タとして扱うことができる 異なるデータをまとめて扱いたい時とはどんな場合だろうか 例えば 住民データを管理したい

More information

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

Microsoft Word - Cプログラミング演習(11) 第 11 回 (7/2) 4. いくつかのトピック (1) ビットごとの演算子 C 言語には, 次のようなビット単位で演算を行う特別な演算子が用意されている & ビットごとの AND ビットごとの OR ^ ビットごとの XOR( 排他的論理和 ) ~ 1 の補数これらの演算子は文字型と整数型で機能し, 浮動小数点数型では使用できない AND, OR, XOR は, それぞれのオペランドの対応するビットを比較して結果を返す

More information

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

Microsoft PowerPoint - 13.ppt [互換モード] 第 13 回構造体 1 今回の目標 構造体を理解する 構造体の定義の仕方を理解する 構造体型を理解する 構造体型の変数 引数 戻り値を理解する 複素数同士を足し算する関数を作成し その関数を利用するプログラムを作成する 2 複素数の足し算 複素数は実部と虚部の2つの実数で 表現される z = a+ bi z = a + bi z = a + b i 2 つの複素数 1 1 1 と 2 2 2 の和

More information

Prog1_6th

Prog1_6th 2019 年 10 月 31 日 ( 木 ) 実施配列同種のデータ型を有する複数のデータ ( 要素 ) を番号付けして, ひとまとまりの対象として扱うものを配列と呼ぶ 要素 point[0] point[1] point[2] point[3] point[4] 配列 配列の取り扱いに関して, 次のような特徴がある 1. プログラム中で用いる配列変数 ( 配列の本体を参照する参照型の変数 ) は必ず宣言しておく

More information

PowerPoint Presentation

PowerPoint Presentation 工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 7 回 2010 年 11 月 18 日 1 今回のテーマ 1: ポインタ 変数に値を代入 = 記憶プログラムの記憶領域として使用されるものがメモリ ( パソコンの仕様書における 512 MB RAM などの記述はこのメモリの量 ) RAM は多数のコンデンサの集合体 : 電荷がたまっている (1)/ いない

More information

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

Microsoft PowerPoint - 13th.ppt [互換モード] 工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 13 回 2011 年 1 月 13 日 1 本日の講義の内容 1. 配列データを main 以外の関数とやりとりする方法 2. データの型構造体, 共用体という新しいデータ型を学習します. 2 2 次元ベクトルのノルム ( 長さ ) を計算するプログラム 2 次元ベクトル a(x, y) のノルム (

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション コンパイラとプログラミング言語 第 3 4 週 プログラミング言語の形式的な記述 2014 年 4 月 23 日 金岡晃 授業計画 第 1 週 (4/9) コンパイラの概要 第 8 週 (5/28) 下向き構文解析 / 構文解析プログラム 第 2 週 (4/16) コンパイラの構成 第 9 週 (6/4) 中間表現と意味解析 第 3 週 (4/23) プログラミング言語の形式的な記述 第 10 週

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる

More information

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

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード] 情報工学実験 II 実験 2 アルゴリズム ( リスト構造とハッシュ ) 実験を始める前に... C 言語を復習しよう 0. プログラム書ける? 1. アドレスとポインタ 2. 構造体 3. 構造体とポインタ 0. プログラム書ける? 講義を聴いているだけで OK? 言語の要素技術を覚えれば OK? 目的のプログラム? 要素技術 データ型 配列 文字列 関数 オブジェクト クラス ポインタ 2 0.

More information

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

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; Point; 問題 18. 問題 17 の Point を用いて 2 点の座標を入力するとその 2 点間の距 離を表示するプログラムを作成せよ 平方根は

More information

プログラミングI第10回

プログラミングI第10回 プログラミング 1 第 10 回 構造体 (3) 応用 リスト操作 この資料にあるサンプルプログラムは /home/course/prog1/public_html/2007/hw/lec/sources/ 下に置いてありますから 各自自分のディレクトリにコピーして コンパイル 実行してみてください Prog1 2007 Lec 101 Programming1 Group 19992007 データ構造

More information

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

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information

AquesTalk プログラミングガイド

AquesTalk プログラミングガイド AquesTalk プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2 種類があります 使用するアプリケーションに応じて選択してください

More information

ガイダンス

ガイダンス 情報科学 B 第 2 回変数 1 今日やること Java プログラムの書き方 変数とは何か? 2 Java プログラムの書き方 3 作業手順 Java 言語を用いてソースコードを記述する (Cpad エディタを使用 ) コンパイル (Cpad エディタを使用 ) 実行 (Cpad エディタを使用 ) エラーが出たらどうしたらよいか??? 4 書き方 これから作成する Hello.java 命令文 メソッドブロック

More information

memo

memo 数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int

More information

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

Microsoft Word - Cプログラミング演習(12) 第 12 回 (7/9) 4. いくつかのトピック (5)main 関数の引数を利用したファイル処理 main 関数は, 起動する環境から引数を受け取ることができる 例えば 次に示すように,main 関数に引数を用いたプログラムを作成する 01 /* sample */ 02 /* main 関数の引数 */ 03 #include 04 05 main(int argc, char

More information

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

RL78開発環境移行ガイド RL78ファミリ間の移行 (コンパイラ編:コンパイラオプション・アセンブラオプション)(CA78K0R→CC-RL) RL78 開発環境移行ガイド RL78 ファミリ間の移行 ( コンパイラ編 : コンパイラ アセンブラ ) (CA78K0R CC-RL) 2016/12/28 R20UT3418JJ0101 ソフトウェア事業部ソフトウエア技術部ルネサスシステムデザイン株式会社 はじめに 本資料は RL78 ファミリ用 C コンパイラ CA78K0R 用のプロジェクトを RL78 ファミリ用 C コ ンパイラ CC-RL

More information

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

UIOUSBCOM.DLLコマンドリファレンス UIOUSBCOM.DLL UIOUSBCOM.DLL Command Reference Rev A.1.0 2008/11/24 オールブルーシステム (All Blue System) ウェブページ : www.allbluesystem.com コンタクト :contact@allbluesystem.com 1 このマニュアルについて...3 1.1 著作権および登録商標...3 1.2

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 総機 1 ( 月 1) 14: 発展事項 2014-07-13 1 今日の内容 これまでの講義で説明していない事項についていくつか簡単に紹介する 文法 標準入出力ファイル 異常終了 短絡評価 文字定数の型 キャスト 変数の宣言位置 グローバル変数 静的変数 (static) const 変数 プリプロセッサ ディレクティブ マクロ ファイルの読み込み 数学関数のエラーチェック

More information

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

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

More information

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog03.ppt プログラミング言語 3 第 03 回 (2007 年 10 月 08 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/33 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 10 月 08 日分と書いてある部分が 本日の教材です

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 6 回目 if 文と if else 文 今日の講義で学ぶ内容 関係演算子 if 文と if~else 文 if 文の入れ子 関係演算子 関係演算子 ==,!=, >, >=,

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 2 回目 ようこそ Java へ 今日の講義で学ぶ内容 画面へのメッセージの表示 文字や文字列 数値を表現するリテラル 制御コードを表すエスケープシーケンス 画面出力の基本形 ソースファイル名 : クラス名.java class クラス名 System.out.println(" ここに出力したい文字列 1 行目 "); System.out.println(" ここに出力したい文字列

More information

PowerPoint Presentation

PowerPoint Presentation プログラミング基礎 第 2 週 (4,5,6 回 ) 2011-10-07 出村公成 この資料の再配布を禁止します 予定 プログラミング入門 (45 分 ) 変数 入出力 分岐 演習 (90 分 ) タッチタイプ練習 統合開発環境 Codeblocksの使い方 教科書例題の打ち込みと実行 プログラミング入門 C 言語の簡単な例を体験 変数 入出力 分岐 プログラムの例リスト 2.1 改 #include

More information

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

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤 情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤 2017.12.7 前回の演習問題の解答例 1. 四則演算のできる計算機のプログラム ( 括弧も使える ) 2. 実数の扱える四則演算の計算機のプログラム ( 実数 も というより実数 が が正しかったです ) 3. 変数も扱える四則演算の計算機のプログラム ( 変数と実数が扱える ) 演習問題 1 で行うべきこと

More information

Microsoft PowerPoint pptx

Microsoft PowerPoint pptx 情報処理 Ⅱ 第 12 13回 2011 年 1 月 31 17 日 ( 月 ) 本日学ぶこと ファイル入出力, 標準入力 標準出力 記憶域管理関数 (malloc など ) 問題 ファイルを入力にとり, 先頭に行番号をつけて出力できる? 行列の積を, ファイルを介して読み書き 計算できる? Wakayama University./line 1:Wakayama 2:University 3 2

More information

講習No.12

講習No.12 前回までの関数のまとめ 関数は main() 関数または他の関数から呼び出されて実行される. 関数を呼び出す側の実引数の値が関数内の仮引数 ( 変数 ) にコピーされる. 関数内で定義した変数は, 関数の外からは用いることができない ( ローカル変数 ). 一般に関数内で仮引数を変化しても, 呼び出し側の変数は変化しない ( 値渡し ). 関数内で求めた値は return 文によって関数値として呼び出し側に戻される.

More information

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

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部 はじめに コース概要と目的 Oracle 独自の手続き型言語である PL/SQL について説明します PL/SQL の基本構文 ストアド サブプログラム トリガーの作成方法 またストアド サブプログラムの管理について習得することを目的としています 受講対象者 これから PL/SQL を使用してアプリケーション開発をされる方 前提条件 SQL トレーニング コースを受講された方 もしくは 同等の知識をお持ちの方

More information

JavaプログラミングⅠ

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

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 2 ( 月 4) 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2014-06-22 1 まとめ : ポインタを使った処理 内容 説明 呼び出し元の変数を書き換える第 9 回 文字列を渡す 配列を渡す 第 10 回 ファイルポインタ

More information

Prog1_12th

Prog1_12th 2013 年 7 月 4 日 ( 木 ) 実施 ファイル処理ファイルとはファイル (file) は日常用語では紙などを綴じたものを表すが, コンピュータ用語ではデータの集合体を指す言葉である ファイルは例えば, 文書ファイルやプログラムファイルのように, 用途によって分類されることもあれば, また, テキストファイルやバイナリファイルのように, ファイルの作り方によって分類されることもある なお,

More information

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

AquesTalk for WinCE プログラミングガイド AquesTalk for WinCE プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk for WinCE ( 以下 AquesTalk) をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと

More information

第2回講義:まとめ

第2回講義:まとめ C 言語のキーポイント 5=x は NG, x=y=6 は OK. (x=y)=6 は? *ptr=7 は? int x; printf( %d, x) は scanf ( %d, x) は 非 0 が真 0 が偽 for 文は while 文で書き直せる 逆も真 配列は 0- オリジン 関数呼び出しでは 仮引数が実引数で初期化される 式を評価するとき副作用を起こす演算子は ( 複合 ) 代入演算子

More information

Microsoft PowerPoint pptx[読み取り専用]

Microsoft PowerPoint pptx[読み取り専用] 情報処理 Ⅱ 第 8 回 2009 年 12 月 7 日 ( 月 ) 本日学ぶこと 関数と変数 目的 関数を自分で定義し, 変数の利用方法 範囲を明示的に制限することで, 適切な機能分割 ( モジュール化, 再利用 ) を図る. してはいけないこと 問題 main 関数のみで 100 行以上のプログラム グローバル変数を駆使するプログラム プログラムを読みやすくする 保守性向上 多項式関数 f(x)

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 7 ( 水 5) 12: コマンドライン引数 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2016-06-29 1 まとめ : ポインタを使った処理 内容呼び出し元の変数を書き換える文字列を渡す 配列を渡すファイルポインタ複数の値を返す大きな領域を確保する

More information

Slide 1

Slide 1 OpenFoam のための C/C++ 第 3 回 OpenFoam で勉強るテンプレート 田中昭雄 1 目的 この勉強会の資料があれば OpenFoam カスタマイズ時に C/C++ で迷わない 2 予定 第 1 回メモリ管理 第 2 回 CFDの例で勉強するクラス 第 3 回 OpenFOAMで勉強するテンプレート 第 4 回 OpenFOAMカスタマイズ 第 5 回未定 第 6 回未定 3 今回のテーマ

More information

講習No.9

講習No.9 日本語は通常 2 バイトの文字コード.JIS コード, シフト JIS コード, Unicode (UTF-8) 等の様々な文字コードがある. アスキーコード表 (ASCII code) アスキーコード ( 値 ) 漢字変換無しでキーボードから直接入力できる半角文字 32 48 0 64 @ 80 P 96 ` 112 p 33! 49 1 65 A 81 Q 97 a 113 q 34 " 50

More information

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

Taro-リストⅠ(公開版).jtd 0. 目次 1. 再帰的なデータ構造によるリストの表現 1. 1 リストの作成と表示 1. 1. 1 リストの先頭に追加する方法 1. 1. 2 リストの末尾に追加する方法 1. 1. 3 昇順を保存してリストに追加する方法 1. 2 問題 問題 1 問題 2-1 - 1. 再帰的なデータ構造によるリストの表現 リストは データの一部に次のデータの記憶場所を示す情報 ( ポインタという ) を持つ構造をいう

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 5 回目演算子の優先順位と変数の型変換 今日の講義で学ぶ内容 演算子の優先順位 優先順位の変更の方法 キャスト演算子と型変換 演算子の優先順位 演算子の優先順位 式を計算するときの演算の順序です例えば a=b*c+d; では乗算を先に計算するというルールです ( 主な演算子の優先順位 ) 演算子 名前 結合規則 ++ 後置インクリメント 左 -- 後置デクリメント 左!

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 構造体 (struct) 構造体の宣言 typedef 宣言 配列では 複数のデータをひとまとまりにして操作することが出来る しかし それぞれのデータは同じ型 ( 例えば整数 あるいは浮動小数点数 ) 出なければならない 型の違うデータをひとまとまりにして扱う方法に 構造体がある 構造体 文文文文名前字 ( 文字列字字 ) 字 整数学籍番号 ( 整数 ) 身長 ( 浮動小数点数 ) 文字 配列 3

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 4 回目演算子 今日の講義で学ぶ内容 演算子とオペランド 式 様々な演算子 代表的な演算子の使用例 演算子とオペランド 演算子 演算の種類です例えば + - * / 掛け算の記号は ではなく *( アスタリスク ) を使います割り算の記号は ではなく /( スラッシュ ) を使います オペランド 演算の対象です例えば 5( 値 ) num( 変数 ) 式 演算子とオペランドの組み合わせにより構成される数式です式は演算結果をもちます

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 3 回構造体, ファイル入出力 先週の出席確認へのコメント 暗号を破りたいが 平文の候補が多すぎる 人間の目で確認する代わりに どんなプログラムがあればよいか? 辞書を挙げた人が多かった 正しい着眼です 何億個もの平文候補が想定されるので 形態素解析や品詞判別を挙げた人もいます 辞書に近い回答で悪くはないのですが 平文候補ごとにあまり高機能なものを呼び出すと時間がかかる

More information

slide5.pptx

slide5.pptx ソフトウェア工学入門 第 5 回コマンド作成 1 head コマンド作成 1 早速ですが 次のプログラムを head.c という名前で作成してください #include #include static void do_head(file *f, long nlines); int main(int argc, char *argv[]) { if (argc!=

More information

program7app.ppt

program7app.ppt プログラム理論と言語第 7 回 ポインタと配列, 高階関数, まとめ 有村博紀 吉岡真治 公開スライド PDF( 情報知識ネットワーク研 HP/ 授業 ) http://www-ikn.ist.hokudai.ac.jp/~arim/pub/proriron/ 本スライドは,2015 北海道大学吉岡真治 プログラム理論と言語, に基づいて, 現著者の承諾のもとに, 改訂者 ( 有村 ) が加筆修正しています.

More information

gengo1-12

gengo1-12 外部変数 関数の外で定義される変数を外部変数 ( 大域変数 ) と呼ぶ 外部変数のスコープは広域的 ( プログラム全体 ) 全ての関数で参照可能 int a=10; double x=3.14159; printf( a = %d\n, a); sample(); printf( %f\n, x); void sample(void) printf( %f\n, x); x += 1.0; 外部変数

More information

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

解きながら学ぶC++入門編 !... 38!=... 35 "... 112 " "... 311 " "... 4, 264 #... 371 #define... 126, 371 #endif... 369 #if... 369 #ifndef... 369 #include... 3, 311 #undef... 371 %... 17, 18 %=... 85 &... 222 &... 203 &&... 40 &=...

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 総機 1 ( 月 1) 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2015-06-22 1 まとめ : ポインタを使った処理 内容 説明 呼び出し元の変数を書き換える第 9 回 文字列を渡す 配列を渡す 第 10 回 ファイルポインタ

More information

ポインタ変数

ポインタ変数 プログラミング及び実習 5 馬青 1 文字処理 数値処理 : 整数 浮動小数点数 単一の文字は と ( シングルクォーテーション ) で囲んで表現される 文字のデータ型は char または int である int を用いたほうが ライブラリの関数の引数の型と一致する 以下は全部 int の使用に統一する 従って int ch; で文字変数を宣言しておくと ch= A ; のように ch に文字 A

More information

6 文字列処理 ( 教科書 p.301p.332) 今回は 言語の文字列処理について復習し, 文字列の探索手法について学びます. 文字列とはプログラム上での文字の並びを表すのが文字列です. これは中身が空であっても同様に呼ばれます. 言語では "STRING" のように文字の並びを二重引用符 " で囲んだものを文字列リテラルと呼びます. SII コードの場合, 割り当てられる数値は図 1 のようになっています.

More information

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

Microsoft PowerPoint - 4.ppt [互換モード] 第 4 回簡単な計算 プリプロセッサ 1 今回の目標 定数を理解する 演算子とその効果を理解する 簡単なライブラリ関数の使用法を理解する ヘロンの公式を用いた3 角形の面積を求めるプログラムを作成する 2 ヘロンの公式 ヘロンの公式 : 3 辺の長さがわかっているときに 3 角形の面積を求める方法 d = a + b + c 2 S = d ( d a )( d b )( d c ) 3 定数の分類と型

More information

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

Microsoft PowerPoint - 3.ppt [互換モード] 第 3 回簡単な計算 プリプロセッサ 1 今回の目標 定数とその型を理解する 演算子とその効果を理解する 簡単なライブラリ関数の使用法を理解する ヘロンの公式を用いて 3 角形の面積を求めるプログラムを作成する 2 ヘロンの公式 ヘロンの公式 : 3 辺の長さがわかっているときに 3 角形の面積を求める方法 d = a + b + c 2 S = d ( d a )( d b )( d c ) 3

More information

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

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要. 概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要. http://www.ns.kogakuin.ac.jp/~ct13140/progc/ C-2 ブロック 変数のスコープ C 言語では, から をブロックという. for( ) if( )

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 仮想マシン (2), コード生成 http://cis.k.hosei.ac.jp/~asasaki /lect/compiler/2007-1204.pdf ( 訂正版 ) 1 概要 仮想マシン 概要 ( 復習 ) 制御命令 出力命令 コード生成 式のコード生成 文 文の列のコード生成 記号表 2 演習で作るコンパイラの例 test.hcc Int main() { int i j; i = 3;

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 2 ( 月 4) 09: ポインタ 文字列 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2014-06-09 1 関数できなかったこと 配列を引数として渡す, 戻り値として返す 文字列を扱う 呼び出し元の変数を直接書き換える 例 : 2 つの変数の値を入れ替える関数

More information

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

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){ ソフトゼミ A 第 6 回 関数 プログラムは関数の組み合わせでできています 今までのゼミAでも printf や scanf など様々な関数を使ってきましたが なんと関数は自分で作ることもできるのです!! 今日は自作関数を中心に扱っていきます ゲーム制作でも自作関数は避けては通れないので頑張りましょう そもそもまず 関数とは 基本的には 受け取った値に関数によって定められた操作をして その結果の値を返す

More information

2006年10月5日(木)実施

2006年10月5日(木)実施 2010 年 7 月 2 日 ( 金 ) 実施 ファイル処理ファイルとはファイル (file) は日常用語では紙などを綴じたものを表すが, コンピュータ用語ではデータの集合体を指す言葉である ファイルは例えば, 文書ファイルやプログラムファイルのように, 用途によって分類されることもあれば, また, テキストファイルやバイナリファイルのように, ファイルの作り方によって分類されることもある なお,

More information

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

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+) RL78 開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行 ( 統合開発環境編 ) (High-performance Embedded Workshop CS+) 2017/4/7 R20UT2087JJ0103 ソフトウェア事業部ソフトウエア技術部ルネサスシステムデザイン株式会社 はじめに 本資料は 統合開発環境 High-performance Embedded Workshop

More information

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

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

More information

JavaプログラミングⅠ

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

More information

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

Microsoft PowerPoint - 2.ppt [互換モード] 第 2 回 C 言語の基本的な規則 1 今回の目標 C 言語の基本的な規則を理解する C 言語のソースコードから実行可能なコードへの変換法を習得する ( コンパイル法の習得 ) 標準入出力を理解する C 言語での標準入出力制御方法を理解する 標準入出力を用いたプログラムを作成する 2 世界一短い C のプログラム shortest.c main(){} このプログラムからわかること [ 注意 1]C

More information

Prog1_2nd

Prog1_2nd 2019 年 10 月 3 日 ( 木 ) 実施浮動小数点数 Java 言語で実数を扱う場合, 実用的な計算には変数のデータ型としては,double 型を用いる 浮動小数点数とは, 実数を表す方式の一つで,2 進数の場合は例えば 1.101 2 3 ( 判り易さの為にここでは 2 や 3 は 10 進数で表記 ) の様な表記法である なお, 第 1 回の教材にあった, 単精度, 倍精度という用語で,

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 基礎演習 3 C 言語の基礎 (5) 第 05 回 (20 年 07 月 07 日 ) メモリとポインタの概念 ビットとバイト 計算機内部では データは2 進数で保存している 計算機は メモリにデータを蓄えている bit 1bit 0 もしくは 1 のどちらかを保存 byte 1byte 1bitが8つ集まっている byte が メモリの基本単位として使用される メモリとアドレス メモリは 1byte

More information