次の方法で共有


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

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

/Zc:forScope[-]

解説

標準動作とは、for ループの初期化子が for ループの後にスコープ外に出るようにすることです。 /Za、/Ze (言語拡張機能の無効化) では、for ループの初期化子は、ローカル スコープが終わるまでスコープ内にとどまります。

次のコードは /Ze ではコンパイルされますが、/Za ではコンパイルされません。

// 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 を宣言します。

/Zc:forScope の実行時の動作は、conform プラグマで変更できます。

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

Visual C++ の準拠の問題の詳細については、「非標準動作」を参照してください。

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

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

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

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

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

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

参照

関連項目

/Zc (準拠)

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