/Zc:forScope (for ループのスコープの強制準拠)

Microsoft 拡張機能 (/Ze) を使用して、for ループに C++ の標準動作を実装する場合に使用します。 /Zc:forScope は既定でオンになります。

/Zc:forScope[-]

解説

標準動作では、for ループの後、for ループの初期化子をスコープの外にします。 /Za、/Ze (言語拡張機能の無効化) では、ローカル スコープが終了するまで、for ループの初期化子がスコープ内に残っています。

次のコードは /Za ではなく /Ze でコンパイルされます。

// zc_forScope.cpp
// compile with: /Zc:forScope- /Za
// C2065 expected
int main() {
   // Uncomment the following line to resolve.
   // int i;
   for (int i =0; i < 1; i++)
      ;
   i = 20;   // i has already gone out of scope under /Za
}

/Zc:forScope- を使用した場合は、前のスコープでの宣言によって変数がスコープ内に存在すると、警告メッセージが表示されます。この警告メッセージは、既定では無効になっています。 これを試してみるには、上のコードの // 文字を削除して int i を宣言してください。

conform プラグマを使用して、/Zc:forScope の実行時の動作を変更できます。

既存の .pch ファイルを使ったプロジェクトで /Zc:forScope- を使用すると、警告メッセージが表示されて /Zc:forScope- は無視され、既存の .pch ファイルを使ってコンパイルが継続されます。 新しい .pch ファイルを生成するには、/Yc (プリコンパイル済みヘッダー ファイルの作成) を使用します。

Visual C++ の準拠の問題の詳細については、「Compatibility and Compliance Issues in Visual C++」を参照してください。

Visual Studio 開発環境でこのコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、「プロジェクト設定の変更」を参照してください。

  2. [C/C++] フォルダーをクリックします。

  3. [言語] プロパティ ページをクリックします。

  4. [for ループ スコープの強制準拠] プロパティを変更します。

このコンパイラ オプションをコードから設定するには

参照

参照

/Zc (準拠)

/Za、/Ze (言語拡張機能の無効化)