前のページ次のページ上に戻るホーム SophiaFramework 2.1

3.9. 型キャスト関数

C++ 言語には型キャストを行うための関数 static_cast, dynamic_cast, const_cast, reinterpret_cast があります。 これらは Visual C++ では使用できますが、 ARM コンパイラによっては使用できない場合があります。

そのため、 コンパイラによって C++ 言語の型キャストと C 言語の型キャストを切り替える 4 つの関数を用意しています。

#if defined TARGET_COMPILER_ARMCPP      
      
    template <typename T>
    inline T static_brew(const void* a0)          {return(T(a0));}

    template <typename T>
    inline T dynamic_brew(const void* a0)         {return(T(a0));}
      
    template <typename T>
    inline T const_brew(const void* a0)           {return(T(a0));}
      
    template <typename T>
    inline T reinterpret_brew(const void* a0)     {return(T(a0));}
#else
#define    static_brew         static_cast
#define    dynamic_brew        dynamic_cast
#define    const_brew          const_cast
#define    reinterpret_brew    reinterpret_cast
#endif

たとえば static_brew は Visual C++ でコンパイルするときは C++ 言語の型キャスト static_cast になりますが、 ARM コンパイラの場合は C 言語の強制型キャストになります。

C++ 言語の型キャストを使用しながら、 ARM コンパイラでコンパイルできるようにするためには、 これらの型キャスト関数を使うとよいでしょう。