マイクロテクニカ製品サポートFAQ
[一覧] [1つ前に戻る] [マニュアル及び各種ダウンロードページへ]
ビルドするとライブラリの所でエラービルドするとライブラリの所でエラー"Undeclared identifier 'xxx' in expression"と表示される
ビルドを実行した時、組み込み関数(ライブラリ)の部分でエラー"Undeclared identifier 'xxx' in expression"が表示される場合には、正しくそのプロジェクトにライブラリが読み込まれていないことが原因です。

また、Undeclared identifier 'xxx'というエラーはその'xxx'内文字列が変数や定数、ライブラリとしてあらかじめ定義、宣言されていない文字列であることを示しています。

よって、Library Managerで該当のライブラリが使用できるように登録されていないと宣言、定義されていない文字列としてエラーが表示されます。

1.ライブラリーを使えるようにする

mikroCの「Library Manager」から使用するライブラリにチェックを入れると使用できるようになります。

※Library ManagerはView→Library Managerで表示されます。


Library Managerの一覧ではプロジェクトに読み込み可能なすべてのライブラリ一覧が表示されます。通常プロジェクトを作成するとき、プロジェクトウィザードで"Select initial state for library manager"の項目で、"Include All (default)"を選択するとすべてのライブラリにチェックが入り全てのライブラリが使えますが、ここで"Include None"などを選択すると、すべてのライブラリがデフォルトでは使えなくなります。その場合には必要に応じてプログラム内で使用するライブラリだけを後から「Library Manager」内でチェックして使用するようにします。

※使用しないライブラリにチェックを入れておくとビルド後のHEXファイルは少し大きくなります。使用するライブラリだけを選択すると冗長部分をカットできるのでより最適化の進んだHEXファイルを作成できるメリットがあります。


2.何らかの定義や宣言する必要のある識別文字列、前方宣言かとうが確認する

例えば次の文では 文字列baudが定数として宣言されていなければ'baud'はエラーとなります。

UART1_Init(baud);

Uart1_Init()関数の引数は、ボーレートで符号無しロング型となっています。
よって、次のように前方で定数を宣言しておけばエラーになりません。

const unsigned long = 9600;
UART1_Init(baud);


その他、引数に定義文字列を使う場合には上記のようにメインのCプログラム内で宣言するか、まとめて適切なヘッダファイルに記述し、そのヘッダファイルをインクルードする必要があります。
インクルードされていない定義を使うと、その文字列は関数ではないので「Undeclared identifier」のエラーが表示されます。



オリジナル - FAQみたいです - 猫でいいです