【C/C++】typeof演算子typeoftypeofは引数の型を表す特殊な演算子である。引数には型名や式を渡すことができる。これにより事実上の型推論の実現が可能になる。コンパイラによっては__typeof__や__typeofとして同等の機能が提供されている。sizeof(long));typeofで求められた型はtypedefで定義された型のように振る舞う。これによってポインタ型のような表現が可能となる。一般的に、typeofは汎用的な機能やライブラリ等のレイヤーで利用される。SWAPマクロの一時変数型を導き出す際などが良い例である。21typeofによる一時変数の実現は、マクロ引数が二重に評価されてしまう問題への回避にも繋がる。isdigit関数は二度呼ばれるtypeofは移植性の問題もあるため、アプリケーションレイヤでは無闇に使わないようにしたい。typeofが利用できない場合typeofキーワード自体はGNUコンパイラの独自拡張であり、全てのコンパイラで利用出来る機能とは限らない。Clangコンパイラではtypeof利用時に以下のようなエラーが発生する。declarationsコンパイラによっては同等の機能が__typeof__や__typeofとして提供されている場合があるのでそちらを利用すると良い。C++の場合の対処法C++の場合はtypeofの代わりにdecltypeが利用できる。q);GNU拡張を有効にする場合Clangコンパイラでも、コンパイラオプションでGNU拡張を有効にすることで、typeofの利用が可能になる。C言語コンパイラの場合は-std=gnu99(C99)または-std=gnu11(C11)の指定を行い、C++コンパイラの場合は-std=gnu++11(C++11)または-std=gnu++14(C++14)の指定を行えば良い。Dialect項目で上記オプションの選択が可能になる。