2007年01月25日

[VC++2005]<<警告>>C4996: 'fopen'が古い形式として宣言されました

前回の投稿と同じく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

システムの用途・要件次第ではセキュアにこだわる必要も
ないと思います。
費用対効果を意識しないと...やってけない。
posted by てるとみ at 02:12| Comment(0) | TrackBack(1) | プログラミング/.NET関係 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/32060730

この記事へのトラックバック

SQL Server ??????????????≪?????
Excerpt: VisualC++
Weblog: ??????違???????若?咲?????
Tracked: 2007-01-25 20:48