C++ MFCで使われる関数の変更について

このQ&Aのポイント
  • C++ MFCで使われる関数のいくつかについて、それぞれの変更点を教えてください。
  • 変更前の関数名と変更後の関数名を比較し、具体的な違いを教えてください。
  • 変更後の関数は変更前の関数と同じ意味を持つのか、変更があるのか教えてください。
回答を見る
  • ベストアンサー

_itowとitow_sの違い

お世話になります。 Visual stdio 20110 C++ MFCで作成しております。 error C4996の警告メッセージが出たので、確認してみると 「wcsicmp」「_tcscpy」「_itow」「_tcscatと_tcscat_s」が危険だと 言うメッセージでした。 そこで、それぞれ 「_wcsicmp」「_tcscpy_s」「itow_s」「_tcscat_s」に変更しました。 しかしながら、変更前から意味が変わっていないか不安です。 すべて、共通していると思いますが、 ・wcsicmpと_wcsicmpの違い ・_tcscpyと_tcscpy_sの違い ・_itowとitow_sの違い ・_tcscatと_tcscat_sの違い を具体的に教えてもらえないでしょうか? おかしな事が起こったときの対処がされている→変更して、 意味は変わらず、強化されてただけと思っていいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

これですね。 セキュリティ問題で話題のバッファオーバーランの脆弱性対処ですね。

参考URL:
http://msdn.microsoft.com/ja-jp/library/8ef0s5kh(v=vs.80).aspx

関連するQ&A

  • 暗証番号やパスワードを変更する意味は?

    暗証番号やパスワードを変更する意味は? 特にお金に関するサイトはパスワードなどを定期的に変更するように警告されますが、悪用されていないのに変更する意味はあるのでしょうか。確率的には特に危険度が増すとは思えないのですが。一定回数間違えたらロックするとかの対処すれば良いだけではないかと思います。

  • scanf関数について

    質問があります。 最近C言語を勉強し始めたのですが、scanf関数を使うと以下のような警告が出ます。 「arning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' の宣言を確認してください。」 使用しているのは Visual C++ 2008 Express Editionです。

  • Visual C++ 2008 Expreesのコンパイルについて

    夜も遅くに申し訳ありません 現在、Visual C++ ExpressでCのソースを書いているのですが 以下のような警告がでてしまいます 1>------ ビルド開始: プロジェクト: addres2, 構成: Release Win32 ------ 1>コンパイルしています... 1>strling.c 1>.\strling.c(19) : warning C4090: 'return' : 異なる 'const' 修飾子です。 1>.\strling.c(67) : warning C4090: 'return' : 異なる 'const' 修飾子です。 1>save.c 1>.\save.c(8) : 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. 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(237) : 'fopen' の宣言を確認してください。 1>namesort.c 1>nameret.c 1>.\nameret.c(20) : warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(279) : 'gets' の宣言を確認してください。 1>main.c 1>.\main.c(30) : warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(279) : 'gets' の宣言を確認してください。 1>load.c 1>.\load.c(15) : 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. 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(237) : 'fopen' の宣言を確認してください。 1>key.c 1>input.c 1>.\input.c(13) : warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(279) : 'gets' の宣言を確認してください。 1>.\input.c(28) : warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(279) : 'gets' の宣言を確認してください。 1>.\input.c(31) : warning C4047: '関数' : 間接参照のレベルが 'char *' と 'char (*)[64]' で異なっています。 1>.\input.c(31) : warning C4024: 'InputKey' : の型が 1 の仮引数および実引数と異なります。 1>リンクしています... 1>コード生成しています。 1>コード生成が終了しました。 1>マニフェストを埋め込んでいます... 1>ビルドログは "file://g:\プログラム\addres2\addres2\Release\BuildLog.htm" に保存されました。 1>addres2 - エラー 0、警告 10 ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ========== 一応は正常終了するのですが実行ファイル(exe)が生成されません 原因を探そうとネットを漁ってみたのですが判らないままです。 警告を全て消さないといけないのでしょうか? 申し訳ありませんが教えてください

  • visual c++/c# 2005 Express Editioenについて

     最近、visual C++/C# 2005 Expressをダウンロードして、勉強しています。visual C#とvisual C++の本は買ったのですが、Visual C++.netのMFC、2005のCLRの意味が分からなくて、本を読んでも理解できません。とくにMFCが…実は、Visual C++は、.netで2002~2003年バージョンで、メニューなども違って、どう読みこなせばいいか分かりません。(Visual C++.net 入門 ビギナー編 著 林晴比古) どなたか、MFCとCLRの違い、また、この本のどの点が、VisualC++2005 Express Editionと同じなのか、教えてもらえれば、うれしいです。  よろしくお願いします。

  • Spybot-S&DがGoogle Updateに警告しています

    先日、Google Chromeをインストールし、その後は殆ど使っていなかったのですが、 さきほどChromeを起動していないのに、Google Updateについて 常駐のSpybotから「重要なRegistryの変更を検知しました」と警告を受けました。 いまメッセージでは、 > カテゴリ:System Startup user entry > 変更:値追加 と出ています。このメッセージの意味が分からないのですが、「変更を許可」しても パソコンを壊されたりデータを盗まれたりしないものでしょうか? 不安なのでよろしくお願いします。

  • GetComputerName のヘッダーについて

    お世話になります。 Visual stdio 2010 C++ MFC で作成しております。 CString test=GetComputerName(0); という形でコンピュータ名を取得しようとしているのですが、 ビルドすると LNK2019 未解決のシンボル GetComputerName・・・ と出て、GetComputerNameの関数が不明な旨メッセージが出ます。 そこで、 #include <winbase.h> #include <windows.h> #include <stdio.h> #pragma comment(lib,"Kernel32.lib") など、インクルードしたのですが、同じメッセージのままです。 どのヘッダーをインクルードしたらよいのでしょうか、また、 必要なリンケージ等もありましたら教えてください。 お手数ですがよろしくお願いいたします。

  • 途中からMFCを使用したい

    はじめて質問させていただきますVisual C++初心者です。 現在Visual C++ 6.0で開発作業を行っていますが大変困っています。 前任者が「MFCを使用しない」でプロジェクトを作成していたのですが、前任者の退職により本作業を引き継ぐことになりました。 ほとんどAPIのみで作成されたいましたが、MFCを使用したいと考え、プロジェクト設定から「共通DLLでMFCを使用」にしたところ、リンカエラー(LNK2001)が続出しました。(恐らくAPI使用分だけ出ているのだと思います。) このように途中からMFCを使用する場合、簡単に設定変更できるものなのでしょうか。やはり、MFC使用でプロジェクトを作り直してからコードを移植していったほうが早いのでしょうか。 諸先輩方のご意見を参考にさせてください。宜しくお願い致します。

  • Visual C++ 2008 オーバーフローのエラーについて

    プログラムのデータ量を増やしたところ、エラーが起こりました。 減らせば流れることから、スタックオーバーフローと呼ばれるものかと思います。 スタックサイズが初期値のままなのが原因だと予想したのですが、この変更方法がどうにもわかりません。 もしよろしければ、スタックサイズの変更方法を教えてください。 また、別の対処方法をご存知でしたらそちらでも結構です。 ソフトはMicrosoft Visual stdio 2008のC++です。 どうぞよろしくお願いします。

  • Floppy disk(s) fail(40) の意味・原因と対処を教えて下さい

    Floppy disk(s) fail(40) の意味・原因と対処を教えて下さい。 起動時、MemoryTestの後、このメッセージが出ます。 MotherBoard:FIC VA-503+ BIOS:Award V4.60PGA です。 よろしくお願いします。

  • Spybot S&D 1.4 or 1.5 でのエラーメッセージ

    Spybot S&D 1.4でスパイウェアのスキャン中に『 include ファイルに問題があります C:\Program File\Spybot - Search_Destroy\Include\TrojansC.sbi 詳細は 'Include errors.log'を確認して下さい。』の警告メッセージが表示され、その後、スキャンが終了すると『 おめでとう!スパイウェアは検出されませんでした。』と表示されます。 include ファイルに問題があるのにスキャンの結果は問題無しと言うのも心配なので、Spybot S&D 1.4をアンインストールし、Spybot S&D 1.4をインストールし直しました。 再度、スパイウェアのスキャンを行ったのですが、またまた同じ『 include ファイルに問題があります・・・を確認して下さい。』と表示されます。スキャンの結果は同じく問題無しでした。 そこで、Spybot S&D 1.4をアンインストールし、Spybot S&D 1.5をインストールし直し、スキャンを行ったのですが、『 include ファイルに問題があります C:\Program File\Spybot - Search_Destroy\Include\Trojans.sbi 詳細は 'Include errors.log'を確認して下さい。』の警告メッセージが表示され、その後、スキャンが終了すると『 おめでとう!スパイウェアは検出されませんでした。』と表示されます。 エラーログらしきものを見ても意味が分からず、Include ファイルに問題がある場合の対処方法が分かりません。 どなたか解決策を教えて下さい。よろしくお願いします。

専門家に質問してみよう