Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
'identifier': tanımlayıcı bulunamadı
Açıklamalar
Derleyici, bağımsız değişkene bağımlı arama kullanarak bile bir tanımlayıcıya başvuruyu çözümleyemedi.
Bu hatayı düzeltmek için tanımlayıcı kullanımını büyük/küçük harf ve yazım denetimi tanımlayıcı bildirimiyle karşılaştırın. Kapsam çözümleme işleçlerininve ad alanıusingyönergelerinin doğru kullanıldığını doğrulayın. Tanımlayıcı bir üst bilgi dosyasında bildirilirse, tanımlayıcıya başvurulmadan önce üst bilginin eklendiğini doğrulayın. Tanımlayıcının dışarıdan görünür olması amaçlanıyorsa, bunu kullanan herhangi bir kaynak dosyada bildirildiğinden emin olun. Ayrıca tanımlayıcı bildiriminin veya tanımının koşullu derleme yönergeleri tarafından dışlanmadığını denetleyin.
Visual Studio 2015'teki C Çalışma Zamanı Kitaplığı'ndan eski işlevleri kaldırma değişiklikleri C3861'e neden olabilir. Bu hatayı çözmek için, bu işlevlere yönelik başvuruları kaldırın veya varsa bunları güvenli alternatifleriyle değiştirin. Daha fazla bilgi için bkz . Eski işlevler.
Derleyicinin eski sürümlerinden proje geçişi sonrasında C3861 hatası görüntülenirse desteklenen Windows sürümleriyle ilgili sorunlarla karşılaşabilirsiniz. Visual C++ artık Windows 95, Windows 98, Windows ME, Windows NT veya Windows 2000'i hedeflemeyi desteklemiyor. veya WINVER makrolarınız _WIN32_WINNT bu Windows sürümlerinden birine atanmışsa, makroları değiştirmeniz gerekir. Daha fazla bilgi için, bkz . WINVER Değiştirme ve _WIN32_WINNT.
Örnekler
Tanımlanmamış tanımlayıcı
Tanımlayıcı tanımlanmadığından aşağıdaki örnek C3861 oluşturur.
// C3861.cpp
void f2(){}
int main() {
f(); // C3861
f2(); // OK
}
Tanımlayıcı kapsamda değil
Aşağıdaki örnek C3861 hatasını oluşturur çünkü tanımlayıcı, onu kullanan diğer kaynak dosyalarda bildirilmediği sürece yalnızca tanımlandığı dosya kapsamında görünür.
Kaynak dosya C3861_a1.cpp:
// C3861_a1.cpp
// Compile with: cl /EHsc /W4 C3861_a1.cpp C3861_a2.cpp
#include <iostream>
// Uncomment the following line to fix:
// int f(); // declaration makes external function visible
int main() {
std::cout << f() << std::endl; // C3861
}
Kaynak dosya C3861_a2.cpp:
// C3861_a2.cpp
int f() { // declared and defined here
return 42;
}
Ad alanı niteliği gerekli
C++ Standart Kitaplığı'ndaki özel durum sınıfları ad alanını std gerektirir.
// C3861_b.cpp
// compile with: /EHsc
#include <iostream>
int main() {
try {
throw exception("Exception"); // C3861
// try the following line instead
// throw std::exception("Exception");
}
catch (...) {
std::cout << "caught an exception" << std::endl;
}
}
Çağrılan eski işlev
Eski işlevler CRT kitaplığından kaldırıldı.
// C3861_c.cpp
#include <stdio.h>
int main() {
char line[21]; // room for 20 chars + '\0'
gets( line ); // C3861
// Use gets_s instead.
printf( "The line entered was: %s\n", line );
}
ADL ve arkadaş işlevleri
Derleyici, FriendFunc için bağımsız değişkenlere bağlı aramayı kullanamadığından, aşağıdaki örnek C3861 hatasına neden olur:
namespace N {
class C {
friend void FriendFunc() {}
friend void AnotherFriendFunc(C* c) {}
};
}
int main() {
using namespace N;
FriendFunc(); // C3861 error
C* pC = new C();
AnotherFriendFunc(pC); // found via argument-dependent lookup
}
Hatayı düzeltmek için arkadaşı sınıf kapsamında bildirin ve ad alanı kapsamında tanımlayın:
class MyClass {
int m_private;
friend void func();
};
void func() {
MyClass s;
s.m_private = 0;
}
int main() {
func();
}