質問: "s1"を連結することは可能ですか?これを行うには、引数を別のマクロ関数に渡します。しかし、直接的な方法はありますか?
回答: ヒント:上記のstringizeマクロはクールですが、間違えたときに引数がマクロではない場合、名前にタイプミスがあるか、ヘッダーファイル#includeを忘れてしまった場合-コンパイラは、エラーなしで、意図したマクロ名を文字列に喜んで入れます。stringizeへの引数が常に通常のc値を持つマクロである場合、#define stringize(a) ((a),stringize_nx(a)) 一度展開して有効性を確認し、それを破棄してから、再び文字列に展開します。"enoent"の代わりにstringize(enoent)が"2"になってしまった理由を理解するのにしばらく時間がかかりました... errno.hを含めていませんでした。