main.cpp(55) : error C3861: 'snprintf': 識別子が見つかりませんでした
main.cpp(57) : error C3861: 'snprintf': 識別子が見つかりませんでした
Visual C++でOpenCVのサンプルコードをコンパイルするとよく出るエラー。
どうやら「_snprintf」関数はあるようだ。
以下をソースファイルに入れておくとプリコンパイル時にソースコード内の「snprintf」文字列を「_snprintf」に変更してからコンパイルする。
#define snprintf _snprintf
標準Cではsnprintfはある。_があるのでVC++独自の関数なので動作は少し違うかもしれないが問題ないでしょう。
毎回書くのが面倒ならcv.hもしくはstdio.hファイルに#define snprintf _snprintfを入れておくと毎回#define snprintf _snprintfマクロを書き込む必要がなくなる。
sprint_sはsnprintfとは違うようだ。
#define snprintf printf_s
としても問題ない場合があるが、printf_sは、フォーマットを確認するだけで文字列のサイズを確認しているわけではない。
snのnはNumberで文字列サイズのチェック、バッファオーバーフローによるOSの管理者権限取りを排除するため。セキュリティのために工夫さらた関数。
「今日の訪問数: - 」
「昨日の訪問数: - 」
「今までの訪問数: - 」
最終更新:2010年02月05日 12:31