前回の投稿と同じくVC++6のソースをVC++2005でビルドした際のこと
標準関数「fopen」で以下の警告が出ました。
warning C4996: 'fopen'が古い形式として宣言されました
調べてみると、こういうこと↓らしいです。
[Visual C++ 2005 C/C++ランタイム ライブラリ新機能概要]
http://www.microsoft.com/japan/msdn/security/demo/runtime.aspx
これからは、なるべくセキュアな対応をした関数を使ってね、
というらしいですね。
[セキュア関数への移行例]
fopen → fopen_s
確かに、最新のOS・サービスパックではバッファオーバーランしてると
動かなかったりしますので、開発者側にも意識が必要かも知れません。
時代の流れだなぁ・・・と感じました。
ところで、fopen_sでは、fopenとインタフェースが変更になっていました。
http://msdn2.microsoft.com/ja-jp/library/z5hh6ee9(vs.80).aspx
foepnの戻り値だったファイルポインタは第一引数になり、
fopen_sではエラー情報が返ってくるようになっています。
若干注意なのは、あくまでMS拡張なので標準Cではないことですかね??
もちろん、こちら↓の投稿のように警告を出さなくすることも可能です。
http://wind-master.dip.jp/soft-info/item/61
システムの用途・要件次第ではセキュアにこだわる必要も
ないと思います。
費用対効果を意識しないと...やってけない。
2007年01月25日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/32060730
この記事へのトラックバック
SQL Server ??????????????≪?????
Excerpt: VisualC++
Weblog: ??????違???????若?咲?????
Tracked: 2007-01-25 20:48
http://blog.seesaa.jp/tb/32060730
この記事へのトラックバック
SQL Server ??????????????≪?????
Excerpt: VisualC++
Weblog: ??????違???????若?咲?????
Tracked: 2007-01-25 20:48



