Поделиться через


Ошибки компилятора с C2900 по C2999

В статьях в этом разделе документации объясняется подмножество сообщений об ошибках, создаваемых компилятором.

Внимание

Компиляторы и средства сборки Visual Studio могут сообщать о многих типах ошибок и предупреждений. После обнаружения ошибки или предупреждения средства сборки могут делать предположения о намерении кода и пытаться продолжить работу, чтобы в одно и то же время сообщалось больше проблем. Если средства делают неверное предположение, последующие ошибки или предупреждения не могут применяться к проекту. При устранении проблем в проекте всегда начинайте с первой зарегистрированной ошибки (или предупреждения) и выполняйте повторную сборку как можно чаще. Одно исправление может привести к возникновению многих последующих ошибок.

Чтобы получить справку по определенному диагностическом сообщению в Visual Studio, выберите его в окне вывода и нажмите клавишу F1 . Visual Studio открывает страницу документации для этой ошибки, если она существует. Вы также можете использовать средство поиска в верхней части страницы, чтобы найти статьи об определенных ошибках или предупреждениях. Или просмотрите список ошибок и предупреждений по инструменту и введите оглавление на этой странице.

Примечание.

Не все ошибки или предупреждения Visual Studio документируются. Во многих случаях диагностическое сообщение предоставляет все доступные сведения. Если вы приземлились на этой странице при использовании F1 , и вы думаете, что сообщение об ошибке или предупреждении требует дополнительного объяснения, сообщите нам об этом. Вы можете использовать кнопки обратной связи на этой странице, чтобы вызвать проблему документации на GitHub. Если вы считаете, что ошибка или предупреждение неправильно, или вы нашли другую проблему с набором инструментов, сообщите о проблеме продукта на сайте Сообщество разработчиков. Вы также можете отправлять отзывы и вводить ошибки в интегрированной среде разработки. В Visual Studio перейдите в строку меню и выберите "Отправить отзыв о > проблеме" или отправьте предложение с помощью справки > по отправке > отзывов > отправить предложение. Некоторые разделы об ошибках компилятора были созданы, которые не создаются компилятором и теперь перенаправляются на эту страницу.

Вы можете найти дополнительную помощь по ошибкам и предупреждениям на форумах Microsoft Learn Q&A . Или найдите номер ошибки или предупреждения на сайте Сообщество разработчиков Visual Studio C++. Вы также можете искать решения в стеке Overflow .

Ссылки на дополнительные справочные материалы и ресурсы сообщества см. в разделе справки и сообщества Visual C++.

Сообщения об ошибках

Ошибка Сообщение
Ошибка компилятора C2900 "декларатор": шаблоны функций-членов в классах WinRT должны быть "закрытыми", "внутренними" или "защищенными частными"
Ошибка компилятора C2901 "идентификатор": универсальный интерфейс или делегат не может быть общедоступным
Ошибка компилятора C2902 "token": непредвиденный маркер, следующий за шаблоном или универсальным, ожидаемый идентификатор (устаревший в Visual Studio 2022.)
Ошибка компилятора C2903 "идентификатор": символ не является шаблоном класса или универсальным шаблоном или шаблоном функции
Ошибка компилятора C2904 "идентификатор": имя, уже используемое для шаблона в текущей области
Ошибка компилятора C2905 Является устаревшей.
Ошибка компилятора C2906 Шаблон: для явной специализации требуется шаблон <>
Ошибка компилятора C2907 Аргумент register "number" не указывает допустимый номер регистра
Ошибка компилятора C2908 явная специализация; "шаблон" уже создан экземпляр
Ошибка компилятора C2909 "идентификатор": явное создание экземпляра шаблона функции требует возвращаемого типа
Ошибка компилятора C2910 "function": не может быть явно специализированным
Ошибка компилятора C2911 "member": нельзя объявить или определить в текущей области
Ошибка компилятора C2912 Явное объявление специализации не является специализацией шаблона функции
Ошибка компилятора C2913 явная специализация; "объявление" не является специализацией шаблона класса
Ошибка компилятора C2914 "identifier": не может выводить шаблон/универсальный аргумент в качестве аргумента функции неоднозначно
Ошибка компилятора C2915 "идентификатор": "type" нельзя использовать непосредственно на опубликованной поверхности типа WinRT. Вместо этого используйте Platform::Object^, чтобы передать этот тип
Ошибка компилятора C2916 "identifier": [FlagsAttribute] (только) должен быть указан в общедоступном перечислении с базовым типом unsigned int
Ошибка компилятора C2917 "идентификатор": недопустимый параметр шаблона (устаревший в Visual Studio 2022.)
Ошибка компилятора C2918 "идентификатор": индексированные свойства нельзя использовать на опубликованной поверхности типа WinRT
Ошибка компилятора C2919 "type": операторы не могут использоваться на опубликованной поверхности типа WinRT
Ошибка компилятора C2920 redefinition: "type": шаблон класса/generic уже объявлен как "объявление"
Ошибка компилятора C2921 redefinition: "type": шаблон класса/generic переопределен как "объявление"
Ошибка компилятора C2922 "interface": интерфейс WinRT не может содержать статические элементы
Ошибка компилятора C2923 "type": "identifier" не является допустимым аргументом шаблона или универсального типа для параметра "параметр"
Ошибка компилятора C2924 аргумент подпрограммы __declspec(прерывание) не в R2
Ошибка компилятора C2925 подпрограмма __declspec(прерывание) не может использовать плавающую точку
Ошибка компилятора C2926 "идентификатор": инициализатор элементов по умолчанию не допускается для члена анонимной структуры в союзе
Ошибка компилятора C2927 "идентификатор": шаблон функции должен вызываться по крайней мере с одним аргументом
Ошибка компилятора C2928 явное создание экземпляров; "идентификатор" не является функцией или статическим элементом данных класса "class" класса шаблона.
Ошибка компилятора C2929 "декларатор": явное создание экземпляра; не может явно принудительно и подавлять экземпляр члена класса шаблона.
Ошибка компилятора C2930 Class: template-id/generic-id переопределен как перечислитель идентификатора перечисления.
Ошибка компилятора C2931 Class1: template-id/generic-id переопределен в качестве функции-члена класса 2 (устаревшее в Visual Studio 2022.)
Ошибка компилятора C2932 Type: template-id/generic-id переопределен как член данных идентификатора (устаревший в Visual Studio 2022.)
Ошибка компилятора C2933 Type: template-id/generic-id переопределен как элемент typedef идентификатора (устаревший в Visual Studio 2022.)
Ошибка компилятора C2934 "type": template-id/generic-id переопределен как вложенный "элемент" идентификатора (устаревшее в Visual Studio 2022.)
Ошибка компилятора C2935 Type: template-id/generic-id переопределен как глобальная функция (устаревшая в Visual Studio 2022.)
Ошибка компилятора C2936 Type: template-id/generic-id переопределен как глобальная переменная данных (устаревшая в Visual Studio 2022.)
Ошибка компилятора C2937 Type: template-id/generic-id переопределен как глобальный типд (устаревший в Visual Studio 2022.)
Ошибка компилятора C2938 "идентификатор": не удалось специализированный шаблон псевдонима
Ошибка компилятора C2939 Type: template-id/generic-id переопределен как локальная переменная данных (устаревшая в Visual Studio 2022.)
Ошибка компилятора C2940 "type": template-id/generic-id переопределен как локальный типд (устаревший в Visual Studio 2022.)
Ошибка компилятора C2941 Type: template-id/generic-id redefined в качестве локального элемента (устаревшее в Visual Studio 2022.)
Ошибка компилятора C2942 "type": template-id/generic-id переопределен как формальный аргумент функции (устаревшее в Visual Studio 2022.)
Ошибка компилятора C2943 Type: template-id/generic-id переопределен в качестве аргумента типа шаблона (устаревшее в Visual Studio 2022.)
Ошибка компилятора C2944 Type: template-id/generic-id redefined в качестве аргумента значения шаблона (устаревшее в Visual Studio 2022.)
Ошибка компилятора C2945 явное создание экземпляра не ссылается на специализацию класса-шаблона
Ошибка компилятора C2946 явное создание экземпляров; Тип не является специализацией класса шаблона
Ошибка компилятора C2947 ожидая, что аргументы> шаблона прерваны, найдено "token"
Ошибка компилятора C2948 явное создание экземпляров; Описатель класса хранилища "описатель" не разрешен для специализации
Ошибка компилятора C2949 thread_local не поддерживается в /kernel
Ошибка компилятора C2950 Является устаревшей.
Ошибка компилятора C2951 Объявления шаблона или универсального типа разрешены только в глобальной области, пространства имен или класса.
Ошибка компилятора C2952 "объявление": шаблон/универсальный список отсутствующих шаблонов или универсальных параметров
Ошибка компилятора C2953 "type": шаблон класса уже определен
Ошибка компилятора C2954 аргумент слова инструкции, не в диапазоне
Ошибка компилятора C2955 "type": использование шаблона класса/универсального типа требует списка аргументов шаблона или универсального аргумента
Ошибка компилятора C2956 обычная функция сделки "function" будет выбрана в качестве функции размещения сделки
Ошибка компилятора C2957 "token": недопустимый левый разделитель: ожидается "<"
Ошибка компилятора C2958 Левый разделитель, найденный в файле (line_number), не совпадал правильно.
Ошибка компилятора C2959 Универсальный класс или функция не может быть членом шаблона
Ошибка компилятора C2960 Является устаревшей.
Ошибка компилятора C2961 Function: несогласованные явные экземпляры, предыдущий явный экземпляр не указал аргумент.
Ошибка компилятора C2962 синтаксическая ошибка: "token": ожидаемое определение функции-члена класса шаблона до конца с "}"
Ошибка компилятора C2963 Является устаревшей.
Ошибка компилятора C2964 Является устаревшей.
Ошибка компилятора C2965 __declspec(описатель) не поддерживается с /kernel
Ошибка компилятора C2966 "identifier1": должен иметь ту же __declspec(code_seg(...)), что и базовый класс "identifier2" (устаревшее в Visual Studio 2022.)
Ошибка компилятора C2967 "идентификатор": переопределяющая виртуальная функция должна иметь ту же __declspec(code_seg(...)) как переопределенную виртуальную функцию (устаревшее в Visual Studio 2022.)
Ошибка компилятора C2968 'identifier': рекурсивное объявление псевдонима
Ошибка компилятора C2969 синтаксическая ошибка: "token": ожидаемое определение функции-члена заканчивается "}"
Ошибка компилятора C2970 "type": параметр шаблона "parameter": "argument": выражение, связанное с объектами с внутренней компоновкой, не может использоваться в качестве аргумента, отличного от типа
Ошибка компилятора C2971 "type": параметр шаблона "parameter": "argument": переменная с длительностью нестаттического хранилища не может использоваться в качестве аргумента, отличного от типа
Ошибка компилятора C2972 "type": параметр шаблона "параметр": недопустимый тип аргумента, отличного от типа
Ошибка компилятора C2973 "template": недопустимый аргумент шаблона "number"
Ошибка компилятора C2974 "type": недопустимый аргумент шаблона или универсального аргумента для параметра, ожидаемый тип
Ошибка компилятора C2975 Type: недопустимый аргумент шаблона для параметра, ожидаемое выражение константы во время компиляции
Ошибка компилятора C2976 Type: слишком мало шаблонов и универсальных аргументов
Ошибка компилятора C2977 Type: слишком много аргументов шаблона или универсального аргумента
Ошибка компилятора C2978 синтаксическая ошибка: ожидаемый "keyword1" или "keyword2"; найденный тип "type"; параметры, не являющиеся типом, не поддерживаются в универсальных наборах
Ошибка компилятора C2979 явные специализации не поддерживаются в универсальных шаблонах
Ошибка компилятора C2980 Обработка исключений C++ не поддерживается в /kernel
Ошибка компилятора C2981 Динамическая форма ключевого слова не поддерживается с /kernel
Ошибка компилятора C2982 "объявление": разные __declspec(code_seg(...)) используется: "identifier1" теперь "identifier2"
Ошибка компилятора C2983 "объявление": все объявления должны иметь идентичные __declspec(code_seg(...))
Ошибка компилятора C2984 Является устаревшей.
Ошибка компилятора C2985 "argument": аргумент для __declspec(code_seg(...)) должен быть текстовым разделом
Ошибка компилятора C2986 "идентификатор": __declspec(code_seg(...)) можно применять только к классу или функции.
Ошибка компилятора C2987 Объявление не может содержать как __declspec(code_seg('identifier')), так и __declspec(code_seg('value'))
Ошибка компилятора C2988 объявление и определение шаблона неузнаваемого шаблона
Ошибка компилятора C2989 "class": шаблон или универсальный класс уже объявлен как неклассовый шаблон/универсальный
Ошибка компилятора C2990 "class": шаблон или универсальный шаблон неклассов уже объявлен как шаблон класса или универсальный
Ошибка компилятора C2991 переопределение шаблона или универсального параметра "параметр"
Ошибка компилятора C2992 Class: недопустимый или отсутствующий список параметров шаблона или универсального параметра
Ошибка компилятора C2993 "type": недопустимый тип для параметра шаблона не типа "идентификатор"
Ошибка компилятора C2994 неименованный класс в списке параметров шаблона
Ошибка компилятора C2995 "объявление": шаблон функции уже определен
Ошибка компилятора C2996 "function": определение шаблона рекурсивной функции
Ошибка компилятора C2997 Function: привязка массива не может быть выведена из инициализатора элементов по умолчанию
Ошибка компилятора C2998 "декларатор": не может быть определением шаблона

См. также

Компилятор C/C++ и средства сборки ошибок и предупреждений
Ошибки компилятора C2000 — C3999, C7000 — C7999