7.33 組み込みアセンブラの手動による多重定義の解決

以下の例では、C++ のキャストを使用した、非仮想関数呼び出しの多重定義の解決を示します。

void g(int);
void g(long);
struct T
{
    int mf(int);
    int mf(int,int);
};
__asm void  f(T*, int, int)
{
    BL __cpp(static_cast<int (T::*)(int, int)>(&T::mf)) // calls T::mf(int, int)
    BL __cpp(static_cast<void (*)(int)>(g)) // calls g(int)
    BX lr
}
関連する概念
7.26 コンパイラでの組み込みアセンブラのサポート
7.31 組み込みアセンブラからの C および C++ のコンパイル時の定数式へのアクセス
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.