2011年3月10日木曜日

C/C++標準ライブラリを正しく使う時に、非推奨警告を出さない方法 - Visual C++

Visual C++
○2010 Express
Visual C++では、C/C++標準ライブラリを正しく使っていても、警告が出る事があります。
理由は、セキュリティを強化する目的で、標準ライブラリの一部の機能を非推奨にしているからです。
この警告は、出さないようにする事も出来ます。


**** 手順
o 標準ライブラリのヘッダーファイルがインクルードされる前に、次のようなコードを入れます。
--------
#define _CRT_SECURE_NO_WARNINGS
--------


o おすすめの書き方は、2通り(= プロジェクトで設定する方法も加えると、3通り)あります。
    + ソースコードの先頭で、#include の行が始まる前に記述します。
        + ソースファイルが1つしかない時は、こちらの書き方が便利です。
    + もしくは、次のように書きます。
        + ソースコードの先頭では、最初に特定のヘッダーファイルを #includeします。
        + 呼ばれたヘッダーファイルの中で、#include の行が始まる前に記述します。
o この他に、プロジェクトの設定で、定数を定義する方法もあります。

o Visual C++ が自動生成するサンプルコードのまま場合、stdafx.hの中の「#pragma once」行の下辺りに書くのが良さそうです。
    + 全てのソースファイルの先頭で、stdafx.hをインクルードしていました。


**** メモ
o 警告を出さないようにすると、次のような時に便利です。
    + Visual C++を使って、C言語やC++の標準の書き方を勉強している時
    + 他のシステムでも動作するように、汎用的なソースコードを書いている時
o 反対に、この警告を利用して、セキュリティが弱くなり易い所を検証する使い方も出来ます。
o UNIX用のプログラムを Windowsでも動かしたい時は、POSIX用マクロも有効にすると、ビルドの際の手作業が減ります。
    + 詳しくは、「UNIXの(POSIX準拠)プログラムをビルドする時に、なるべく警告やエラーを出さない方法


**** 参考資料
▽CRT のセキュリティ機能(MSDNライブラリ)


**** 確認したバージョン
o Microsoft Visual C++ 2010 Express


==
関連ページ:
    ▼Visual C++
    ▼コンピューター・プログラムを作る
    ▼制作メモ
    ▼目次
    > _tmain関数の代わりに main関数を使う方法
    UNIXの(POSIX準拠)プログラムをビルドする時に、なるべく警告やエラーを出さない方法
    Visual C++の文字セット設定を、マルチバイト文字セットにする方法