ここから質問投稿すると、最大10000ポイント当たる!!!! >>

夜も遅くに申し訳ありません

現在、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)が生成されません

原因を探そうとネットを漁ってみたのですが判らないままです。

警告を全て消さないといけないのでしょうか?



申し訳ありませんが教えてください

このQ&Aに関連する最新のQ&A

A 回答 (3件)

C4090 const変数に代入してるようなのでバグです。


C4996 この関数は安全では無いので、新しいのを使ってね。
C4047 ポインタの深さが違うんで、たぶんバグです。
てな意味です。

> 原因を探そうとネットを漁ってみたのですが判らないままです。
見直してみるべきなのはソースです。「ソースだ、ルーク」

> 警告を全て消さないといけないのでしょうか?
重症もありそうなので直さないとだめでしょう。
    • good
    • 0

★アドバイス


1>.\strling.c(19) : warning C4090: 'return' : 異なる 'const' 修飾子です。
1>.\strling.c(67) : warning C4090: 'return' : 異なる 'const' 修飾子です。
 これは
 const char *my_strcpy( char buff[], const char str[] )
 {
  :
  return buff; ←ここで警告
 }
 正しくは『return (const char *)buff;』とします。
・または
 char *my_strcpy( char buff[], const char str[] )
 {
  :
  return str; ←ここで警告
 }
 の場合は『return (char *)str;』とします。
 多分このようなソースになっていると思います。
>警告を全て消さないといけないのでしょうか?
 ↑
 私は警告がすべて出ない状態が基本と考えています。
 つまり1つでも警告があるとバグにつながるという考えです。
 だからキャスト時も注意してキャストします。
 ほかにも無限ループを組むときには while (1){ … } だと警告が出るため
 for ( ; ; ){ … } で組んでいます。これなら警告が出ませんので。
 ※もちろん while(1) でも問題はないです。
 ※警告が出ると他の重要な警告と区別するのが大変になるため出ない方法を取ります。
1> …stdio.h(237) : 'fopen' の宣言を確認してください。
1> …stdio.h(279) : 'gets' の宣言を確認してください。
1> …stdio.h(279) : 'gets' の宣言を確認してください。
1> …stdio.h(237) : 'fopen' の宣言を確認してください。
1> …stdio.h(279) : 'gets' の宣言を確認してください。
 これは VC++2005 から用意された新しい fopen、gets を使えという警告でしょう。
 C標準関数の fopen、gets は buff のサイズを指定できないからMSが独自に用意した
 セキュリティ強化の関数を使うようにということでしょう。
 例えば gets_s() 関数を使えという事。
 次のサイトを参考にして下さい。
 http://www.kumei.ne.jp/c_lang/net2005/index.html→『VS2005でうまくビルドできないときは』
 http://www.kumei.ne.jp/c_lang/intro2/no_125.htm→『第125章 文字列を取り扱う新しい関数 その1 』
 MSDNのマニュアルでは
 http://msdn2.microsoft.com/ja-jp/library/5b5x9wc7(VS.80).aspx→『gets_s、_getws_s』
 を参考にして下さい。
    • good
    • 0

一応exeは作成されてるようですね。

正常に動くかどうかは甚だ疑問ですが(^^;

「スタート」メニューとかの検索でも見つかりませんか?
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード


人気Q&Aランキング