C言語でコンパイラ警告C4794は、__declspec(thread)で定義されたスレッドローカルストレージ変数が、誤ったセクションに配置された場合に表示されます。 例えば、#pragma data_segを使って.somesegなどのセ
続きを読む »c言語で発生するC4799警告は、MMX命令を使用した関数でEMMS命令や_mm_emptyが記述されていない場合に表示されます。 MMX命令実行後は、マルチメディア用のタグワードをクリアするために、これらの命令を必ず挿入する必要があります
続きを読む »c言語で表示される警告C4800は、整数型の値が暗黙的にbool型に変換される場合に発生します。 例えば、int変数をbool型に代入すると、値がtrueまたはfalseとみなされる際に情報の一部が失われる可能性があるため、警告が出ます。
続きを読む »C4803 警告は、イベントを実装する際に、暗黙で生成される raiseメソッドのストレージクラスがイベント宣言と異なる場合に発生します。 コンパイラが自動で調整するため、raiseメソッドは仮想関数にならず、継承などで意図しない動作を招く
続きを読む »c言語で表示される警告C4804は、bool型の変数に対して不適切な算術演算を行った場合に出ます。 たとえば、-iのような記述で警告が発生します。 Microsoftのコンパイラが、安全性の観点からこのような使い方に注意を呼びかけています。
続きを読む »C言語で発生する警告C4805は、bool型とint型など異なる型を混用した演算が原因で表示されます。 Visual Studioなどの開発環境で、例えばif (i == b)のような比較を行うと警告が出る場合があります。 意図した動作を確
続きを読む »c言語で発生するC4810警告は、Microsoftコンパイラで#pragma pack(show)オプションを使ったときに表示される注意メッセージです。 コード内で現在のパック設定を確認し、その後に新しい値を指定する際に発生することがあり
続きを読む »c言語でMicrosoftコンパイラを使用する際、警告C4811が表示される場合があります。 この警告は、プラグマconform(forScope, show)を利用することで、現在のconformの値を通知するために出力されます。 コード
続きを読む »C言語で発生するC4703警告は、初期化されていないローカルポインター変数が使用される可能性を指摘するものです。 条件によってのみ値が設定される変数が、未初期化の状態で参照されると不具合につながるおそれがあります。 /sdlオプションを利用
続きを読む »Visual C++で出る警告C4706は、if文などの条件式内で代入演算子「=」を使った場合に表示されます。 意図せず代入になってしまうと比較が正しく行われずエラーの原因となるため、比較の目的なら「==」を使うようにしてください。 もし代
続きを読む »C言語でMicrosoftのコンパイラ警告C4709は、配列のインデックスにコンマ演算子を使った際に発生します。 配列インデックス式に含まれるコンマ演算子は、最後に評価された値をインデックスとして使用するため、思わぬ動作を招くことがあります
続きを読む »c言語の開発環境で表示されるコンパイラ警告C4710は、inline指定がされている関数が実際にはインライン化されなかった場合に出力されます。 コンパイラはコードの最適化として、サイズや実行速度のバランスを考慮して独自の判断をしており、この
続きを読む »c言語で表示されるコンパイラ警告C4711は、関数のインライン展開が実施されたことを知らせる情報提供の警告です。 /Ob2オプションが有効な環境で発生し、コードの最適化状況を確認する一助となります。 警告自体はエラーではなく、安心してコーデ
続きを読む »警告C4714は、__forceinlineとして指定した関数がコンパイラによるインライン展開に至らなかった場合に表示されます。 コンパイラは最適化や環境条件に基づいて、例外処理やインラインアセンブリ、可変引数などの特殊な構造を持つ関数のイ
続きを読む »c言語で戻り値を返す関数において、すべての経路で値が返されない場合、コンパイラは警告C4715を出します。 例えば、条件分岐で一部の経路のみ戻り値が示されると警告が発生します。 対策として、全ての分岐で必ず戻り値を返すようコードを修正する必
続きを読む »Microsoftのコンパイラで表示される警告C4716は、戻り値が必要な関数でreturn文がない場合に発生します。 例えば、int型の関数で値を返さないと、未定義の値が返却される恐れがあります。 開発環境が整備されている場合、関数内に正
続きを読む »C言語で表示される警告C4717は、再帰関数が正しく終了せず、実行時に無限に自己呼び出しを繰り返す可能性があることを示します。 つまり、全ての制御パスが関数呼び出しにより戻らず、ランタイムスタックオーバーフローが生じる恐れがあるため、再帰呼
続きを読む »C4718警告は、C言語のプログラム内で再帰呼び出しが副作用を持たない場合にMicrosoftコンパイラが発するものです。 コンパイラは最適化の一環として、その再帰呼び出しを削除します。 正確性への影響は少ないですが、意図した再帰処理が動作
続きを読む »この記事では「c言語 c4722」について解説します。 C4722は、デストラクター内でexit()を呼び出した際に発生する警告であり、リソースが正しく解放されずメモリリークの原因となる可能性があります。 警告の内容を理解し、対策を講じる方
続きを読む »