• ベストアンサー

typedef unsigned int UINT;があるか確かめる方法は?

お世話になります C++で、 typedef unsigned int UINT; って、宣言があると思うのですが、 "typedef"宣言って、 #if defined(...) の、ように、宣言があるか確かめる方法ってあるのでしょうか? よろしくお願い致します

質問者が選んだベストアンサー

  • ベストアンサー
  • colder
  • ベストアンサー率43% (30/69)
回答No.4

以下のコードで、一応判別できるみたいです。 //typedef unsigned int UINT; namespace hoge{ typedef void UINT; } using namespace hoge; template <class T, class U> struct bar { static const bool value = false; }; template <class T> struct bar<T,T> { static const bool value = true; }; int main() { if (bar< ::UINT, unsigned int>::value) { cout << "UINT is defined" << endl; } else { cout << "UINT is not defined" << endl; } return 0; }

その他の回答 (3)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

#2です。 これだとうまくいきませんね。失礼しました。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

これでどうでしょう? std::pair<unsigned int> UINT(...); if (sizeof UINT() == sizeof(unsigned int)) {  // UINTの定義あり } else {  // UINTの定義なし } 定数式で評価できるので、テンプレート実引数に指定することも可能です。静的に何かやりたいときは、テンプレートメタプログラミングを行えばよいでしょう。

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.1

C++にはUINTはありません。 UINTはWindowsがWinDef.hで定義している独自型です。 VC6.0などの環境では、typedefはリンク時に解決されるのか、 #ifdef UINTなどでは判別できません。 なので、コンパイルする環境はWindowsであるかどうかで判定 するしかないかと。。。 #ifndef _WIN32 //Windows環境ではないのでUINTは無い typedef unsigned int UINT; #endif

関連するQ&A