こんにちは
e2studioのスマートコンフィギュレータで生成した割込み関数の一部が未使用のstatic関数と警告がでますがなぜでしょうか?
本当に未使用かというとそうでもなく,デバッグモードできちんとブレークがかかります。
警告を無視すればいいのですが気持ち悪いので質問させていただいた次第です。
例えば以下のソースなどです。
#if FAST_INTERRUPT_VECTOR == VECT_SCI2_TXI2#pragma interrupt r_Config_SCI2_transmit_interrupt(vect=VECT(SCI2,TXI2),fint)#else#pragma interrupt r_Config_SCI2_transmit_interrupt(vect=VECT(SCI2,TXI2))#endifstatic void r_Config_SCI2_transmit_interrupt(void){ r_Config_SCI2_callback_transmitend();}
また,使用している環境は以下の通りです。
e2studioのバージョンは23.1.0
SCI長保同期式モード1.12.0
CCRXビルダー(バージョン情報がどこにあるのかわからない…)
割り込みハンドラはベクタテーブルから外部参照されるので、本来は static を付けてはいけない所、#pragmaによって外部参照可能なシンボルとして実装されることでたまたまリンク可能になっています。それで言えば warningが正しく、ソースの方がコンパイラの仕様に依存した書き方になっているのですが、うっかり普通のC言語関数として呼び出されないようにとの配慮でわざわざそのような書き方がされているものと思います…
気にする必要のないメッセージです。コンパイラの#pragmaの意味をエディタのコード解析機能(ANSI Cの文法解析)が認識できていないために起きている現象なので。