Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Artykuły w tej sekcji dokumentacji wyjaśniają podzbiór komunikatów o błędach generowanych przez kompilator.
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 o błędach
| Błąd | Komunikat |
|---|---|
| Błąd kompilatora C3000 | "symbol": użycie szablonu klasy wymaga listy argumentów szablonu. Odliczenie argumentów nie jest dozwolone w niestacjonanym elemencie członkowskim danych. |
| Błąd kompilatora C3001 | "message": oczekiwana nazwa dyrektywy OpenMP |
| Błąd kompilatora C3002 | "name1 name2": wiele nazw dyrektyw OpenMP |
| Błąd kompilatora C3003 | "dyrektywa": nazwa dyrektywy OpenMP niedozwolona po klauzulach dyrektywy |
| Błąd kompilatora C3004 | "klauzula": klauzula nieprawidłowa w dyrektywie OpenMP "dyrektywa" |
| Błąd kompilatora C3005 | "message": nieoczekiwany token napotkany w dyrektywie OpenMP "dyrektywa" |
| Błąd kompilatora C3006 | "klauzula": w dyrektywie OpenMP "dyrektywa" brakuje oczekiwanego argumentu |
| Błąd kompilatora C3007 | "klauzula": klauzula dyrektywy OpenMP "dyrektywa" nie bierze argumentu |
| Błąd kompilatora C3008 | "argument": brak zamykającego argumentu ")" w dyrektywie OpenMP "dyrektywa" |
| Błąd kompilatora C3009 | "label": przechodzenie do bloku strukturalnego OpenMP jest niedozwolone |
| Błąd kompilatora C3010 | "label": wyskocz z bloku strukturalnego OpenMP, który nie jest dozwolony |
| Błąd kompilatora C3011 | Wbudowany zestaw nie jest dozwolony bezpośrednio w regionie równoległym |
| Błąd kompilatora C3012 | "function": funkcja wewnętrzna nie jest dozwolona bezpośrednio w regionie równoległym |
| Błąd kompilatora C3013 | "klauzula": klauzula może pojawiać się tylko raz w dyrektywie OpenMP "dyrektywa" |
| Błąd kompilatora C3014 | oczekiwana pętla for po dyrektywie OpenMP "dyrektywa" |
| Błąd kompilatora C3015 | inicjowanie w instrukcji "for" openMP ma niewłaściwy formularz |
| Błąd kompilatora C3016 | "identifier": zmienna indeksu w instrukcji OpenMP "for" musi mieć podpisany typ całkowity |
| Błąd kompilatora C3017 | test zakończenia w instrukcji "for" openMP ma niewłaściwy formularz |
| Błąd kompilatora C3018 | "identifier": OpenMP "for" test lub przyrost musi używać zmiennej indeksu "zmienna" |
| Błąd kompilatora C3019 | instrukcja "for" increment increment increment inMP "for" ma niewłaściwy formularz |
| Błąd kompilatora C3020 | "zmienna": zmienna indeksu pętli OpenMP "for" nie może być modyfikowana w treści pętli |
| Błąd kompilatora C3021 | "argument": argument jest pusty w dyrektywie OpenMP "dyrektywa" |
| Błąd kompilatora C3022 | "dyrektywa": nieprawidłowy rodzaj "dyrektywy" harmonogramu w dyrektywie OpenMP "dyrektywa" |
| Błąd kompilatora C3023 | "argument": nieoczekiwany token napotkany w argumencie klauzuli "dyrektywa" openMP |
| Błąd kompilatora C3024 | "schedule(runtime)": wyrażenie chunk_size jest niedozwolone |
| Błąd kompilatora C3025 | "klauzula": oczekiwane wyrażenie całkowite |
| Błąd kompilatora C3026 | "klauzula": wyrażenie stałe musi być dodatnie |
| Błąd kompilatora C3027 | "klauzula": oczekiwane wyrażenie arytmetyczne lub wskaźnikowe |
| Błąd kompilatora C3028 | "member": w klauzuli udostępniania danych można używać tylko zmiennej lub statycznej składowej danych |
| Błąd kompilatora C3029 | "symbol": może być wyświetlany tylko raz w klauzulach udostępniania danych w dyrektywie OpenMP |
| Błąd kompilatora C3030 | "identifier": zmienna w klauzuli "dyrektywa" /dyrektywa nie może mieć typu odwołania |
| Błąd kompilatora C3031 | "identifier": zmienna w klauzuli "reduction" musi mieć typ arytmetyczny skalarny |
| Błąd kompilatora C3032 | "identifier": zmienna w klauzuli "clause" nie może mieć niekompletnego typu "type" |
| Błąd kompilatora C3033 | "identifier": zmienna w klauzuli "clause" nie może mieć typu kwalifikowanego const |
| Błąd kompilatora C3034 | Dyrektywa OpenMP "dyrektywa" nie może być bezpośrednio zagnieżdżona w dyrektywie "dyrektywa" |
| Błąd kompilatora C3035 | Dyrektywa OpenMP "uporządkowana" musi wiązać się bezpośrednio z dyrektywą "for" lub "parallel for" z klauzulą "order" |
| Błąd kompilatora C3036 | "klauzula": nieprawidłowy token operatora w klauzuli "redukcja" openMP |
| Błąd kompilatora C3037 | "identifier": zmienna w klauzuli "clause" musi być współużytkowany w kontekście otaczającym |
| Błąd kompilatora C3038 | "identifier": zmienna w klauzuli "private" nie może być zmienną redukcji w kontekście otaczającym |
| Błąd kompilatora C3039 | "identifier": zmienna indeksu w instrukcji OpenMP "for" nie może być zmienną redukcji |
| Błąd kompilatora C3040 | "identifier": typ zmiennej w klauzuli "reduction" jest niezgodny z operatorem redukcji "operator" |
| Błąd kompilatora C3041 | "identifier": zmienna w klauzuli "copyprivate" musi być prywatna w kontekście otaczającym |
| Błąd kompilatora C3042 | Klauzule "copyprivate" i "nowait" nie mogą pojawiać się razem w dyrektywie OpenMP "dyrektywa" |
| Błąd kompilatora C3043 | Dyrektywy OpenMP "critical" nie można zagnieżdżać w dyrektywie "krytycznej" o tej samej nazwie |
| Błąd kompilatora C3044 | "section": dozwolone tylko bezpośrednie zagnieżdżone w ramach dyrektywy OpenMP "sekcje" |
| Błąd kompilatora C3045 | Oczekiwano instrukcji złożonej po dyrektywie OpenMP "sekcje". Brak elementu "{" |
| Błąd kompilatora C3046 | Brak bloku strukturalnego w regionie openMP "#pragma sekcji omp" |
| Błąd kompilatora C3047 | Blok ustrukturyzowany w regionie "sekcje" openMP musi być poprzedzony sekcją "#pragma omp" (przestarzałe w programie Visual Studio 2022). |
| Błąd kompilatora C3048 | Wyrażenie po "#pragma niepodzielne" ma niewłaściwą formę |
| Błąd kompilatora C3049 | "argument": nieprawidłowy argument w klauzuli "default" openMP |
| Błąd kompilatora C3050 | "class": klasa ref nie może dziedziczyć z "identyfikatora" |
| Błąd kompilatora C3051 | Nieaktualne. |
| Błąd kompilatora C3052 | "identifier": zmienna nie jest wyświetlana w klauzuli udostępniania danych w klauzuli default(none) |
| Błąd kompilatora C3053 | "identifier": wartość "threadprivate" jest prawidłowa tylko dla elementów danych globalnych lub statycznych |
| Błąd kompilatora C3054 | Funkcja "#pragma równoległa omp" nie jest obecnie obsługiwana w klasie ogólnej lub funkcji (przestarzałe w programie Visual Studio 2022). |
| Błąd kompilatora C3055 | "identifier": nie można odwołać się do symbolu przed jego zastosowaniem w dyrektywie "threadprivate" |
| Błąd kompilatora C3056 | "identifier": symbol nie znajduje się w tym samym zakresie z dyrektywą "threadprivate" |
| Błąd kompilatora C3057 | "identifier": dynamiczne inicjowanie symboli "threadprivate" nie jest obecnie obsługiwane |
| Błąd kompilatora C3058 | "identifier": symbol nie zadeklarowany jako "threadprivate", zanim zostanie użyty w klauzuli "copyin" |
| Błąd kompilatora C3059 | "identifier": symbol "threadprivate" nie może być używany w klauzuli "klauzula" |
| Błąd kompilatora C3060 | "identifier": funkcja znajoma może nie być zdefiniowana wewnątrz klasy przy użyciu kwalifikowanej nazwy (może być zadeklarowana tylko) |
| Błąd kompilatora C3061 | operator "operator": niedozwolone w wyliczenie "type" z typem bazowym "type" |
| Błąd kompilatora C3062 | "identifier": moduł wyliczający wymaga wartości, ponieważ typ bazowy to "typ" |
| Błąd kompilatora C3063 | operator "operator": wszystkie operandy muszą mieć ten sam typ wyliczenia |
| Błąd kompilatora C3064 | "identyfikator": musi być prostym typem lub rozpoznawać go |
| Błąd kompilatora C3065 | deklaracja właściwości w zakresie nieklasowym jest niedozwolona |
| Błąd kompilatora C3066 | istnieje wiele sposobów wywoływanych przez obiekt tego typu za pomocą tych argumentów |
| Błąd kompilatora C3067 | nie można użyć listy inicjatora z wbudowanym operatorem[] |
| Błąd kompilatora C3068 | "identifier": funkcja "naked" nie może zawierać obiektów, które wymagają odwijania, jeśli wystąpił wyjątek języka C++. |
| Błąd kompilatora C3069 | operator "operator": niedozwolone dla typu wyliczenia |
| Błąd kompilatora C3070 | "identifier": właściwość nie ma metody "set" |
| Błąd kompilatora C3071 | operator "operator" można zastosować tylko do wystąpienia klasy ref lub typu wartości |
| Błąd kompilatora C3072 | operator "operator" nie może zostać zastosowany do wystąpienia klasy ref, używając operatora jednoargumentowego "%", aby przekonwertować wystąpienie klasy ref na typ uchwytu |
| Błąd kompilatora C3073 | "identifier": klasa ref nie ma konstruktora kopiowania zdefiniowanego przez użytkownika |
| Błąd kompilatora C3074 | nie można zainicjować tablicy za pomocą inicjatora nawiasu |
| Błąd kompilatora C3075 | "identifier": nie można osadzić wystąpienia typu odwołania, "type" w typie wartości |
| Błąd kompilatora C3076 | "identifier": nie można osadzić wystąpienia typu odwołania, "type" w typie natywnym |
| Błąd kompilatora C3077 | "identifier": finalizator może być tylko elementem członkowskim typu odwołania |
| Błąd kompilatora C3078 | rozmiar tablicy musi być określony w nowych wyrażeniach |
| Błąd kompilatora C3079 | nie można użyć listy inicjatora jako prawego operandu tego operatora przypisania |
| Błąd kompilatora C3080 | "finalizer": finalizator nie może mieć specyfikatora klasy magazynu |
| Błąd kompilatora C3081 | Nieaktualne. |
| Błąd kompilatora C3082 | Nieaktualne. |
| Błąd kompilatora C3083 | "identifier": symbol po lewej stronie znaku "::" musi być typem |
| Błąd kompilatora C3084 | "identifier": destruktor/finalizator nie może być "słowem kluczowym" |
| Błąd kompilatora C3085 | "identifier": konstruktor nie może być "słowem kluczowym" |
| Błąd kompilatora C3086 | nie można odnaleźć pliku "std::initializer_list": musisz #include initializer_list <> |
| Błąd kompilatora C3087 | "identifier": wywołanie "deklaracji" już inicjuje ten element członkowski |
| Błąd kompilatora C3088 | "class": konstruktor atrybutu musi mieć nazwane argumenty formalne |
| Błąd kompilatora C3089 | "identifier": nazwa parametru nie jest zgodna z nazwą żadnego elementu członkowskiego danych |
| Błąd kompilatora C3090 | "class": klasa atrybutu nie może być szablonem |
| Błąd kompilatora C3091 | "class": klasa atrybutów nie może mieć klas bazowych |
| Błąd kompilatora C3092 | "class": składowa klasy atrybutu nie może być polem bitowym, "statycznym" ani "const" |
| Błąd kompilatora C3093 | "type": typ niedozwolony dla składowej klasy atrybutu "member" |
| Błąd kompilatora C3094 | "attribute": niedozwolone użycie anonimowe |
| Błąd kompilatora C3095 | "atrybut": nie można powtórzyć atrybutu |
| Błąd kompilatora C3096 | "attribute": atrybut jest dozwolony tylko dla składowych danych klas atrybutów |
| Błąd kompilatora C3097 | "attribute": atrybut musi być o określonym zakresie z atrybutem "assembly:" lub "module:" |
| Błąd kompilatora C3098 | "identifier": atrybut nie ma konstruktorów zdefiniowanych przez użytkownika |
| Błąd kompilatora C3099 | 'słowo kluczowe': użyj elementu [System::AttributeUsageAttribute]/[Windows::Foundation::Metadata::AttributeUsageAttribute] dla atrybutów zarządzanych/WinRT |
Zobacz też
Błędy i ostrzeżenia kompilatora C/C++ i narzędzi kompilacji
Błędy kompilatora C2000 — C3999, C7000 – C7999