IT技術サポート総合サイト
 
 言語:  VC++/MFC   PHP/Perl   VB/VBA   ASP/ASP.net   HTML/CSS   基本知識:  Windows   Linux   ネットワーク   MySQL   レンタルサーバ   SEO対策
キーワード: RSS2.0配信
 
 
コラム集:Visual Studio Tips
←前コラム    目次    次コラム→    
 
VC6.0からVisual Studio 2008に移植する時の問題
分類:VC++/MFC     著者:C15年     更新日付:2010/05/21
 
 
VC6.0からVisual Studio 2008に移植する時、時々以下の警告がでてしまう。
解決方法をまとめて見た。

1)fopenの警告
warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead.
解決方法:以下のように修正
修正前:
FILE *fp;
fp = fopen( "c:\\test.txt", "rb" );


修正後:
FILE *fp;
errno_t err;
if( (err  = fopen_s((&fp,"c:\\test.txt", "rb")) !=0 ){
   //エラー処理
}


2)sprintfの警告
warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead.
解決方法:これは簡単。sprintf()をsprintf_s()に書き換えれば、OK。
修正前:
char filename[64];
sprintf( filename, "%d.dat", i );


修正後:
char filename[64];
sprintf_s( filename, "%d.dat", i );



3)fscanfの警告
warning C4996: 'fscanf': This function or variable may be unsafe. Consider using fscanf_s instead.
解決方法:これも簡単。fscanf()をfscanf_s()に書き換えれば、OK。

4)メッセージハンドラのエラー
1>error C2440: 'static_cast' : 'UINT (__thiscall XXXXX::* )(WPARAM,LPARAM)' から 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' に変換できません。
解決方法:メッセージハンドラの関数型をUINTからLRESULTへ書き換えれば、OK。
 
 
←前コラム    目次    次コラム→