printfじゃなくてcout使えよってつっこみはおいておいて、
__attribute__((format(type, i, j)))
書式文字列をチェックする。formatが書式文字列の種類(printf、scanf、strftime、strfmonのどれか)で、i番目の引数が書式文字列で、j番目からが可変パラメータ。
int myprintf(const char* format, …) __attribute__((format(printf, 1, 2)));
こうすればOK。便利!
参考サイト
ただし、gcc限定っぽい。