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

Example 44 に、C++ のキャストを使用した、非仮想関数呼び出しの多重定義の解決を示します。

Example 44.  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)) // T::mf(int, int) を呼び出す
    BL __cpp(static_cast<void (*)(int)>(g)) // g(int) を呼び出す
    BX lr
}

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0472EJ
Non-ConfidentialID081711