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