C言語でアスペクト

アスペクト指向とロギングってどう違うのかわからないです。


と、いうようなよくある話はいいとして、mudflapの話の続きとしては、「これってアスペクト指向っぽくね」っていう話にする予定だったんだけど、なんか、いまいちやる気閾値を超えなかったので放置してたところ、そういう話題が出てたので、とりあえずロギングを。
gcc-4.1.1のdiff
アレがアレでアレしてます。(情報量0)

int main()
{
	
}

こういうプログラムをコンパイルして実行すると、

$ ./a.out
/usr/local/src/gcc-4.1.1/gcc/crtstuff.c:319:frame_dummy
/usr/local/src/gcc-4.1.1/gcc/crtstuff.c:515:__do_global_ctors_aux
nanika.c:2:main
/usr/local/src/gcc-4.1.1/gcc/crtstuff.c:262:__do_global_dtors_aux

こんな感じに。


やってることはこれだけです。

  1. pass_loggerというパスを追加 (passes.c tree-pass.h)
  2. 関数の先頭にputsを入れるコードを追加 (tree-logger.c)


ロギングができるということは、アスペクト指向ができるということです。(しつこい)