Derleyici Uyarısı (düzey 1) C4342
davranış değişikliği: 'function' çağrıldı, ancak önceki sürümlerde bir üye işleci çağrıldı
Visual Studio 2002'den önceki Visual C++ sürümlerinde bir üye çağrıldı, ancak bu davranış değiştirildi ve derleyici artık ad alanı kapsamında en iyi eşleşmeyi buluyor.
Bir üye işleci bulunursa, derleyici daha önce herhangi bir ad alanı kapsam işlecini dikkate almayacaktı. Ad alanı kapsamında daha iyi bir eşleşme varsa, geçerli derleyici doğru şekilde çağırır, ancak önceki derleyiciler bunu dikkate almaz.
Kodunuzu geçerli sürüme başarıyla taşımanızın ardından bu uyarı devre dışı bırakılmalıdır. Derleyici, davranış değişikliği olmayan kod için bu uyarıyı oluşturarak hatalı pozitifler verebilir.
Bu uyarı varsayılan olarak kapalıdır. Daha fazla bilgi için bkz . Varsayılan Olarak Kapalı Olan Derleyici Uyarıları.
Aşağıdaki örnek C4342 oluşturur:
// C4342.cpp
// compile with: /EHsc /W1
#include <fstream>
#pragma warning(default: 4342)
using namespace std;
struct X : public ofstream {
X();
};
X::X() {
open( "ofs_bug_ev.txt." );
if ( is_open() ) {
*this << "Text" << "<-should be text" << endl; // C4342
*this << ' ' << "<-should be space symbol" << endl; // C4342
}
}
int main() {
X b;
b << "Text" << "<-should be text" << endl;
b << ' ' << "<-should be space symbol" << endl;
}