Udostępnij za pośrednictwem


Ostrzeżenia kompilatora Microsoft C/C++ od C4000 do C4199

W artykułach w tej sekcji opisano komunikaty ostrzegawcze kompilatora Microsoft C/C++ od C4000 do C4199.

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, już nie emitowany) C4001 Użyto niestandardowego rozszerzenia "komentarz z jednym wierszem"
Ostrzeżenie kompilatora (poziom 1, błąd) C4002 zbyt wiele argumentów wywołania makra przypominającego funkcję "identyfikator"
Ostrzeżenie kompilatora (poziom 1, błąd) C4003 za mało argumentów wywołania makra przypominającego funkcję "identyfikator"
Ostrzeżenie kompilatora (poziom 1) C4005 "identifier": ponowne zdefiniowanie makr
Ostrzeżenie kompilatora (poziom 1) C4006 #undef oczekiwany identyfikator
Ostrzeżenie kompilatora (poziom 3) C4007 "function": musi być atrybutem
Ostrzeżenie kompilatora (poziom 3) C4008 "function": atrybut ignorowany
Ostrzeżenie kompilatora (poziom 1) C4010 komentarz jednowierszowy zawiera znak kontynuacji wiersza
Ostrzeżenie kompilatora (poziom 3) C4013 "function" niezdefiniowany; przy założeniu, że extern zwraca int
Ostrzeżenie kompilatora (poziom 1) C4015 "identifier": typ pola bitowego musi być integralną częścią
Ostrzeżenie kompilatora (poziom 3) C4018 Wyrażenie: niezgodność ze znakiem/bez znaku
Ostrzeżenie kompilatora (poziom 4) C4019 empty, instrukcja w zakresie globalnym
Ostrzeżenie kompilatora (poziom 1) C4020 "function": zbyt wiele rzeczywistych parametrów
Ostrzeżenie kompilatora (poziom 1) C4022 "function": niezgodność wskaźnika dla rzeczywistego parametru "parameter_number"
Ostrzeżenie kompilatora (poziom 1) C4023 "function": wskaźnik oparty przekazany do funkcji nietypowej: parametr "parameter_number"
Ostrzeżenie kompilatora (poziom 1) C4024 "function": różne typy parametrów formalnych i rzeczywistych "parameter_number"
Ostrzeżenie kompilatora (poziom 1) C4025 "function": wskaźnik oparty przekazany do funkcji z argumentami zmiennych: parametr "parameter_number"
Ostrzeżenie kompilatora (poziom 1) C4026 funkcja zadeklarowana z listą parametrów formalnych
Ostrzeżenie kompilatora (poziom 1) C4027 funkcja zadeklarowana bez listy parametrów formalnych
Ostrzeżenie kompilatora (poziom 1) C4028 parametr formalny parameter_number inny niż deklaracja
Ostrzeżenie kompilatora (poziom 1) C4029 zadeklarowana lista parametrów formalnych różni się od definicji
Ostrzeżenie kompilatora (poziom 1) C4030 pierwsza lista parametrów formalnych dłuższa niż druga lista
Ostrzeżenie kompilatora (poziom 1) C4031 druga lista parametrów formalnych dłuższa niż pierwsza lista
Ostrzeżenie kompilatora (poziom 4) C4032 parametr formalny parameter_number ma inny typ podczas podwyższenia poziomu
Ostrzeżenie kompilatora (poziom 1) C4033 Funkcja musi zwracać wartość
Ostrzeżenie kompilatora (poziom 1) C4034 funkcja sizeof zwraca wartość 0
Ostrzeżenie kompilatora (poziom 3) C4035 "function": brak zwracanej wartości
Ostrzeżenie kompilatora (poziom 1) C4036 nienazwany "typ" jako rzeczywisty parametr
Ostrzeżenie kompilatora (poziom 1) C4038 "modyfikator": niedozwolony modyfikator klas
Ostrzeżenie kompilatora (poziom 1) C4041 Limit kompilatora: kończenie danych wyjściowych przeglądarki
Ostrzeżenie kompilatora (poziom 1) C4042 "identifier": ma złą klasę magazynu
Ostrzeżenie kompilatora (poziom 1) C4045 "array": granice tablicy przepełnienie
Ostrzeżenie kompilatora (poziom 1) C4047 "operator": "identifier1" różni się w poziomie pośrednim od "identifier2"
Ostrzeżenie kompilatora (poziom 1) C4048 różne indeksy tablicowe: "identifier1" i "identifier2"
Ostrzeżenie kompilatora (poziom 1) C4049 Limit kompilatora: przerywanie emisji numeru wiersza
Ostrzeżenie kompilatora (poziom 1) C4051 konwersja typów; możliwa utrata danych
Ostrzeżenie kompilatora (poziom 1 i poziom 4) C4052 deklaracje funkcji różne; jeden zawiera argumenty zmiennych
Ostrzeżenie kompilatora (poziom 4) C4053 jeden operand void dla "?:"
Ostrzeżenie kompilatora (poziom 1) C4055 "konwersja" : ze wskaźnika danych "type1" do wskaźnika funkcji "type2"
Ostrzeżenie kompilatora (poziom 2) C4056 przepełnienie w arytmetyce stałej zmiennoprzecinkowych
Ostrzeżenie kompilatora (poziom 4) C4057 "operator": "identifier1" różni się pośrednim od nieco różnych typów bazowych od "identifier2"
Ostrzeżenie kompilatora (poziom 3, wyłączony) C4060 instrukcja switch nie zawiera etykiet "case" ani "default"
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4061 moduł wyliczający "identyfikator" w przełączniku enum "wyliczenia" nie jest jawnie obsługiwany przez etykietę case
Ostrzeżenie kompilatora (poziom 4, wyłączony) C4062 moduł wyliczający "identyfikator" w przełączniku enum "wyliczenia" nie jest obsługiwany
Ostrzeżenie kompilatora (poziom 4) C4063 przypadek "identyfikator" nie jest prawidłową wartością dla przełącznika enum "wyliczenie"
Ostrzeżenie kompilatora (poziom 4) C4064 przełącznik niekompletnego enum "wyliczenia"
Ostrzeżenie kompilatora (poziom 3, wyłączony) C4065 instrukcja switch zawieradefault "", ale nie etykiet "case"
Ostrzeżenie kompilatora (poziom 3) C4066 znaki wykraczające poza pierwszy w stałej o szerokim znaku ignorowane
Ostrzeżenie kompilatora (poziom 1) C4067 nieoczekiwane tokeny po dyrektywie preprocesora — oczekiwano nowego wiersza
Ostrzeżenie kompilatora (poziom 1) C4068 nieznany pragma "identyfikator"
Ostrzeżenie kompilatora C4069 długa podwójna precyzja jest taka sama jak podwójna
Ostrzeżenie kompilatora (poziom 3) C4073 inicjatory umieszczone w obszarze inicjowania biblioteki
Ostrzeżenie kompilatora (poziom 1) C4074 inicjatory umieszczone w obszarze inicjowania zarezerwowanego kompilatora
Ostrzeżenie kompilatora (poziom 1) C4075 inicjatory umieszczone w nierozpoznanym obszarze inicjowania
Ostrzeżenie kompilatora (poziom 1) C4076 "type_modifier": nie można używać z typem "typename"
Ostrzeżenie kompilatora (poziom 1) C4077 nieznana opcja check_stack
Ostrzeżenie kompilatora (poziom 1) C4079 nieoczekiwany token "token"
Ostrzeżenie kompilatora (poziom 1) C4080 oczekiwany identyfikator nazwy segmentu; znaleziono symbol
Ostrzeżenie kompilatora (poziom 1) C4081 oczekiwano "token1"; znaleziono "token2"
Ostrzeżenie kompilatora (poziom 1) C4083 oczekiwany "token"; znaleziony identyfikator "identyfikator"
Ostrzeżenie kompilatora (poziom 1) C4085 oczekiwany parametr pragma ma być "on" lub "off"
Ostrzeżenie kompilatora (poziom 1) C4086 oczekiwany parametr pragma ma mieć wartość "1", "2", "4", "8" lub "16"
Ostrzeżenie kompilatora (poziom 1) C4087 "function": zadeklarowany z listą parametrów "void"
Ostrzeżenie kompilatora (poziom 1) C4088 "function": niezgodność wskaźnika w rzeczywistym parametrze "parameter_number", parametr formalny "parameter_number"
Ostrzeżenie kompilatora (poziom 1) C4089 "function": różne typy w rzeczywistym parametrze "parameter_number", parametr formalny "parameter_number"
Ostrzeżenie kompilatora (poziom 1) C4090 "operation": różne kwalifikatory "modyfikatora"
Ostrzeżenie kompilatora (poziom 1 i poziom 2) C4091 "słowo kluczowe": ignorowane po lewej stronie "typu", gdy żadna zmienna nie jest zadeklarowana
Ostrzeżenie kompilatora (poziom 4) C4092 funkcja sizeof zwraca wartość "niepodpisane długie"
Ostrzeżenie kompilatora (poziom 2) C4094 nieoznakowany "token" nie zadeklarował żadnych symboli
Ostrzeżenie kompilatora (poziom 1) C4096 "identifier": interfejs nie jest interfejsem COM; nie będzie emitowany do IDL
Ostrzeżenie kompilatora (poziom 1) C4097 oczekiwany parametr pragma ma być "restore" lub "off"
Ostrzeżenie kompilatora (poziom 1) C4098 "function": funkcja "void" zwracająca wartość
Ostrzeżenie kompilatora (poziom 2) C4099 "identifier": nazwa typu widoczna po raz pierwszy przy użyciu polecenia "object_type1" jest teraz widoczna przy użyciu polecenia "object_type2"
Ostrzeżenie kompilatora (poziom 4) C4100 "identifier": niereferenced parametr formalny
Ostrzeżenie kompilatora (poziom 3 i poziom 4) C4101 'identifier': unreferenced local variable (identyfikator): nieużywana zmienna lokalna
Ostrzeżenie kompilatora (poziom 3) C4102 "label": nieużywana etykieta
Ostrzeżenie kompilatora (poziom 1) C4103 wyrównanie zmienione po włączeniu nagłówka może być spowodowane brakami #pragma pack(pop)
Ostrzeżenie kompilatora (poziom 1) C4109 nieoczekiwany identyfikator "identyfikator"
Ostrzeżenie kompilatora (poziom 1 i poziom 4) C4112 #line wymaga liczby całkowitej z zakresu od 1 do "line_count"
Ostrzeżenie kompilatora (poziom 1) C4113 "identifier1" różni się na listach parametrów od "identifier2"
Ostrzeżenie kompilatora (poziom 1) C4114 kwalifikator tego samego typu używany więcej niż raz
Ostrzeżenie kompilatora (poziom 1 i poziom 4) C4115 "type": nazwana definicja typu w nawiasach
Ostrzeżenie kompilatora (poziom 1) C4116 nienazwana definicja typu w nawiasach
Ostrzeżenie kompilatora (poziom 1) C4117 nazwa makra "name" jest zarezerwowana, "polecenie" ignorowane
Ostrzeżenie kompilatora (poziom 1) C4119 określone różne bazy "base1" i "base2"
Ostrzeżenie kompilatora (poziom 1) C4120 niezgodność oparta/niena podstawie
Ostrzeżenie kompilatora (poziom 4) C4121 "symbol": wyrównanie elementu członkowskiego było wrażliwe na pakowanie
Ostrzeżenie kompilatora (poziom 1) C4122 "function": alloc_text dotyczy tylko funkcji z połączeniem języka C
Ostrzeżenie kompilatora (poziom 1) C4123 określone różne wyrażenia podstawowe
Ostrzeżenie kompilatora (poziom 1) C4124 __fastcall z sprawdzaniem stosu jest nieefektywne
Ostrzeżenie kompilatora (poziom 4) C4125 Cyfra dziesiętna kończy sekwencję ucieczki ósemkowej
Ostrzeżenie kompilatora (poziom 4) C4127 wyrażenie warunkowe jest stałe
Ostrzeżenie kompilatora (poziom 1) C4129 "znak": nierozpoznana sekwencja ucieczki znaków
Ostrzeżenie kompilatora (poziom 4) C4130 "operator": operacja logiczna na adres stałej ciągu
Ostrzeżenie kompilatora (poziom 4) C4131 "function": używa deklaratora starego stylu
Ostrzeżenie kompilatora (poziom 4) C4132 "object": const obiekt powinien zostać zainicjowany
Ostrzeżenie kompilatora (poziom 1 i poziom 3) C4133 "expression": niezgodne typy — od "type1" do "type2"
Ostrzeżenie kompilatora C4137 'function': brak wartości zwracanej z funkcji zmiennoprzecinkowej
Ostrzeżenie kompilatora (poziom 1) C4138 "*/" znaleziony poza komentarzem
Ostrzeżenie kompilatora (poziom 1, błąd) C4141 "modyfikator": używany więcej niż raz
Ostrzeżenie kompilatora (poziom 1) C4142 "identyfikator": łagodne ponowne zdefiniowanie typu
Ostrzeżenie kompilatora (poziom 1) C4143 pragma "same_seg" nie jest obsługiwane; użyj __based alokacji
Ostrzeżenie kompilatora (poziom 1) C4144 Wyrażenie '': wyrażenie relacyjne jako wyrażenie przełącznika
Ostrzeżenie kompilatora (poziom 1) C4145 Wyrażenie1: wyrażenie relacyjne jako wyrażenie przełącznika; możliwe pomylenie z wyrażeniem "expression2"
Ostrzeżenie kompilatora (poziom 2) C4146 jednoargumentowy operator minus zastosowany do typu bez znaku, wynik nadal niepodpisany
Ostrzeżenie kompilatora (poziom 2) C4150 usunięcie wskaźnika do niekompletnego typu "type"; brak destruktora o nazwie
Ostrzeżenie kompilatora (poziom 4) C4152 niestandardowe rozszerzenie, konwersja wskaźnika funkcji/danych w wyrażeniu
Ostrzeżenie kompilatora (poziom 1) C4153 funkcja/konwersja wskaźnika danych w wyrażeniu
Ostrzeżenie kompilatora (poziom 1) C4154 usunięcie wyrażenia tablicy; konwersja do wskaźnika dostarczonego
Ostrzeżenie kompilatora (poziom 1) C4155 usunięcie wyrażenia tablicy bez użycia formularza tablicy "delete"
Ostrzeżenie kompilatora (poziom 2) C4156 usunięcie wyrażenia tablicy bez użycia formularza tablicy "delete"; postać tablicy podstawiona
Ostrzeżenie kompilatora (poziom 1) C4157 pragma został zignorowany przez kompilator języka C
Ostrzeżenie kompilatora (poziom 1) C4158 przy założeniu #pragma pointers_to_members(full_generality, "inheritance_type")
Ostrzeżenie kompilatora (poziom 3) C4159 #pragma "pragma"(pop,...): został wcześniej wypchnięty identyfikator "identyfikator"
Ostrzeżenie kompilatora (poziom 1) C4160 #pragma "pragma"(pop,...): nie znaleziono wcześniej wypchniętego identyfikatora "identyfikator"
Ostrzeżenie kompilatora (poziom 3) C4161 #pragma "pragma"(pop...): więcej wyskakujących okienek niż wypychania
Ostrzeżenie kompilatora (poziom 1) C4162 "identifier": nie znaleziono funkcji z połączeniem języka C
Ostrzeżenie kompilatora (poziom 1) C4163 "identifier": niedostępny jako funkcja wewnętrzna
Ostrzeżenie kompilatora (poziom 1) C4164 "function": funkcja wewnętrzna nie jest zadeklarowana
Ostrzeżenie kompilatora (poziom 3, wyłączony) C4165 Element "HRESULT" jest konwertowany na 'bool'; czy na pewno jest to, czego chcesz?
Ostrzeżenie kompilatora (poziom 1) C4166 niedozwolona konwencja wywoływania konstruktora/destruktora
Ostrzeżenie kompilatora (poziom 1) C4167 "function": dostępne tylko jako funkcja wewnętrzna
Ostrzeżenie kompilatora (poziom 1) C4168 Limit kompilatora: brak typów debugera, usuwanie bazy danych programu "baza danych" i ponowne kompilowanie
Ostrzeżenie kompilatora (poziom 1) C4172 zwracanie adresu zmiennej lokalnej lub tymczasowej optional_context
Ostrzeżenie kompilatora (poziom 1) C4174 "name": niedostępne jako #pragma component
Ostrzeżenie kompilatora (poziom 1) C4175 #pragma component(browser, on): informacje o przeglądarce muszą być początkowo określone w wierszu polecenia
Ostrzeżenie kompilatora (poziom 1) C4176 "Podkomponent": nieznany podskład danych dla #pragma component przeglądarki
Ostrzeżenie kompilatora (poziom 1) C4177 #pragma "pragma" należy używać tylko w zakresie globalnym lub zakresie przestrzeni nazw
Ostrzeżenie kompilatora (poziom 1) C4178 case stała "stała" zbyt duża dla typu wyrażenia przełącznika
Ostrzeżenie kompilatora (poziom 4, już nie emitowany) C4179 "//*": analizowane jako "/" i "/\*": pomylenie ze standardowymi komentarzami "//"
Ostrzeżenie kompilatora (poziom 1) C4180 kwalifikator zastosowany do typu funkcji nie ma znaczenia; Ignorowane
Ostrzeżenie kompilatora C4181 kwalifikator zastosowany do typu odwołania; Ignorowane
Ostrzeżenie kompilatora (poziom 1) C4182 #include poziom zagnieżdżania jest nest_count głęboki; możliwa nieskończona rekursja
Ostrzeżenie kompilatora (poziom 1) C4183 "identifier": brak typu zwracanego; przyjęto założenie, że jest funkcją składową zwracającą element "int"
Ostrzeżenie kompilatora (poziom 1) C4185 ignorowanie nieznanego #import atrybutu "attribute"
Ostrzeżenie kompilatora (poziom 1) C4186 #import atrybutu "attribute" wymaga argumentów "argument_count"; ignorowane
Ostrzeżenie kompilatora (poziom 1) C4187 #import atrybuty "attribute1" i "attribute2" są niezgodne; oba atrybuty są ignorowane
Ostrzeżenie kompilatora (poziom 1) C4188 wyrażenie stałe nie jest całkowite
Ostrzeżenie kompilatora (poziom 3 i poziom 4) C4189 "identifier": zmienna lokalna jest inicjowana, ale nie odwołuje się do niej
Ostrzeżenie kompilatora (poziom 1) C4190 Element "identifier1" ma określony link C, ale zwraca wartość UDT "identifier2", która jest niezgodna z językiem C
Ostrzeżenie kompilatora (poziom 3, wyłączony) C4191 "operation": niebezpieczna konwersja z "type_of_expression" na "type_required"
Wykonywanie wywołania funkcji przy użyciu wynikowego wskaźnika może spowodować niepowodzenie programu
Ostrzeżenie kompilatora (poziom 3) C4192 automatyczne wykluczanie identyfikatora podczas importowania biblioteki typów "library"
Ostrzeżenie kompilatora (poziom 3) C4193 #pragma warning(pop): brak pasujących elementów "#pragma warning(push)"
Ostrzeżenie kompilatora (poziom 1) C4194 #pragma start_map_region nie można zagnieżdżać; Ignorowane
Ostrzeżenie kompilatora (poziom 1) C4195 #pragma stop_map_region używane bez dopasowania #pragma start_map_region; ignorowane
Ostrzeżenie kompilatora (poziom 1) C4196 oczekiwano tokenu "token1" lub "token2"; znaleziono "token3"
Ostrzeżenie kompilatora (poziom 3) C4197 "typ": rzutowanie najwyższego poziomu volatile jest ignorowane
Ostrzeżenie kompilatora (poziom 1, poziom 2, poziom 3 i poziom 4) C4199 message

Zobacz też

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