とある事情から「インクルードするディレクトリが長いので何度も書きたくない」という状況になり、インクルードするディレクトリをマクロ定数に持って、インクルードするファイル名と連結してインクルードしたい、ということがありました。
そんなときの対応は、このようになりました:
// BOOST_PP_STRINGIZEと同等 // トークンを文字列化する #define PP_XSTR(M) #M #define PP_STR(x) PP_XSTR(x) // インクルードするディレクトリ。 // 最後が / になってはならない (トークンとして使えない文字、というエラーになる) #define MY_LIB_PATH aaa/bbb/ccc // aaa/bbb/ccc/ddd.hをインクルードする #include PP_STR(MY_LIB_PATH/ddd.h) int main() {}
https://wandbox.org/permlink/I6jGIJcqLE4RMHFE