m5knt

底が浅い男がなんとはなしに...

@deprecated 指定したけど気に掛けてくれないにょろ

sprintf は危険なことが多く使ってほしくないので doxygen のドキュメントとして使ってほしくないリストへ現れるようにこんな感じにしてたんですが

/// @deprecated 
#define sprintf sprintf

危険な関数を使ってしまう奴は doxygen 出力して把握してくれるわけでもなく告知もスルーするわけなんでそんな人のソースみて打ち震えるよりはコンパイラが文句を吐き出してしまうほうが確実なのでメッセージを出してやります

#pragma message "このだめ人間め"

これだけだと条件コンパイルぐらいでしか使えないのでこのヘッダ使うなとかこのマクロ定義されてないのでデフォルトにするよとかしか警告できないですよね

プログラマが関数を 使ったときに 何か文句を言ってあげる必要があるので機能を探してみたら C99 でプラグマがマクロで利用できるようになってたのを思い出しました

_Pragma("message \"このだめ人間め\"")

これを使ってマクロで警告できるようにして見ます

#define WERN(x) /**/ WERN_(message x)
#define WERN_(x) /**/ _Pragma(#x)
#define sprintf /**/ WERN("sprintf を使うだめ人間め") sprintf

これで sprintf を使うと文句をプログラマに見せることが可能になりました、あとは stdio.h よりあとに定義されるよう工夫すれば OK です、C言語系ぐらいでしか使い道が無いんですがまあ気休めにいかがでしょうか