/Zc:referenceBinding (強制執行參考繫結規則)
指定 /Zc:referenceBinding 選項時,編譯器不允許非 const lvalue 參考系結至暫存。
語法
/Zc:referenceBinding [ - ]
備註
如果 指定 /Zc:referenceBinding ,編譯器會遵循 C++11 標準的第 8.5.3 節:它不允許將使用者定義類型暫時系結至非 const lvalue 參考的運算式。 根據預設,或 如果指定 /Zc:referenceBinding- ,編譯器會允許 Microsoft 延伸模組之類的運算式,但發出層級 4 警告。 針對程式碼安全性、可攜性和一致性,建議您使用 /Zc:referenceBinding 。
/Zc:referenceBinding 選項預設為關閉。 /permissive- 編譯器選項會隱含地設定此選項,但可以使用 /Zc:referenceBinding- 加以覆寫 。
範例
此範例顯示 Microsoft 延伸模組,可讓使用者定義型別的暫時性系結至非 const lvalue 參考。
// zcreferencebinding.cpp
struct S {
};
void f(S&) {
}
S g() {
return S{};
}
int main() {
S& s = g(); // warning C4239 at /W4
const S& cs = g(); // okay, bound to const ref
f(g()); // Extension: error C2664 only if /Zc:referenceBinding
}
如需 Visual C++ 中一致性問題的詳細資訊,請參閱 Nonstandard Behavior。
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
修改 [其他選項] 屬性以包含 /Zc:referenceBinding ,然後選擇 [ 確定 ]。
另請參閱
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: