警告C4764は、キャッチブロックで使用するオブジェクトのアライメント指定が16バイトを超えている場合に表示されます。 例外処理時、スタック上では16バイト以内の整列が適用されるプラットフォームもあり、注意が必要です。 コード例を通して具体
続きを読む »Visual Studioで/clrオプションを指定してコンパイルする際、関数内でインラインアセンブリやsetjmpなどマネージドコードに変換できない処理があると、警告C4793が表示されます。 これにより、該当関数はネイティブコードとして
続きを読む »c言語で表示される警告C4800は、整数型の値が暗黙的にbool型に変換される場合に発生します。 例えば、int変数をbool型に代入すると、値がtrueまたはfalseとみなされる際に情報の一部が失われる可能性があるため、警告が出ます。
続きを読む »c言語でMicrosoftコンパイラを使用する際、警告C4811が表示される場合があります。 この警告は、プラグマconform(forScope, show)を利用することで、現在のconformの値を通知するために出力されます。 コード
続きを読む »c言語で発生するC4799警告は、MMX命令を使用した関数でEMMS命令や_mm_emptyが記述されていない場合に表示されます。 MMX命令実行後は、マルチメディア用のタグワードをクリアするために、これらの命令を必ず挿入する必要があります
続きを読む »C言語で発生する警告C4805は、bool型とint型など異なる型を混用した演算が原因で表示されます。 Visual Studioなどの開発環境で、例えばif (i == b)のような比較を行うと警告が出る場合があります。 意図した動作を確
続きを読む »c言語で発生するC4810警告は、Microsoftコンパイラで#pragma pack(show)オプションを使ったときに表示される注意メッセージです。 コード内で現在のパック設定を確認し、その後に新しい値を指定する際に発生することがあり
続きを読む »c言語で表示される警告C4804は、bool型の変数に対して不適切な算術演算を行った場合に出ます。 たとえば、-iのような記述で警告が発生します。 Microsoftのコンパイラが、安全性の観点からこのような使い方に注意を呼びかけています。
続きを読む »c言語で発生するコンパイラ警告C4744は、複数のファイルで定義や参照が行われる外部変数の型が異なる場合に通知されます。 /GLオプションを使用してコンパイルすると特に表示されるため、各ファイルで同じ型定義を行うか変数名を変更して対応する必
続きを読む »C言語でMicrosoftのコンパイラ警告C4709は、配列のインデックスにコンマ演算子を使った際に発生します。 配列インデックス式に含まれるコンマ演算子は、最後に評価された値をインデックスとして使用するため、思わぬ動作を招くことがあります
続きを読む »Visual C++で出る警告C4706は、if文などの条件式内で代入演算子「=」を使った場合に表示されます。 意図せず代入になってしまうと比較が正しく行われずエラーの原因となるため、比較の目的なら「==」を使うようにしてください。 もし代
続きを読む »C言語のプログラムをコンパイルする際、警告C4739は変数のサイズを超えて値を書き込もうとする場合に表示されます。 キャストなどで意図しないメモリ領域にアクセスすると、データの損失や予期しない動作の原因となるため、正しい型と変数サイズに合わ
続きを読む »Microsoftのコンパイラで発生する警告C4733は、インラインアセンブリでFS:0を使用して例外ハンドラを設定する際に、安全な例外ハンドラとして登録されていない場合に表示されます。 コード内でFS:0の値を変更することで、期待通りの例
続きを読む »C言語で発生する警告C4738は、浮動小数点計算などの操作で、丸め処理が必要になったり、使用可能なレジスタが不足して値を一時的にメモリへ格納する際に出力されます。 このため、プログラムのパフォーマンス低下につながる可能性があります。 対策と
続きを読む »c言語環境でMicrosoftコンパイラを使用する際、警告C4740は__asmブロック内から外部へジャンプがあると表示されます。 これにより、グローバル最適化が抑制され、意図した最適化が適用されない可能性があります。 コードの動作や最適化
続きを読む »Microsoft Visual Studioでコンパイルすると、複数のファイルで定義される外部変数のアラインメントが一致しない場合に、警告C4742が表示されます。 これは、各ファイルで異なる型定義や#pragma packの設定が原因と
続きを読む »c言語のソースファイル間で同じ名前の型や変数の定義が異なると、コンパイラが警告C4743を表示することがあります。 例えば、異なるファイルで定義された変数のサイズが一致しない場合に、この警告が発生します。 各ファイルで定義を統一することで警
続きを読む »c言語の開発環境で表示されるコンパイラ警告C4710は、inline指定がされている関数が実際にはインライン化されなかった場合に出力されます。 コンパイラはコードの最適化として、サイズや実行速度のバランスを考慮して独自の判断をしており、この
続きを読む »C言語で発生するC4703警告は、初期化されていないローカルポインター変数が使用される可能性を指摘するものです。 条件によってのみ値が設定される変数が、未初期化の状態で参照されると不具合につながるおそれがあります。 /sdlオプションを利用
続きを読む »