Aracılığıyla paylaş


Derleyici uyarı (Düzey 3) C4996

'function': onaysız bildirilen

Derleyici ile işaretlenmiş bir işlev karşılaştı itiraz.İşlevi bir sonraki sürümde desteklenmiyor olabilir.Bu uyarı ile kapatabilirsiniz Uyarı pragma (Aşağıdaki örnek).

C4996 işlevi kullanılan satır ve işlev olarak bildirildiğinden, satır için oluşturulur.

<hash_map> üyeleri kullanıyorsanız, C4996 göreceksiniz. ve <hash_set> üstbilgi dosyaları std ad.Bkz: ad stdext daha fazla bilgi için.

Bazı crt ve standart C++ Kitaplığı işlevlerini şunun için yeni ve daha güvenli işlevler kaldırılmıştır.Kaldırılan işlevleri hakkında daha fazla bilgi için bkz: crt güvenlik özellikleri ve Güvenli kitaplıklar: Standart C++ Kitaplığı.

Güvenlik nedenleriyle kullanım dışı mfc ya da atl işlevlerini kullanırsanız, C4996 da ortaya çıkabilir.Bu uyarıları için bkz: _AFX_SECURE_NO_WARNINGS ve _ATL_SECURE_NO_WARNINGS.

C4996, sıralama kitaplığı kullandığınızda da ortaya çıkabilir.Bu durumda C4996 bir hata, bir uyarı olur.Kullandığınızda bu hata oluşacaktır marshal_as gerektiren iki veri türleri arasında dönüştürmek için bir marshal_context sınıfı.Sıralama Kitaplığı dönüştürme desteklemiyorsa, bu hatayı alırsınız.Sıralama kitaplığı hakkında daha fazla bilgi için bkz: C++'da sıralaması genel bakış.

Örnek

Aşağıdaki örnek C4996 oluşturur.

// C4996.cpp
// compile with: /W3
// C4996 warning expected
#include <stdio.h>

// #pragma warning(disable : 4996)
void func1(void) {
   printf_s("\nIn func1");
}

__declspec(deprecated) void func1(int) {
   printf_s("\nIn func2");
}

int main() {
   func1();
   func1(1);
}

1 _secure_scl ile derlerken checked Yineleyici kullanmıyorsanız, C4996 da ortaya çıkabilir.Daha fazla bilgi için bkz. İşaretli Yineleyiciler.

Aşağıdaki örnek C4996 oluşturur.

// C4996_b.cpp
// compile with: /EHsc /W3 /c
#define _SECURE_SCL 1
#include <algorithm>
using namespace std;
using namespace stdext;
int main() {
   int a [] = {1, 2, 3};
   int b [] = {10, 11, 12};
   copy(a, a + 3, b + 1);   // C4996
// try the following line instead
//   copy(a, a + 3, b);
   copy(a, a + 3, checked_array_iterator<int *>(b, 3));   // OK
}

Bir const char bir System::String dönüştürmek için bir içerik sıralama kitaplığı gerektirdiği için aşağıdaki örnek C4996 oluşturur. *.

// C4996_Marshal.cpp
// compile with: /clr 
// C4996 expected
#include <stdlib.h>
#include <string.h>
#include <msclr\marshal.h>

using namespace System;
using namespace msclr::interop;

int main() {
   String^ message = gcnew String("Test String to Marshal");
   const char* result;
   result = marshal_as<const char*>( message );
   return 0;
}