プロが教える店舗&オフィスのセキュリティ対策術

すいません。

VC++6.0で、特定の警告を#pragmaを使用せずに、抑制したいのですが
方法を教えていただけませんか。

A 回答 (3件)

VC++に限らずC/C++の警告はごく少数の例外を除いて他の言語でのエラーに近い重みがあります。


それを抑制するというのはごく少数の例外を除いて非常に危険な行為で、正攻法(エラー/警告が出ないようにコードを修正する)で潰すべきです。
ですので、本当に無視していい警告なのかどうか確認するため、どんなコードを扱っていてその「特定の警告」が何なのかお教えください。

また、#pragmaが使用できない理由もお教えください。

この回答への補足

コマンドラインオプションの/wdのようなコマンドは、
VC++6.0にありますか?

補足日時:2012/01/14 22:37
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

発生している警告コードはC4786です。
テンプレート関数の関数名で警告が出ています。

#pragmaが使用したくないことについてですが、
ソースコードを、ほかの環境(Visual Studio2005など)でも、
使用するので、できればVC++6.0のプロジェクトの設定で
何とかしたいのが理由です。

質問が乱暴すぎました。すいません。

お礼日時:2012/01/14 22:35

あーなるほどC4786ですか。

確かにあれはVC++6.0でテンプレートを使用するとよく出る、「ごく少数の例外」に含まれる警告ですね。

「ソースコードを、ほかの環境(Visual Studio2005など)でも、使用する」というのであれば、以下のように_MSC_VERマクロの値を見て#pragmaを使うかどうか判定するというのはどうでしょうか。

#if defined(_MSC_VER) && _MSC_VER < 1300
#pragma warning(push)
#pragma warning(disable:4786)
#endif // defined(_MSC_VER) && _MSC_VER < 1300
 ……(警告が発生するコード)……
#if defined(_MSC_VER) && _MSC_VER < 1300
#pragma warning(pop)
#endif // defined(_MSC_VER) && _MSC_VER < 1300

参考:VC++各バージョンの_MSC_VERマクロの値
http://oksluo.blog10.fc2.com/blog-entry-2.html
    • good
    • 0

警告は出てもコンパイルはされるから無視すれば。


統合開発環境ではプロジェクトの設定のC/C++の部分に警告レベルの設定があります。
コマンドラインのオプションでは /Wn ですね (nは警告レベル1~4)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

警告レベルの抑制では、同レベルのほかの警告も抑制するので、
できれば避けたいです。

お礼日時:2012/01/14 22:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!