Domyślnie wyłączone ostrzeżenia kompilatora
Kompilator obsługuje ostrzeżenia, które są domyślnie wyłączone, ponieważ większość deweloperów nie znajduje ich przydatnych. W niektórych przypadkach ostrzegają o wyborze stylistycznym lub o typowych idiomach w starszym kodzie. Inne ostrzeżenia dotyczą używania rozszerzenia firmy Microsoft do języka. Niektóre ostrzeżenia wskazują obszar, w którym programiści często tworzą nieprawidłowe założenia, co może prowadzić do nieoczekiwanego lub niezdefiniowanego zachowania. Jeśli wszystkie te ostrzeżenia są włączone, niektóre z nich mogą pojawiać się wiele razy w nagłówkach biblioteki. Biblioteki środowiska uruchomieniowego języka C i standardowe biblioteki języka C++ mają na celu emitowanie żadnych ostrzeżeń tylko na poziomie /W4
ostrzeżenia .
Włączanie ostrzeżeń, które są domyślnie wyłączone
Ostrzeżenia, które są zwykle wyłączone domyślnie, można użyć jednej z następujących opcji:
#pragma warning(default :
warning_number)
Określone ostrzeżenie (warning_number) jest włączone na poziomie domyślnym. Dokumentacja dla ostrzeżenia zawiera domyślny poziom ostrzeżeń.
#pragma warning(
:
warning_level warning_number)
Określone ostrzeżenie (warning_number) jest włączone na określonym poziomie (warning_level).
-
/Wall
włącza wszystkie ostrzeżenia, które są domyślnie wyłączone. Jeśli używasz tej opcji, możesz wyłączyć poszczególne ostrzeżenia przy użyciu/wd
opcji . -
Ta opcja włącza ostrzeżenie nnnn na poziomie L.
Ostrzeżenia wyłączone domyślnie
Visual Studio 2015 i nowsze wersje
Następujące ostrzeżenia są domyślnie wyłączone w programie Visual Studio 2015 i nowszych wersjach:
Ostrzeżenie | Komunikat |
---|---|
C4061 (poziom 4) | moduł wyliczający "identyfikator" w przełączniku wyliczenia "wyliczenie" nie jest jawnie obsługiwany przez etykietę przypadku. |
C4062 (poziom 4) | Moduł wyliczający "identyfikator" w przełączniku wyliczenia "wyliczenie" nie jest obsługiwany. |
C4165 (poziom 1) | Wyrażenie "HRESULT" jest konwertowane na wartość "bool"; czy na pewno jest to, czego chcesz? |
C4191 (poziom 3) | "operator": niebezpieczna konwersja z "type_of_expression" na "type_required" |
C4242 (poziom 4) | "identifier": konwersja z "type1" na "type2", możliwa utrata danych |
C4254 (poziom 4) | "operator": konwersja z "type1" na "type2", możliwa utrata danych |
C4255 (poziom 4) | "function": brak prototypu funkcji: konwertowanie elementu "()" na "(void)" |
C4263 (poziom 4) | "function": funkcja składowa nie zastępuje żadnej funkcji wirtualnej składowej klasy bazowej |
C4264 (poziom 1) | "virtual_function": brak przesłonięcia dostępnego dla funkcji wirtualnej składowej z bazowej "klasy"; funkcja jest ukryta |
C4265 (poziom 3) | "klasa": klasa ma funkcje wirtualne, ale destruktor nie jest wirtualny |
C4266 (poziom 4) | "function": brak przesłonięcia dostępnego dla wirtualnej funkcji składowej z bazowego "type"; funkcja jest ukryta |
C4287 (poziom 3) | "operator": niezgodność niepodpisanej/ujemnej stałej |
C4289 (poziom 4) | niestandardowe rozszerzenie używane: "var" : zmienna sterowania pętli zadeklarowana w pętli for-loop jest używana poza zakresem pętli for-loop |
C4296 (poziom 4) | "operator": wyrażenie jest zawsze fałszywe |
C4339 (poziom 4) | "type" : użycie niezdefiniowanego typu wykrytego w metadanych CLR — użycie tego typu może prowadzić do wyjątku środowiska uruchomieniowego |
C4342 (poziom 1) | zmiana zachowania: "funkcja" wywoływana, ale operator elementu członkowskiego został wywołany w poprzednich wersjach |
C4350 (poziom 1) | zmiana zachowania: "member1" o nazwie zamiast "member2" |
C4355 | 'this': używany na liście inicjatora bazowego elementu członkowskiego |
C4365 (poziom 4) | "action": konwersja z "type_1" na "type_2", niezgodność podpisanych/niepodpisanych |
C4370 (poziom 3) | układ klasy zmienił się z poprzedniej wersji kompilatora ze względu na lepsze pakowanie |
C4371 (poziom 3) | "nazwa-klasy": układ klasy mógł ulec zmianie z poprzedniej wersji kompilatora z powodu lepszego pakowania składowej "składowej" |
C4388 (poziom 4) | niezgodność ze znakiem/bez znaku |
C4412 (poziom 2) | "function": podpis funkcji zawiera typ "type"; Obiekty języka C++ są niebezpieczne do przekazywania między czystym kodem a mieszanym lub natywnym |
C4426 (poziom 1) | flagi optymalizacji zmienione po włączeniu nagłówka mogą być spowodowane #pragma optimize() 14.1 |
C4435 (poziom 4) | "class1" : układ obiektu w /vd2 zmieni się z powodu wirtualnej bazy "class2". |
C4437 (poziom 4) | dynamic_cast z wirtualnej bazy "class1" do "class2" może zakończyć się niepowodzeniem w niektórych kontekstach. |
C4444 (poziom 3) | W tym kontekście nie zaimplementowano __unaligned najwyższego poziomu. |
C4464 (poziom 4) | względna ścieżka dołączania zawiera '.' |
C4471 (poziom 4) | a forward deklaracji wyliczenia niezakresowego musi mieć typ bazowy (int zakładane) Perm |
C4472 (poziom 1) | "identifier" to natywne wyliczenie: dodawanie specyfikatora dostępu (prywatny/publiczny) w celu zadeklarowania zarządzanego wyliczenia |
C4514 (poziom 4) | "function": funkcja nieużywaną w tekście została usunięta |
C4536 (poziom 4) | "nazwa typu": typ-nazwa przekracza limit metadanych znaków "limit" znaków |
C4545 (poziom 1) | wyrażenie przed przecinkiem daje w wyniku funkcję, dla której brakuje listy argumentów |
C4546 (poziom 1) | wywołanie funkcji przed przecinkiem, brak listy argumentów |
C4547 (poziom 1) | "operator": operator przed przecinkiem nie ma wpływu; oczekiwany operator z efektem ubocznym |
C4548 (poziom 1) | wyrażenie przed przecinkiem nie przynosi efektu; oczekiwane wyrażenie, który przynosi efekt |
C4549 (poziom 1) | "operator1": operator przed przecinek nie ma wpływu; czy zamierzasz "operator2"? |
C4555 (poziom 1) | wyrażenie nie przynosi efektu; oczekiwane wyrażenie, który przynosi efekt |
C4557 (poziom 3) | "__assume" zawiera efekt "efekt" |
C4571 (poziom 4) | informational: catch(...) semantyka zmieniła się od visual C++ 7.1; wyjątki ustrukturyzowane (SEH) nie są już przechwytywane |
C4574 (poziom 4) | "identyfikator" jest zdefiniowany jako "0": czy oznacza się użycie identyfikatora "#if"? |
C4577 (poziom 1) | "noexcept " używany bez określonego trybu obsługi wyjątków; zakończenie wyjątku nie jest gwarantowane. Precyzować /EHsc |
C4582 (poziom 4) | "type": konstruktor nie jest niejawnie wywoływany |
C4583 (poziom 4) | "type": destruktor nie jest niejawnie wywoływany |
C4587 (poziom 1) | "anonymous_structure": zmiana zachowania: konstruktor nie jest już niejawnie wywoływany |
C4588 (poziom 1) | "anonymous_structure": zmiana zachowania: destruktor nie jest już niejawnie wywoływany |
C4596 (poziom 4) | "identifier": nielegalna kwalifikowana nazwa w deklaracji składowej 14.3 Perm |
C4598 (poziom 1 i poziom 3) | "#include "header": nagłówek-numer nagłówka w prekompilowanej nagłówku nie pasuje do bieżącej kompilacji na tej pozycji 14.3 |
C4599 (poziom 3) | "ścieżka opcji": numer argumentu wiersza polecenia arg_number nie pasuje do wstępnie skompilowanego nagłówka 14.3 |
C4605 (poziom 1) | Makro "/D" określone w bieżącym wierszu polecenia, ale nie zostało określone podczas kompilacji prekompilowanego nagłówka |
C4608 (poziom 3) | "union_member" został już zainicjowany przez innego członka unii na liście inicjatorów, "union_member" Perm |
C4619 (poziom 3) | #pragma ostrzeżenie: nie ma numeru ostrzeżenia "number" |
C4623 (poziom 4) | „klasa pochodna”: nie można wygenerować konstruktora domyślnego, ponieważ domyślny konstruktor klasy bazowej jest niedostępny |
C4625 (poziom 4) | „klasa pochodna”: nie można wygenerować konstruktora kopiowania, ponieważ konstruktor kopiowania klasy bazowej jest niedostępny |
C4626 (poziom 4) | „klasa pochodna”: nie można wygenerować operatora przypisania, ponieważ operator przypisania klasy bazowej jest niedostępny |
C4628 (poziom 1) | dwuznaki nieobsługiwane z -Ze. Sekwencja znaków "digraph" nie jest interpretowana jako token alternatywny dla znaku |
C4640 (poziom 3) | "instance": konstruowanie lokalnego obiektu statycznego nie jest bezpieczne wątkowo |
C4643 (poziom 4) | Przekazywanie deklarowania "identyfikatora" w std przestrzeni nazw nie jest dozwolone przez standard C++. 15.8 |
C4647 (poziom 3) | zmiana zachowania: __is_pod(typ) ma inną wartość w poprzednich wersjach |
C4654 (poziom 4) | Kod umieszczony przed dołączeniem wstępnie skompilowanego wiersza nagłówka zostanie zignorowany. Dodaj kod do prekompilowanego nagłówka. 14.1 |
C4668 (poziom 4) | Symbol nie jest zdefiniowany jako makro preprocesora, zastępując element "0" dla "dyrektyw" |
C4682 (poziom 4) | "symbol" : nie określono atrybutu parametru kierunkowego, domyślnie na [in] |
C4686 (poziom 3) | "Typ zdefiniowany przez użytkownika": możliwa zmiana zachowania, zmiana konwencji wywołania zwrotnego UDT |
C4692 (poziom 1) | "function": podpis elementu członkowskiego innego niż prywatny zawiera prywatny typ natywny zestawu "native_type" |
C4710 (poziom 4) | "function": funkcja nie jest podkreśnięta |
C4738 (poziom 3) | przechowywanie 32-bitowego wyniku zmiennopozycyjnego w pamięci, możliwa utrata wydajności |
C4746 | nietrwały dostęp do wyrażenia podlega ustawieniom /volatile:<iso|ms>; rozważ użycie funkcji wewnętrznych __iso_volatile_load/store |
C4749 (poziom 4) | obsługiwane warunkowo: przesunięcie zastosowane do typu "type" innego niż standardowy |
C4767 (poziom 4) | nazwa sekcji "symbol" jest dłuższa niż 8 znaków i zostanie obcięta przez konsolidator |
C4774 (poziom 4) | "string" : ciąg formatu oczekiwany w liczbie argumentów nie jest literałem ciągu |
C4777 (poziom 4) | "function": ciąg formatu "string" wymaga argumentu typu "type1", ale liczba argumentów wariadycznych ma typ "type2" |
C4786 (poziom 3) | "symbol" : nazwa obiektu została obcięta na znaki "number" w informacjach debugowania |
C4800 (poziom 4) | Niejawna konwersja z typu na wartość logiczną. Możliwa utrata informacji 16.0 |
C4820 (poziom 4) | Dopełnienie bajtów "bajtów" dodane po konstrukcji "member_name" |
C4822 (poziom 1) | "składowa": funkcja składowa klasy lokalnej nie ma treści |
C4826 (poziom 2) | Konwersja z "type1" na "type2" jest rozszerzona o znak. Może to spowodować nieoczekiwane zachowanie środowiska uruchomieniowego. |
C4837 (poziom 4) | wykryto trójznak: znak?? zastąpiony znakiem "znak" |
C4841 (poziom 4) | nietypowe używane rozszerzenie: projektator składowych złożonych używany w offsetof |
C4842 (poziom 4) | wynik "offsetof" zastosowany do typu używającego wielu dziedziczenia nie gwarantuje spójności między wydaniami kompilatora |
C4866 (poziom 4) | Kompilator "file(line-number)" może nie wymuszać kolejności oceny od lewej do prawej dla wywołania operatora |
C4868 (poziom 4) | Kompilator "file(line_number)" może nie wymuszać kolejności oceny od lewej do prawej na liście inicjowania nawiasów klamrowych |
C4905 (poziom 1) | literał ciągu dwubajtowego rzutowany na 'LPSTR' |
C4906 (poziom 1) | literał ciągu rzutowany na 'LPWSTR' |
C4917 (poziom 1) | Deklarator: identyfikator GUID może być skojarzony tylko z klasą, interfejsem lub przestrzenią nazw |
C4928 (poziom 1) | nieprawidłowe inicjowanie kopiowania; niejawnie zastosowano więcej niż jedną konwersję zdefiniowaną przez użytkownika |
C4931 (poziom 4) | zakładamy, że biblioteka typów została zbudowana dla wskaźników liczba-bit |
C4946 (poziom 1) | reinterpret_cast używane między powiązanymi klasami: "class1" i "class2" |
C4962 | "function": optymalizacje sterowane profilem są wyłączone, ponieważ optymalizacje spowodowały, że dane profilu stały się niespójne |
C4986 (poziom 4) | "symbol": specyfikacja wyjątku nie jest zgodna z poprzednią deklaracją |
C4987 (poziom 4) | użyto rozszerzenia niestandardowego: 'throw (...)' |
C4988 (poziom 4) | "symbol": zmienna zadeklarowana poza zakresem klasy/funkcji |
C5022 | "type": określono wiele konstruktorów przenoszenia |
C5023 | "type": określono wiele operatorów przypisania przenoszenia |
C5024 (poziom 4) | "type": konstruktor przenoszenia został niejawnie zdefiniowany jako usunięty |
C5025 (poziom 4) | "type": operator przypisania przenoszenia został niejawnie zdefiniowany jako usunięty |
C5026 (poziom 1 i poziom 4) | "type": konstruktor przenoszenia został niejawnie zdefiniowany jako usunięty |
C5027 (poziom 1 i poziom 4) | "type": operator przypisania przenoszenia został niejawnie zdefiniowany jako usunięty |
C5029 (poziom 4) | używane niestandardowe rozszerzenie: atrybuty wyrównania w języku C++ mają zastosowanie tylko do zmiennych, elementów członkowskich danych i typów tagów |
C5031 (poziom 4) | #pragma ostrzeżenie (pop): prawdopodobnie niezgodność, wyskakujące ostrzeżenie stanu wypychane w innym pliku 14.1 |
C5032 (poziom 4) | wykryto ostrzeżenie #pragma (wypychanie) bez odpowiedniego ostrzeżenia #pragma (pop) 14.1 |
Visual Studio 2017 i nowsze wersje
Następujące ostrzeżenia są domyślnie wyłączone w programie Visual Studio 2017 i nowszych wersjach:
Ostrzeżenie | Komunikat |
---|---|
C5034 | użycie wewnętrznego "wewnętrznego" powoduje, że nazwa funkcji funkcji jest kompilowana jako kod gościa 15.3 |
C5035 | użycie funkcji "feature" powoduje, że nazwa funkcji jest kompilowana jako kod gościa 15.3 |
C5036 (poziom 1) | konwersja wskaźnika funkcji varargs podczas kompilowania z /hybrid:x86arm64 "type1" do "type2" 15.3 |
C5038 (poziom 4) | element członkowski danych "member1" zostanie zainicjowany po składowej danych "member2" 15.3 |
C5039 (poziom 4) | "function": wskaźnik lub odwołanie do potencjalnie zgłaszającej funkcję przekazaną do funkcji extern C w obszarze -EHc . Niezdefiniowane zachowanie może wystąpić, jeśli ta funkcja zgłasza wyjątek. 15.5 |
C5041 (poziom 4) | "member-name": definicja poza wierszem dla elementu członkowskiego danych statycznych constexpr nie jest potrzebna i jest przestarzała w języku C++17. 15.2 |
C5042 (poziom 3) | "function": deklaracje funkcji w zakresie bloku nie mogą być określone jako "wbudowane" w standardowym języku C++; usuń specyfikator "wbudowany" 15.5 |
C5045 | Kompilator wstawi ograniczenie ryzyka spectre dla obciążenia pamięci, jeśli przełącznik /Qspectre określony 15.7 |
Visual Studio 2019 i nowsze wersje
Następujące ostrzeżenia są domyślnie wyłączone w programie Visual Studio 2019 i nowszych wersjach:
Ostrzeżenie | Komunikat |
---|---|
C5052 (poziom 3) | Słowo kluczowe "nazwa słowa kluczowego" zostało wprowadzone w wersji języka C++ i wymaga użycia opcji wiersza polecenia "option" 16.1 |
C5204 (poziom 3) | Klasa z funkcjami wirtualnymi ma niewirtualny destruktor trywialny. 16.5 |
C5214 (poziom 4) | stosowanie słowa kluczowego do operandu z nietrwałym typem kwalifikowanym jest przestarzałe w języku C++20 16.7 |
C5215 (poziom 4) | "function-parameter" parametr funkcji z nietrwałym typem kwalifikowanym jest przestarzały w języku C++20 16.7 |
C5216 (poziom 4) | "return-type" nietrwały kwalifikowany typ zwracany jest przestarzały w języku C++20 16.7 |
C5217 (poziom 4) | ustrukturyzowana deklaracja powiązania zawierająca zmienną jest przestarzała w języku C++20 16.7 |
C5219 (poziom 2) | niejawna konwersja z "type-1" na "type-2", możliwa utrata danych 16.7 |
C5220 (poziom 4) | "element członkowski": niestatyczny element członkowski danych z nietrwałym typem kwalifikowanym nie oznacza już, że Konstruktory kopii/przenoszenia generowane przez kompilator i operatory przypisania kopiowania/przenoszenia nie są proste 16.7 |
C5233 (poziom 4) | jawne przechwytywanie lambda "identifier" nie jest używane 16.10 |
C5240 (poziom 4) | "attribute-name": atrybut jest ignorowany w tej pozycji składni 16.10 |
C5243 (poziom 1) | "type-name": użycie niekompletnej klasy "class-name" może spowodować potencjalne naruszenie reguły definicji z powodu ograniczenia ABI 16.10 |
C5245 (poziom 4) | "function": funkcja niereferencja z wewnętrznym połączeniem została usunięta |
C5246 (poziom 1) | "member": inicjowanie podobiektu powinno być opakowane w nawiasy klamrowe 16.10 |
C5247 (poziom 1) | Sekcja "section-name" jest zarezerwowana dla inicjowania dynamicznego języka C++. Ręczne tworzenie sekcji zakłóca inicjowanie dynamiczne języka C++ i może prowadzić do niezdefiniowanego zachowania 16.11 |
C5248 (poziom 1) | Sekcja "section-name" jest zarezerwowana dla inicjowania dynamicznego języka C++. Zmienna ręcznie umieszczona w sekcji może zostać zoptymalizowana, a jego kolejność względem kompilatora wygenerowanych dynamicznych inicjatorów nie jest określona 16.11 |
Visual Studio 2022 i nowsze wersje
Następujące ostrzeżenia są domyślnie wyłączone w programie Visual Studio 2022 i nowszych wersjach:
Ostrzeżenie | Komunikat |
---|---|
C5249 (poziom 1) | Pole bitowe typu "enumeration_name" ma nazwane moduły wyliczające o wartościach, których nie można przedstawić w danej szerokości pola bitowego "bitfield_width". 17.0 |
C5250 (poziom 3) | "function_name": funkcja wewnętrzna nie jest zadeklarowana. 17.0 |
C5251 (poziom 4) | nazwa segmentu została zmieniona po włączeniu nagłówka 17.1 |
C5254 (poziom 4) | Funkcja języka "terse static assert" wymaga flagi kompilatora "/std:c++17" 17.1 |
C5256 (poziom 1) | "wyliczenie": deklaracja niezdefiniowania wyliczenia ze stałym typem bazowym jest dozwolona tylko jako deklaracja autonomiczna 17.2 |
C5258 (poziom 4) | jawne przechwytywanie symbolu nie jest wymagane dla tego użycia 17.2 |
C5259 (poziom 4) | "wyspecjalizowany typ": jawna specjalizacja wymaga "template <> " 17.3 |
C5262 (poziom 1, błąd) | występuje tutaj niejawny upadek; Czy brakuje instrukcji break ? Użyj [[fallthrough]] , gdy break instrukcja jest celowo pomijana między przypadkami 17.4 |
C5263 (poziom 4) | wywoływanie elementu "std::move " w obiekcie tymczasowym uniemożliwia kopiowanie elizji 17.4 |
C5264 (poziom 4) | "nazwa-zmiennej": zmienna "const" nie jest używana w wersji 17.4 |
C5266 (poziom 4) | Kwalifikator "const" w typie powrotu nie ma wpływu 17.6 |
C5267 (poziom 4) | definicja niejawnego konstruktora/operatora przypisania dla "typu" jest przestarzała, ponieważ ma operatora przypisania dostarczonego przez użytkownika/konstruktora kopiowania 17.7 |
14.1 To ostrzeżenie jest dostępne począwszy od programu Visual Studio 2015 Update 1.
14.3 To ostrzeżenie jest dostępne, począwszy od programu Visual Studio 2015 Update 3.
15.2 To ostrzeżenie jest dostępne od wersji 15.2 programu Visual Studio 2017.
15.3 To ostrzeżenie jest dostępne od wersji 15.3 programu Visual Studio 2017.
15.5 To ostrzeżenie jest dostępne od wersji 15.5 programu Visual Studio 2017.
15.7 To ostrzeżenie jest dostępne od wersji 15.7 programu Visual Studio 2017.
15.8 To ostrzeżenie jest dostępne od wersji 15.8 programu Visual Studio 2017.
16.0 To ostrzeżenie jest dostępne począwszy od programu Visual Studio 2019 RTM.
16.5 To ostrzeżenie jest dostępne od wersji 16.5 programu Visual Studio 2019.
16.7 To ostrzeżenie jest dostępne od wersji 16.7 programu Visual Studio 2019.
16.10 To ostrzeżenie jest dostępne od wersji 16.10 programu Visual Studio 2019.
16.11 To ostrzeżenie jest dostępne od wersji 16.11 programu Visual Studio 2019.
17.0 To ostrzeżenie jest dostępne od wersji 17.0 programu Visual Studio 2022.
17.1 To ostrzeżenie jest dostępne od wersji 17.1 programu Visual Studio 2022.
17.2 To ostrzeżenie jest dostępne od wersji 17.2 programu Visual Studio 2022.
17.3 To ostrzeżenie jest dostępne od wersji 17.3 programu Visual Studio 2022.
17.4 To ostrzeżenie jest dostępne od wersji 17.4 programu Visual Studio 2022.
17.5 To ostrzeżenie jest dostępne od wersji 17.5 programu Visual Studio 2022.
17.6 To ostrzeżenie jest dostępne od wersji 17.6 programu Visual Studio 2022.
17.7 To ostrzeżenie jest dostępne od wersji 17.7 programu Visual Studio 2022.
Perm To ostrzeżenie jest wyłączone, chyba że /permissive-
opcja kompilatora jest ustawiona.
Ostrzeżenia są domyślnie wyłączone we wcześniejszych wersjach
To ostrzeżenie było domyślnie wyłączone w programie Visual Studio 2015 w wersji 15.3 i włączone w programie Visual Studio 2015 w wersji 15.5:
Ostrzeżenie | Komunikat |
---|---|
C4768 | __declspec atrybuty przed specyfikacją połączenia są ignorowane |
Te ostrzeżenia były domyślnie wyłączone w wersjach kompilatora przed programem Visual Studio 2015:
Ostrzeżenie | Komunikat |
---|---|
C4302 (poziom 2) | "konwersja": obcięcie z "type1" do "type2" |
C4311 (poziom 1) | "zmienna": obcięcie wskaźnika z "type" do "type" |
C4312 (poziom 1) | "operation": konwersja z "type1" na "type2" o większym rozmiarze |
C4319 (poziom 1) | "operator": zero rozszerzające "type1" na "type2" o większym rozmiarze |
To ostrzeżenie było domyślnie wyłączone w wersjach kompilatora przed programem Visual Studio 2012:
Ostrzeżenie | Komunikat |
---|---|
C4431 (poziom 4) | brak specyfikatora typu — zakładany int. Uwaga: C nie obsługuje już domyślnego int |