トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
VisualStudio
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ ErrorCode


___

■ C1083

MESSAGE file `` が開けない DESC Link, Compile , PreCompileHeader などの file が見つからない SOL PATH を変更する
___

■ C2017

Define の \ の跡に SPACE があった 要は Escape は "" ないにないとだめ
___

■ C2589

class Foo{}; Foo::int a; ..\console.cpp(70) : error C2589: 'int' : スコープ解決演算子 (::) の右側にあるトークンは使えません DESC [ :: ] の右側には Class, Struct, Union 名のどれかを指定すること。 または 任意のメンバだけですよ ! クラス、構造体、または共用体の名前がスコープ解決演算子 (::) の左側にあるとき 右側のトークンにはクラス、構造体、あるいは共用体のメンバを指定する必要があります それ以外の場合、右側には任意のグローバル識別子を指定できる スコープ解決演算子はオーバーロードできない 次の例では C2589 エラーが生成されます
___

■ C2220

MESSAGE 警告はすべてエラーとして処理されますエラーが発生したため、オブジェクトまたは実行可能ファイルは生成されませんでした DESC コンパイルオプション "/WX" を指定したため Warning をエラー扱いにしてコンパイルが中断された。 Warning をエラー扱いにしたくないなら /WX を指定しない、または すべての Warning をなくす。
    // error C2220: 警告をエラーとして扱いました'object' ファイルは生成されません
    // warning C4101: 'i' : ローカル変数は 1 度も使われていません    

    int main() {
      int i;
      return 0;
    }
___

■ C2632

MESSAGE 'type1' の後に 'type2' を記述するのは正しくありません DESC int, float

    // Type Identifier が連続するといわれる
    int float i;   // C2632

    // bool が定義すみの環境では C2632
  <   typedef unsigned char bool;
___

■ C2653

..\foo.cpp(56) : error C2653: 'std' : 識別子がクラス名でも名前空間名でもありません [ std ] という Class, NameSpace は知りません と Compiler がいっている
___

■ C4100

参照されない 仮引数の警告 WarningLevel4 の対策 解決方法
    消す || 参照する. (void)arg; || arg;   // (void) 型に cast 
MESSAGE ';' : 制御が空の文が見つかりました意図した記述でしょうか DESC if (1); 制御文の後に ; があるときにでる EX int main() { int i = 0; if (i); // C4390 i++; } POINT MACRO を展開したときにこうなる可能性がある
___

■ C4390

MESSAGE ';' : 制御が空の文が見つかりました意図した記述でしょうか DESC if (1); 制御文の後に ; があるときにでる EX int main() { int i = 0; if (i); // C4390 i++; } POINT MACRO を展開したときにこうなる可能性がある
___

■ C4267

DESC 64bit 環境の size_t 型から, 小さいサイズの型に変換する際に発生する。 size_t は環境ごとに次のように定義されている
    // 32bit
    typedef unsigned int  size_t;

    // 64bit
    typedef __int64 size_t
___

■ C4244

MESSAGE '引数' : 'type1' から 'type2' への変換です。データが失われる可能性があります。 DESC 浮動小数点型が整数型に変換されました。データが失われた可能性があります。 互換性のある型を使用するようにプログラムを変更するか 別の論理をコードに追加するかして、変換される値の範囲が使用する型と常に互換性があるようにする
    int f(int x){ return 0; }
    int main() {
       double x = 10.1;
       int i = 10;
       return (f(x));   // C4244
       // try the following line instead
       // return (f(i));

       // C4244
       float f = 10;
    }
範囲内にあるときも同様になる
    float f = 1000;

  WARNING
    // 範囲外にあれば int 型のデータは float 型へ変換した際に欠落する
    float f = 1024 * 1024 + 1;
    float i = f;
引数' : 'unsigned int' から 'float' への変換です。データが失われる可能性があります。


___

■ C4018

MESSAGE 'expression' : signed と unsigned の数値を比較しようとしました。 C4018: '< ' : signed と unsigned の数値を比較しようとしました。 signed 型の数値と unsigned 型の数値を比較するには、コンパイラで signed 型の値を unsigned 型に変換する必要があります。 signed 型と unsigned 型をテストするときに どちらか一方の型をキャストすると解決することがあります。 POINT マイナスの値と比較するとエラーが発生する 逆に正の値しか扱わない場合はエラーにならない

    for( int i=0; i< listLog.size(); i++ ){


___

■ C4800

MESSAGE 'int' : ブール値を 'true' または 'false' に強制的に設定します (警告の処理) 'type' : ブール値を 'true' または 'false' に強制的に設定します (警告の処理)。 非 bool 値を bool 型に代入するか強制的に変換するとこの警告が生成されます。 値 true または false しか取らない int 変数を bool 変数に代入しており、 bool 型として再宣言できる場合が含まれます。 bool 型を使用するように式を書き直すことができない場合は、式に "!=0" を追加して bool 型にできます。 式をただ bool 型にキャストしても、この警告が生成されます (設計仕様)。
// compile with: /W3
   int i = 0;

   // try..
   // bool i = 0;

   bool j = i;   // C4800
   j++;

___

■ C4291

MESSAGE 'void *Test::operator new(size_t,unsigned int) throw()' : 初期化コードが例外をスローすると、'new' 演算子を使用しているとメモリを解放しません。 DESC 宣言' : 初期化コードが例外をスローすると、'new' 演算子を使用しているとメモリを解放しません。 仮引数付きの new が使用されていますが 該当する仮引数付きの delete がありません。 new 演算子でオブジェクトにメモリを割り当てると そのオブジェクトのコンストラクタが呼び出されます。 コンストラクタが例外をスローした場合は、オブジェクトに割り当てられていたメモリを解放する必要があります。 new 演算子と一致する operator delete 関数がない場合、メモリの解放はされない。 余分な引数を付けずに new 演算子を使用し、/GX、/EHs、または /EHa の各オプションでコンパイルして例外処理を有効にすると コンストラクタが例外をスローしたときに delete 演算子を呼び出すコードが生成されます。 仮引数付きの new 演算子 つまり割り当てサイズ以外の引数を伴う形式の new 演算子を使用すると、 コンストラクタが例外をスローしたときにも、 delete 演算子を呼び出すコードは生成されます。 これは、メモリを割り当てた仮引数付きの new 演算子と一致する仮引数付きの delete 演算子がある場合だけです。
      仮引数付きの new 演算子と一致する仮引数付きの delete 演算子が定義されていないため、警告 C4291 が生成されます。
      この問題を解決するには、main の前に次のコードを挿入します。
      オーバーロードされた operator delete 関数のパラメータは、最初のパラメータを除き、
      すべてオーバーロードされた new 演算子と一致することに注意してください。
    // throw を宣言すると 例外が投げられることになる
      void* operator new(size_t t, unsigned int id ) throw();

    // 宣言をしないと エラーにならない
      void* operator new(size_t t, unsigned int id ) ;

___

■ C4305

MESSAGE 'identifier' : truncation from 'type1' to 'type2' 識別子が小さい型に変換されるため、情報が失われます。

    // float 型に double 型の値をいれる発生する
    v.set( 0, 0.142857, 0.342857 );

    
// 型に合った値をいれればなおる
    v.set( 0.1f );

warning C4305: '引数' : 'double' から 'float' へ切り詰めます。
___

■ C4312

MESSAGE 'type1' からより大きいサイズの 'type2' へ変換します。 DESC この警告は 64 ビットの移植性の問題を検出します。 64 ビットの型に対して 32 ビットの値を割り当てようとしました。 32 ビット int または 32 ビット long を 64 ビットポインタにキャストしています。 符号の拡張が発生する場合、 一部の環境では これは安全でない変換になります。 int 型よりもサイズが大きいポインタ型に負数が割り当てられると 符号の拡張 が発生するため ポインタ型の値が int 型の値と異なるメモリ アドレスを参照するようになります。 この警告は /Wp64 が使用されている場合にのみ出される。
    // C4312.cpp
    // compile with: /W1 /Wp64 /LD
    void* f(int i) {
       return (void*)i;   // C4312
    }

    // OK
    void* f2(__int64 i) {
       return (void*)i;
    }
___

■ C4313

MESSAGE 'function' : 書式指定文字列内の 'format specifier' が 'type' 型の引数 %d と競合しています POINT printf() の format 指定子 が, 引数の型と矛盾したときにおきる。
    {
      void *p = malloc( 1024 );

      // ERROR
      //    64bit pointer 
      printf( "%d", p );             

      // OK
      printf( "%p", p );             
      printf( "%Id", p );
    }
64 ビット整数を保持できる %d 書式指定子に 32 ビット ポインタを渡している。 この警告が有効なのは /Wp64 オプションを使用している場合だけ
___

■ C4313

___

■ オーバーロードのどれも、すべての引数の型を変換できませんでした

DESC 問題箇所の関数がどれもオーバーロードする関数にならないということ。 引数が間違っているかチェックすること。
___

■ C4996

MESSAGE DESC セキュリティ的に推奨されない関数が利用されている。
    FILE *fp = fopen( "test.txt", "r" );
warning を消すには _CRT_SECURE_NO_WARNINGS を定義するか、 warning プラグマ を利用する
    #pragma warning(disable : 4996)    
    cl /W4 /D"_CRT_SECURE_NO_WARNINGS" main.cpp
___

■ C4530

MESSAGE FILE(LINE) : warning C4530: C++ 例外処理を使っていますが、アンワインドセマンティクスは有効にはなりません。 /EHsc を指定してください。 原因 標準 C++ ライブラリを使用するプログラムは、 C++ の例外処理を有効にしてコンパイルする必要がある。 ( 理由は ライブラリが例外処理をつかっているから ) 解決方法 /EHsc オプションを有効にする。
    [C/C++] > [コード生成] > [C++ の例外を有効にする] 

    cl /EHsc 
    // 標準ライブラリを利用する
    #include< string> 
    std::string s( "test" );
標準ライブラリを利用する場合は、例外処理を有効にしてコンパイル(コード生成)をする。
    cl /EHsc test.cpp
標準ライブラリを利用しないでも C++例外処理を使うと( try { 文の箇所で ) warning が発生する。
    try {
        throw "例外が発生しました";
    }
    catch( const char* str ){
      printf( "例外をキャッチしました\n" );
    }
デストラクタがすべてのオブジェクトに対して呼び出されない場合があります。 ただし初期化されていない関数ポインターを通じて関数呼び出しを実行しようとして その関数として呼び出す前に作成した パラメーターのオブジェクト たとえば構造化例外が発生する場合これらのオブジェクトに アンワインドするスタック中に呼び出されたデストラクターはありません。 REFERENCE Exception
















NINJAIDX 15