Udostępnij przez


Ostrzeżenia kompilatora microsoft C/C++ od C4800 do C4999

W artykułach w tej sekcji opisano komunikaty ostrzegawcze kompilatora Microsoft C/C++ C4800-C4999.

Ważne

Kompilatory i narzędzia kompilacji programu Visual Studio mogą zgłaszać wiele rodzajów błędów i ostrzeżeń. Po znalezieniu błędu lub ostrzeżenia narzędzia kompilacji mogą podjąć założenia dotyczące intencji kodu i próby kontynuowania, dzięki czemu więcej problemów można zgłaszać w tym samym czasie. Jeśli narzędzia przyjmą błędne założenie, późniejsze błędy lub ostrzeżenia mogą nie mieć zastosowania do projektu. W przypadku naprawiania problemów w projekcie zawsze należy zacząć od pierwszego zgłoszonego błędu lub ostrzeżenia i często ponownie skompilować. Jedna poprawka może spowodować, że wiele kolejnych błędów zniknie.

Aby uzyskać pomoc dotyczącą konkretnego komunikatu diagnostycznego w programie Visual Studio, wybierz go w oknie Dane wyjściowe i naciśnij F1 . Program Visual Studio otwiera stronę dokumentacji dla tego błędu, jeśli istnieje. Możesz również użyć narzędzia wyszukiwania w górnej części strony, aby znaleźć artykuły dotyczące określonych błędów lub ostrzeżeń. Możesz też przejrzeć listę błędów i ostrzeżeń według narzędzia i wpisać spis treści na tej stronie.

Uwaga

Nie każdy błąd lub ostrzeżenie programu Visual Studio nie jest udokumentowane. W wielu przypadkach komunikat diagnostyczny zawiera wszystkie dostępne informacje. Jeśli wylądowałeś na tej stronie, gdy użyto F1 i uważasz, że komunikat o błędzie lub ostrzeżeniu wymaga dodatkowego wyjaśnienia, daj nam znać. Możesz użyć przycisków opinii na tej stronie, aby zgłosić problem z dokumentacją w usłudze GitHub. Jeśli uważasz, że błąd lub ostrzeżenie jest nieprawidłowe lub znaleziono inny problem z zestawem narzędzi, zgłoś problem z produktem w witrynie Społeczność deweloperów. Możesz również wysłać opinię i wprowadzić usterki w środowisku IDE. W programie Visual Studio przejdź do paska menu, a następnie wybierz pozycję Pomoc Wyślij zgłoszenie o > problemie lub prześlij sugestię, korzystając z opcji Wyślij opinię w pomocy > > Wyślij sugestię>. Niektóre tematy błędów kompilatora zostały utworzone, które nie są emitowane przez kompilator, a teraz przekieruj do tej strony.

Dodatkową pomoc dotyczącą błędów i ostrzeżeń można znaleźć na forach pytań i odpowiedzi na platformie Microsoft Learn. Możesz też wyszukać numer błędu lub ostrzeżenia w witrynie Społeczności deweloperów programu Visual Studio C++. Możesz również wyszukać rozwiązanie Stack Overflow , aby znaleźć rozwiązania.

Aby uzyskać linki do dodatkowych zasobów pomocy i społeczności, zobacz Visual C++ Help and Community (Pomoc i społeczność języka Visual C++).

Komunikaty ostrzegawcze

Ostrzeżenie Komunikat
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4800 Niejawna konwersja z typu na bool. Możliwa utrata informacji
Ostrzeżenie kompilatora C4801 Funkcja zwracana przez odwołanie nie jest weryfikowalna: komunikat
Ostrzeżenie kompilatora (poziom 1) C4803 "method": metoda raise ma inną klasę magazynu niż zdarzenie "event"
Ostrzeżenie kompilatora (poziom 1) C4804 "operation": niebezpieczne użycie typu "bool" w operacji
Ostrzeżenie kompilatora (poziom 1) C4805 "operation": niebezpieczna mieszanka typu "type1" i typ "type2" w operacji
Ostrzeżenie kompilatora (poziom 1) C4806 "operation": niebezpieczna operacja: żadna wartość typu "type1" podwyższona do typu "type2" może równa danej stałej
Ostrzeżenie kompilatora (poziom 1) C4807 "operation": niebezpieczna kombinacja typu "type1" i podpisane pole bitowe typu "type2"
Ostrzeżenie kompilatora (poziom 1) C4808 caseWartość "value" nie jest prawidłową wartością switch warunku typu "bool"
Ostrzeżenie kompilatora (poziom 1) C4809 switch instrukcja ma nadmiarową etykietę "default"; podano wszystkie możliwe etykiety "case"
Ostrzeżenie kompilatora (poziom 1) C4810 wartość == pragma pack(show) n
Ostrzeżenie kompilatora (poziom 1) C4811 pragma conform(forScope, show) == wartość wartości
Ostrzeżenie kompilatora (poziom 1) C4812 przestarzały styl deklaracji: zamiast tego użyj polecenia "new_syntax"
Ostrzeżenie kompilatora (poziom 1) C4813 "function": funkcja przyjazna klasy lokalnej musi być wcześniej zadeklarowana
Ostrzeżenie kompilatora (poziom 4) C4815 "nazwa obiektu": tablica o zerowym rozmiarze w obiekcie stosu nie będzie zawierać żadnych elementów (chyba że obiekt jest agregowanym zagregowanym zainicjowanym)
Ostrzeżenie kompilatora (poziom 4) C4816 "param": parametr ma tablicę o zerowym rozmiarze, która zostanie obcięta (chyba że obiekt zostanie przekazany przez odwołanie)
Ostrzeżenie kompilatora (poziom 1) C4817 "member": niedozwolone użycie elementu "". w celu uzyskania dostępu do tego elementu członkowskiego; kompilator zastąpił element "->"
Ostrzeżenie kompilatora (poziom 1) C4819 Plik zawiera znak, którego nie można przedstawić na bieżącej stronie kodowej (numer). Zapisz plik w formacie Unicode, aby zapobiec utracie danych
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4820 Dopełnienie bajtów "bajtów" dodane po konstrukcji "member_name"
Ostrzeżenie kompilatora (poziom 1) C4821 Nie można określić typu kodowania Unicode. Zapisz plik z podpisem (BOM)
Ostrzeżenie kompilatora (poziom 1, wyłączony) C4822 "funkcja składowa": funkcja składowa klasy lokalnej nie ma treści
Ostrzeżenie kompilatora (poziom 3) C4823 "function": używa przypinania wskaźników, ale semantyka nie jest włączona. Rozważ użycie /EHa
Ostrzeżenie kompilatora (poziom 2, wyłączony) C4826 Konwersja z "type1" na "type2" jest rozszerzona o znak. Może to spowodować nieoczekiwane zachowanie środowiska uruchomieniowego.
Ostrzeżenie kompilatora (poziom 3) C4827 Publiczna metoda "ToString" z 0 parametrami powinna być oznaczona jako virtual i override
Ostrzeżenie kompilatora (poziom 1) C4828 Plik zawiera znak rozpoczynający się od przesunięcia 0xHexOffset, który jest nielegalny w bieżącym zestawie znaków źródłowych (strona kodowa strony kodowej).
Ostrzeżenie kompilatora (poziom 1) C4829 Być może niepoprawne parametry funkcji main. Rozważ "int main(Platform::Array<Platform::String^>^ argv)"
Ostrzeżenie kompilatora (poziom 1) C4834 odrzucanie zwracanej wartości funkcji z atrybutem "nodiscard"
Ostrzeżenie kompilatora (poziom 1) C4835 "zmienna": inicjator wyeksportowanych danych nie zostanie uruchomiony do momentu pierwszego wykonania kodu zarządzanego w zestawie hosta
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4837 wykryto trójznak: znak?? zastąpiony znakiem "znak"
Ostrzeżenie kompilatora (poziom 1) C4838 konwersja z "type_1" na "type_2" wymaga konwersji zawężającej
Ostrzeżenie kompilatora (poziom 3) C4839 nietypowe użycie klasy "type" jako argumentu do funkcji wariadycznej
Ostrzeżenie kompilatora (poziom 4) C4840 zamiast przenośnego użycia klasy "type" jako argumentu do funkcji wariadycznej
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4841 nietypowe używane rozszerzenie: projektowanie składowych złożonych używanych w offsetof
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4842 wynik "offsetof" zastosowany do typu przy użyciu wielu dziedziczenia nie gwarantuje spójności między wydaniami kompilatora
Ostrzeżenie kompilatora (poziom 4) C4843 "type1": Procedura obsługi wyjątków odwołania do tablicy lub typu funkcji jest niemożliwa do osiągnięcia, zamiast tego użyj polecenia "type2".
Ostrzeżenie kompilatora (poziom 1) C4844 'export module module_name;jest teraz preferowaną składnią deklarowania interfejsu modułu
Ostrzeżenie kompilatora (poziom 4) C4845 Element "__declspec(no_init_all)" jest ignorowany, jeśli parametr "/d1initall[0|1|2|3]" nie został określony w wierszu polecenia
Ostrzeżenie kompilatora (poziom 4) C4846 'value' is not a valid argument for '/d1initall': command-line flaga ignorowana
Ostrzeżenie kompilatora (poziom 4) C4847 Element "__declspec(no_init_all)" można zastosować tylko do funkcji, typu klasy lub zmiennej lokalnej: ignorowane
Ostrzeżenie kompilatora (poziom 1) C4848 obsługa atrybutu standardowego "no_unique_address" w języku C++17 i starszych jest rozszerzeniem dostawcy
Ostrzeżenie kompilatora (poziom 1) C4849 Klauzula "klauzula" protokołu OpenMP ignorowana w dyrektywie "dyrektywa"
Ostrzeżenie kompilatora (poziom 1, błąd) C4854 Powiązanie wyłuszczonego wskaźnika null do odwołania ma niezdefiniowane zachowanie
Ostrzeżenie kompilatora (poziom 1, wyłączony) C4855 niejawne przechwytywanie elementu "this" za pośrednictwem elementu "[=]" jest przestarzałe w wersji
Ostrzeżenie kompilatora (poziom 4) C4856 Wartość "value" nie jest prawidłowym argumentem dla "/d1initAll:FillPattern" (wartość musi należeć do zakresu od 0 do 255). Flaga wiersza polecenia zignorowana
Ostrzeżenie kompilatora (poziom 1) C4857 Tryb C++/CLI nie obsługuje nowszych wersji języka C++ niż C++17; ustawianie języka na /std:c++17
Ostrzeżenie kompilatora (poziom 1) C4858 odrzucanie zwracanej wartości: nazwa funkcji
Ostrzeżenie kompilatora (poziom 4) C4859 Argument "value" nie jest prawidłowym argumentem "/presetWarn": musi być wartością > dziesiętną 0. Flaga wiersza polecenia zignorowana
Ostrzeżenie kompilatora (poziom 4) C4860 "nazwa obiektu": zero kompilatora zainicjowane "number" bajtów magazynu
Ostrzeżenie kompilatora (poziom 4) C4861 Zero kompilatora zainicjowało "liczbę" bajtów magazynu
Ostrzeżenie kompilatora (poziom 4) C4866 Kompilator może nie wymuszać kolejności oceny od lewej do prawej w celu wywołania operator_name
Ostrzeżenie kompilatora (poziom 1, błąd) C4867 "function": wywołanie funkcji brakującej listy argumentów; użyj polecenia "call", aby utworzyć wskaźnik do elementu członkowskiego
Ostrzeżenie kompilatora (poziom 4) C4868 Kompilator "file(line_number)" może nie wymuszać kolejności oceny od lewej do prawej na liście inicjowania nawiasów klamrowych
Ostrzeżenie kompilatora (poziom 3) C4869 Element "nodiscard" może być stosowany tylko do klas, wyliczenia i funkcji
Ostrzeżenie kompilatora (poziom 2) C4872 Podział zmiennoprzecinkowy o zero wykryty podczas kompilowania grafu wywołań dla concurrency::parallel_for_each elementu w lokalizacji : "location"
Ostrzeżenie kompilatora (poziom 1) C4880 rzutowanie z "const type_1" do "type_2": odrzucając constness od wskaźnika lub odwołania może spowodować niezdefiniowane zachowanie w funkcji amp z ograniczeniami
Ostrzeżenie kompilatora (poziom 4) C4881 konstruktor i/lub destruktor nie zostanie wywołany dla tile_static zmiennej "nazwa-zmiennej"
Ostrzeżenie kompilatora (poziom 1) C4882 przekazywanie funktorów z operatorami wywołań innych niż const do concurrency::parallel_for_each jest przestarzałe
Ostrzeżenie kompilatora C4883 "nazwa funkcji": rozmiar funkcji pomija optymalizacje
Ostrzeżenie kompilatora C4900 Niezgodność między wersją "tool1" i wersją "tool2" w wersji "version2"
Ostrzeżenie kompilatora (poziom 1, wyłączony) C4905 literał ciągu szerokiego rzutowania na "LPSTR"
Ostrzeżenie kompilatora (poziom 1, wyłączony) C4906 literał ciągu rzutowania na "LPWSTR"
Ostrzeżenie kompilatora (błąd) C4907 nie można określić wielu konwencji wywoływania; ostatnie dane będą używane
Ostrzeżenie kompilatora (poziom 1) C4910 "<identyfikator>: "__declspec(dllexport)" i "extern" są niezgodne w jawnym utworzeniu wystąpienia
Ostrzeżenie kompilatora (poziom 1) C4912 "attribute": atrybut ma niezdefiniowane zachowanie w zagnieżdżonym udT
Ostrzeżenie kompilatora (poziom 4) C4913 Operator binarny zdefiniowany przez użytkownika "," nie istnieje, ale nie można przekonwertować wszystkich operandów, domyślnego wbudowanego operatora binarnego ","
Ostrzeżenie kompilatora (poziom 1) C4916 aby mieć element dispid, "description": musi zostać wprowadzony przez interfejs
Ostrzeżenie kompilatora (poziom 1, wyłączony) C4917 Deklarator: identyfikator GUID może być skojarzony tylko z klasą, interfejsem lub przestrzenią nazw
Ostrzeżenie kompilatora (poziom 4) C4918 "znak": nieprawidłowy znak na liście optymalizacji pragma
Ostrzeżenie kompilatora (poziom 1) C4920 Wyliczeniowa nazwa-składowa member_1 value_1= już widoczna w wyliczeniach jako member_2 value_2=
Ostrzeżenie kompilatora (poziom 3) C4921 "description": nie należy pomnożyć wartości atrybutu "attribute"
Ostrzeżenie kompilatora (poziom 1) C4925 "method": nie można wywołać metody dispinterface ze skryptu
Ostrzeżenie kompilatora (poziom 1) C4926 "identifier": symbol jest już zdefiniowany: atrybuty ignorowane
Ostrzeżenie kompilatora (poziom 1) C4927 nielegalnej konwersji; zastosowano niejawnie więcej niż jedną konwersję zdefiniowaną przez użytkownika
Ostrzeżenie kompilatora (poziom 1, wyłączony) C4928 nieprawidłowe inicjowanie kopiowania; niejawnie zastosowano więcej niż jedną konwersję zdefiniowaną przez użytkownika
Ostrzeżenie kompilatora (poziom 1) C4929 "file": typelibrary zawiera związek; ignorując kwalifikator "embedded_idl"
Ostrzeżenie kompilatora (poziom 1) C4930 "prototyp": nie wywoływana funkcja prototypowa (czy definicja zmiennej była przeznaczona?)
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4931 Zakładamy, że biblioteka typów została utworzona dla wskaźników liczbowych
Ostrzeżenie kompilatora (poziom 4) C4932 __identifier(identyfikator) i __identifier(identyfikator) są nie do odróżnienia
Ostrzeżenie kompilatora (poziom 1) C4934 "__delegate(multicast)" jest przestarzały, zamiast tego użyj polecenia "__delegate"
Ostrzeżenie kompilatora (poziom 1) C4935 specyfikator dostępu do zestawu zmodyfikowany z "dostępu"
Ostrzeżenie kompilatora (poziom 1, błąd) C4936 ta __declspec jest obsługiwana tylko w przypadku kompilacji za pomocą /clr polecenia lub /clr:pure
Ostrzeżenie kompilatora (poziom 4) C4937 Argumenty "text1" i "text2" są nie do odróżnienia jako argumenty "dyrektywy"
Ostrzeżenie kompilatora (poziom 4) C4938 "var": zmienna redukcji zmiennoprzecinkowa może powodować niespójne wyniki w ramach /fp:strict lub #pragma fenv_access
Ostrzeżenie kompilatora C4939 #pragma vtordisp jest przestarzały i zostanie usunięty w przyszłej wersji programu Visual C++
Ostrzeżenie kompilatora (poziom 1) C4944 "symbol": nie można zaimportować symbolu z "assembly1": jako symbol już istnieje w bieżącym zakresie
Ostrzeżenie kompilatora (poziom 1) C4945 "symbol": nie można zaimportować symbolu z "assembly1": jako symbol został już zaimportowany z innego zestawu "assembly2"
Ostrzeżenie kompilatora (poziom 1, wyłączony) C4946 reinterpret_cast używane między powiązanymi klasami: "class1" i "class2"
Ostrzeżenie kompilatora (poziom 1) C4947 "type_or_member": oznaczony jako przestarzały
Ostrzeżenie kompilatora (poziom 2) C4948 zwracany typ "accessor" nie jest zgodny z ostatnim typem parametru odpowiedniego settera
Ostrzeżenie kompilatora (poziom 1 i poziom 4) C4949 pragmas "managed" i "unmanaged" są istotne tylko wtedy, gdy kompilowane za pomocą "/clr[:option]"
Ostrzeżenie kompilatora (poziom 1, błąd) C4950 "type_or_member": oznaczony jako przestarzały
Ostrzeżenie kompilatora (poziom 1) C4951 Funkcja została edytowana od czasu zbierania danych profilu, dane profilu funkcji nie są używane
Ostrzeżenie kompilatora (poziom 1) C4952 "function": brak danych profilu znalezionych w bazie danych programu "pgd-file"
Ostrzeżenie kompilatora (poziom 1) C4953 Funkcja "funkcja" została edytowana od czasu zbierania danych profilu, nieużywane dane profilu
Ostrzeżenie kompilatora C4954 "function": nie profilowany (zawiera __int64 wyrażenie przełącznika)
Ostrzeżenie kompilatora C4955 "import2": importowanie zignorowane; już zaimportowane z "import1"
Ostrzeżenie kompilatora (poziom 1, błąd) C4956 "type": ten typ nie jest weryfikowalny
Ostrzeżenie kompilatora (poziom 1, błąd) C4957 "cast": jawne rzutowanie z "cast_from" na "cast_to" nie jest weryfikowalne
Ostrzeżenie kompilatora (poziom 1, błąd) C4958 "operation": arytmetyka wskaźnika nie jest weryfikowalna
Ostrzeżenie kompilatora (poziom 1, błąd) C4959 program nie może zdefiniować niezarządzanego typu "type", /clr:safe ponieważ uzyskanie dostępu do jego składowych daje nieweryfikowalny kod
Ostrzeżenie kompilatora (poziom 4) C4960 "funkcja" jest zbyt duża, aby profilować
Ostrzeżenie kompilatora (poziom 1) C4961 Żadne dane profilu nie zostały scalone z "pgd-file", wyłączone optymalizacje sterowane profilem
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4962 "function": optymalizacje sterowane profilem są wyłączone, ponieważ optymalizacje spowodowały, że dane profilu stały się niespójne
Ostrzeżenie kompilatora (poziom 1) C4963 "description": nie znaleziono danych profilu; w instrumentowanej kompilacji użyto różnych opcji kompilatora
Ostrzeżenie kompilatora (poziom 1) C4964 Nie określono opcji optymalizacji; Informacje o profilu nie zostaną zebrane
Ostrzeżenie kompilatora (poziom 1) C4965 niejawne pole liczby całkowitej 0; używanie rzutowania nullptr lub jawnego
Ostrzeżenie kompilatora (poziom 1) C4966 Element "function" ma __code_seg adnotację z nieobsługiwaną nazwą segmentu, adnotacją ignorowaną
Ostrzeżenie kompilatora C4970 konstruktor delegata: obiekt docelowy ignorowany, ponieważ "typ" jest statyczny
Ostrzeżenie kompilatora (poziom 1) C4971 Kolejność argumentów: <obiekt> docelowy, <funkcja docelowa dla konstruktora delegata jest przestarzała, użyj <funkcji>> docelowej, <target object="">
Ostrzeżenie kompilatora (poziom 1, błąd) C4972 Bezpośrednie modyfikowanie lub traktowanie wyniku operacji rozpaku jako lvalue jest nieweryfikowalne
Ostrzeżenie kompilatora (poziom 1) C4973 "symbol": oznaczony jako przestarzały
Ostrzeżenie kompilatora (poziom 1) C4974 "symbol": oznaczony jako przestarzały
Ostrzeżenie kompilatora (poziom 1) C4975 Modopt "[modyfikator]" został zignorowany dla parametru formalnego "parametr"
Ostrzeżenie kompilatora (poziom 1) C4976 nieprawidłowa wartość "value" dla "/W"; przy założeniu" "1"
Ostrzeżenie kompilatora (poziom 3) C4981 Warbird: funkcja "function" oznaczona jako __forceinline nie wznawiana, ponieważ zawiera semantyka wyjątków
Ostrzeżenie kompilatora (poziom 3) C4983 Polecenie "/analyze:sarif:hashname" zostało zignorowane, ponieważ argument "/analyze:log" jest pojedynczym plikiem, a nie katalogiem
Ostrzeżenie kompilatora C4984 'if constexpr' to rozszerzenie języka C++17
Ostrzeżenie kompilatora (poziom 4) C4985 "symbol_name": atrybuty nie występują w poprzedniej deklaracji.
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4986 "deklaracja": specyfikacja wyjątku nie jest zgodna z poprzednią deklaracją
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4987 używane rozszerzenie niestandardowe: "throw (...)"
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4988 "zmienna": zmienna zadeklarowana poza zakresem klasy/funkcji
Ostrzeżenie kompilatora (poziom 4) C4989 "type": typ ma definicje powodujące konflikt.
Ostrzeżenie kompilatora (poziom 3) C4990 Warbird: wiadomość
Ostrzeżenie kompilatora (poziom 3) C4991 Warbird: funkcja "function" oznaczona jako __forceinline niewzwierszona, ponieważ poziom ochrony śródwierszowego jest większy niż element nadrzędny
Ostrzeżenie kompilatora (poziom 3) C4992 Warbird: funkcja "function-name" oznaczona jako __forceinline niewzwierszona, ponieważ zawiera wbudowany zestaw, którego nie można chronić
Ostrzeżenie kompilatora (poziom 3) C4995 "function": nazwa została oznaczona jako #pragma przestarzała
Ostrzeżenie kompilatora (poziom 3) C4996 "przestarzała deklaracja": komunikat o wycofaniu (lub "został uznany za przestarzały")
Ostrzeżenie kompilatora (poziom 1) C4997 "class": coclass nie implementuje interfejsu COM ani pseudo-interfejsu
Ostrzeżenie kompilatora (poziom 1) C4998 OCZEKIWANIE NIE POWIODŁO SIĘ: oczekiwania(wartość)

Zobacz też

Błędy i ostrzeżenia kompilatora C/C++ i narzędzi kompilacji
Ostrzeżenia kompilatora C4000 — C5999