文字列のように連結されるincludeファイル名

GCC 2.95以前では、#include "..."の形式でファイルをインクルードする場合、
ファイル名を複数に分割することができ、それらは、連続する文字列リテラルのように連結される。

#include "iostream" ".h"

この機能は、ヴァージョンの異なるヘッダを使い分けるときに便利であった。

#define VERSION "version1_dir/"

#include VERSION "hoge.h"

標準の範囲内で似たようなことをするには、以下のようになるが、いくつか制限があり使いにくい。

#define VERSION version1_dir
#define INCLUDE(X) STR(X)
#define STR(X) #X
#include INCLUDE(VERSION/hoge.h)


一部、シンタックス・ハイライトがうまく働いてないな。