最近便利なマクロがあることを知ったのでメモ。
- __VA_ARGS__ 可変個引数をマクロで簡単に定義できる
- __LINE__ コードの行数
- __FILE__ ファイル名「ディレクトリ含む
- __FUNCTION__ 関数名
- __DATE__ コンパイルされた時の日付
- __TIME__ コンパイルされた時の時間
使い方(例) 一応動くけど、正しい書き方か 分からないです^^;
#include <stdio.h> #define DEBUG 1 #if DEBUG #define dbg(str,...) printf("%d@%s " str, __LINE__,__FUNCTION__,__VA_ARGS__); #define dbg2() printf("%d@%s\n", __LINE__,__FUNCTION__); #else #define dbg(...) #define dbg2() #endif int main() { printf("compiled => %s %s\n", __DATE__, __TIME__); int i; dbg2() for(i = 0; i < 3; i++) { dbg("i=%d\n", i); } dbg2(); return 0; }
実行結果
compiled => Nov 29 2010 01:17:08 29@main 33@main i=0 33@main i=1 33@main i=2 36@main