ページ 11

warning C4996

Posted: 2009年7月13日(月) 05:25
by
漢字弾幕についてですが、
龍神録の漢字弾幕プログラムを作成以降
warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

'sprintf' の宣言を確認してください。

warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

'fopen' の宣言を確認してください。

という警告が沢山表示されます。
この警告を消すにはどうしたらいいでしょうか?

Re:warning C4996

Posted: 2009年7月13日(月) 05:56
by DVDM
>>☆さん
以下の方法で警告を消すことができます。
・#pragma warning (disable : 4996)
・#define _CRT_SECURE_NO_WARNINGS
どちらを書いて頂いても構いません。
記述場所はプログラムの先頭にでも書いておくといいと思います。

また、sprintf()やfopen()の代わりに、sprintf_s()やfopen_sを使うことでも警告は消えます。

Re:warning C4996

Posted: 2009年7月13日(月) 07:52
by
返答ありがとうございます。
sprintf()については、おかげで消えました。
でもfopen_sについては、置き換えると

error C2660: 'fopen_s' : 関数に 2 個の引数を指定できません。

というエラーが出てしまいます・・
なんとかならないでしょうか?

Re:warning C4996

Posted: 2009年7月13日(月) 08:23
by 通り
ググるなりして関数の仕様を確認しようよ

Re:warning C4996

Posted: 2009年7月13日(月) 22:05
by み~
>通り
・・・

Re:warning C4996

Posted: 2009年7月15日(水) 00:43
by たいちう
>DVDMさん
fopen_sは2個の引数ないんじゃ?

Re:warning C4996

Posted: 2009年7月15日(水) 04:08
by DVDM
>>たいちうさん
置き換えるだけではエラーが出るので、使うと書いたのですが私の書き方が悪かったみたいですね;
申し訳ございませんでした。
FILE* fp;
errno_t error;
if( (error = fopen_s( &fp, "ファイル名", "モード" )) != NULL )
{
    /* ファイルオープンに失敗したとき */
}
MSDNライブラリより:http://msdn.microsoft.com/ja-jp/library/z5hh6ee9(VS.80).aspx

こんな風に書いておけば宜しいですか?