#if 0ハックすごくね?すげーってw
#If 0ってC,C++では、#endifまで問答無用でコメントにしますが、
これを使ったハックがすごく便利。
元ネタ
http://gpwiki.org/index.php/SDL:Tutorial:Using_SDL_net
#if 0 #!/bin/sh gcc -o a a.c exit #endif int main( void ) { printf( "Hello\n"); return 1; }
これを保存して、実行属性をつけてから(chmod 755とか)
ターミナルで、
# ./a.c
と打ち込むと、
aという実行ファイルが生成される。
んで、./aと打ち込むと
Helloと表示される。
今までは、Makefileか直接、gcc -o a a.cとかやっていた作業が、
ソースコード+Makefileの代わりになるわけ。
なぜこんな事ができるかってーと、
shのシェルスクリプトは、#がコメント扱いなので、
#if 0を読み飛ばして、#!で利用するコマンドを設定し、
gccの箇所を実行します。
んで、exitでコマンドを終了し、ターミナルに戻ってきます。
んでソースコードコンパイル時は、#if 0〜#endifまでコメント扱いになるので、
ここは無視されるわけ。
追記:
id:nakamura001さんからアドバイス頂きました。
id:kompiroさんから指摘を頂きました。
exitが抜けていたため、処理が続行されてしまうので、修正致しました。
#if 0 #!/bin/sh src = $0 obj = ${src%.*} gcc -o $obj $src exit #endif
としておくことでどんなソースコードでも
コピペして使う事ができます。