意外と知らない#includeの振る舞い

 C言語やC++言語では必ず使うことになる「#include」構文。関数やクラスの宣言や実装を行うためのものだと思いがちですが、「指定したファイルの内容を、まるまる宣言行と入れ替える」のがincludeの本来の意味なので、以下のプログラムでもエラーになることはありません。
include.c
#include <stdio.h>

void main(void)
{
    printf(
#include "message.txt"
    );
}
message.txt
"今日はいいお天気ですね"
 これをコンパイルして実行すると、message.txt内にある前後のダブルクォーテーション(")がのぞかれた部分の文字列がコンソール画面に出力されます。このテクニックを使って、ソースコードに外部テキストを直接埋め込む方法として利用しているプログラマもいます。
2008/05/04