リアルタイム カーネルTNeoKernelを Cortex-M アーキテクチャに移植しているので、Keil をインストールしてカーネルをビルドしようとしています。ただし、予期しない問題に直面しています。コンパイラがinline
関数を処理できないようです。簡単なコードは次のとおりです。
static inline int test(void)
{
return 0;
}
コンパイラの出力は次のとおりです。
src\appl\main.c(17): warning: #260-D: explicit type is missing ("int" assumed)
static inline int test(void)
src\appl\main.c(17): error: #65: expected a ";"
static inline int test(void)
キーワードを削除するinline
と、コンパイルして動作します。
ARM Compiler のドキュメントでは、関数について何も見つかりませんinline
。念のために言っておくと、inline
キーワードは ARM コンパイラでサポートされていないのでしょうか? あまりにも信じられないので、質問することにしました。
カーネルのプラットフォームに依存しないコードに多くのstatic inline
関数があるので、ARM コンパイラをサポートする最善の方法は何ですか? 頭のてっぺんから、2つのアイデアしかありません。
- のようなアーキテクチャ依存のマクロを作成
TN_INLINE
し、ARM コンパイラの場合は何も展開しないようにする必要があります。 - 非常に小さな 1 行の関数をマクロに変換します。