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


Ошибки компилятора с C2300 по C2399

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

Внимание

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

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

Примечание.

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

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

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

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

Ошибка Сообщение
Ошибка компилятора C2300 "class": класс не имеет деструктора "~class"
Ошибка компилятора C2301 слева от "->~identifier" должен указывать на класс/структуру/объединение
Ошибка компилятора C2302 слева от '.~identifier' должен иметь тип класса/структуры/объединения
Ошибка компилятора C2303 Структурированная обработка исключений не может использоваться в корутине
Ошибка компилятора C2304 "ключевое слово" нельзя использовать внутри блока catch
Ошибка компилятора C2305 Файл не содержит сведений об отладке для этого модуля
Ошибка компилятора C2306 Файл не содержит последние сведения об отладке для этого модуля.
Ошибка компилятора C2307 Директива pragma должна быть перемещена вне функции, если включена добавочная компиляция
Ошибка компилятора C2308 объединение несовпадных строк
Ошибка компилятора C2309 Обработчик catch ожидал объявление исключений с скобками
Ошибка компилятора C2310 Обработчики catch должны указывать один тип
Ошибка компилятора C2311 "тип": поймали "..." номер строки
Ошибка компилятора C2312 "type1": перехватывается по номеру строки "type2"
Ошибка компилятора C2313 Тип1: по ссылке ('type2') в номере строки
Ошибка компилятора C2314 Ключевое слово "keyword1" устарело: используйте "keyword2" вместо него
Ошибка компилятора C2315 "type1": ссылка поймана по номеру строки "type2"
Ошибка компилятора C2316 "type": невозможно поймать как деструктор и /или конструктор копирования недоступны или удалены
Ошибка компилятора C2317 Блок try, запускающийся в строке "number", не имеет обработчиков catch
Ошибка компилятора C2318 нет блока try, связанного с этим блоком catch
Ошибка компилятора C2319 После "try/catch" должен следовать составной оператор. Отсутствует "{"
Ошибка компилятора C2320 ожидается значение ":", чтобы следовать за описателями доступа "описатель"
Ошибка компилятора C2321 "идентификатор" является ключевым словом и не может использоваться в этом контексте
Ошибка компилятора C2322 "identifier": адрес dllimport "identifier" не является статическим
Ошибка компилятора C2323 "идентификатор": новые или удаленные функции не могут быть объявлены статическими или в пространстве имен, отличном от глобального пространства имен.
Ошибка компилятора C2324 "идентификатор": непредвиденное справа от "::~"
Ошибка компилятора C2325 Type1: непредвиденный тип справа от "->~": ожидаемое "type2"
Ошибка компилятора C2326 "декларатор": функция не может получить доступ к идентификатору
Ошибка компилятора C2327 "идентификатор": не является именем типа, статическим или перечислителем
Ошибка компилятора C2328 "keyword": ключевое слово еще не поддерживается
Ошибка компилятора C2329 "идентификатор": __ptr64 недоступны для указателей на функции
Ошибка компилятора C2330 "implementation_key( )" является допустимым только в регионе, ограниченном #pragma start_map_region/stop_map_region
Ошибка компилятора C2331 доступ к идентификатору теперь определяется как "специальные возможности1", ранее он был определен как "специальные возможности2".
Ошибка компилятора C2332 Typedef: отсутствует имя тега
Ошибка компилятора C2333 "function": ошибка в объявлении функции; пропускает текст функции
Ошибка компилятора C2334 непредвиденные маркеры, предшествующие "token"; пропуская видимое тело функции
Ошибка компилятора C2335 "идентификатор": тип не может быть введен в списке параметров функции
Ошибка компилятора C2336 "type": недопустимый тип
Ошибка компилятора C2337 "атрибут": атрибут не найден
Ошибка компилятора C2338 (сообщение об ошибке от внешнего поставщика)
Ошибка компилятора C2339 "идентификатор": недопустимый тип в внедренном IDL
Ошибка компилятора C2340 "идентификатор": "статический" может использоваться только в определении класса
Ошибка компилятора C2341 "section": сегмент должен быть определен с помощью #pragma data_seg, code_seg или раздела перед использованием
Ошибка компилятора C2342 синтаксическая ошибка: конфликтующие квалификаторы типов
Ошибка компилятора C2343 Section: конфликтующие атрибуты раздела
Ошибка компилятора C2344 align(number): выравнивание должно быть двумя
Ошибка компилятора C2345 align(number): недопустимое значение выравнивания
Ошибка компилятора C2346 "function" не может быть скомпилирован как собственный: "объяснение"
Ошибка компилятора C2347 Является устаревшей.
Ошибка компилятора C2348 "type": не является агрегатом стилей C, нельзя экспортировать в внедренном IDL
Ошибка компилятора C2349 Функция не может быть скомпилирована как управляемая: "объяснение"; используйте #pragma неуправляемых
Ошибка компилятора C2350 "идентификатор" не является статическим элементом
Ошибка компилятора C2351 устаревший синтаксис инициализации конструктора C++
Ошибка компилятора C2352 "идентификатор": незаконный вызов нестатитической функции-члена
Ошибка компилятора C2353 Спецификация исключений не разрешена
Ошибка компилятора C2354 Является устаревшей.
Ошибка компилятора C2355 "this": можно ссылаться только в нестатических функциях-членах или нестатических инициализаторах элементов данных
Ошибка компилятора C2356 Сегмент инициализации не должен изменяться во время единицы перевода
Ошибка компилятора C2357 "идентификатор": должен быть функцией типа "type"
Ошибка компилятора C2358 "идентификатор": статическое свойство не может быть определено вне определения класса
Ошибка компилятора C2359 Является устаревшей.
Ошибка компилятора C2360 инициализация идентификатора пропускается меткой case
Ошибка компилятора C2361 инициализация идентификатора пропускается меткой по умолчанию
Ошибка компилятора C2362 инициализация идентификатора пропускается меткой goto.
Ошибка компилятора C2363 Для функции встроенного числового ограничения компилятора требуется строковый литеральный аргумент
Ошибка компилятора C2364 "type": недопустимый тип для пользовательского атрибута
Ошибка компилятора C2365 "member1": redefinition; предыдущее определение было "member2"
Ошибка компилятора C2366 "identifier": redefinition; разные описатели implementation_key
Ошибка компилятора C2367 Является устаревшей.
Ошибка компилятора C2368 "identifier": redefinition; разные описатели выделения
Ошибка компилятора C2369 "identifier": redefinition; разные подстроки
Ошибка компилятора C2370 "identifier": redefinition; другой класс хранилища
Ошибка компилятора C2371 "identifier": redefinition; различные основные типы
Ошибка компилятора C2372 "identifier": redefinition; различные типы косвенного обращения
Ошибка компилятора C2373 "identifier": redefinition; разные модификаторы типов
Ошибка компилятора C2374 "identifier": redefinition; несколько инициализаций
Ошибка компилятора C2375 "идентификатор": переопределение; другая компоновка
Ошибка компилятора C2376 "identifier": redefinition; разное выделение на основе
Ошибка компилятора C2377 "identifier": redefinition; typedef не может быть перегружен любым другим символом
Ошибка компилятора C2378 "identifier": redefinition; символ не может быть перегружен типдефом
Ошибка компилятора C2379 Формальный номер параметра имеет другой тип при повышении
Ошибка компилятора C2380 type(s) выше "identifier" (конструктор с типом возвращаемого значения или незаконное переопределение текущего имени класса?)
Ошибка компилятора C2381 "identifier": redefinition; "__declspec(noreturn)" или "[[noreturn]] отличается
Ошибка компилятора C2382 "identifier": redefinition; разные спецификации исключений
Ошибка компилятора C2383 "идентификатор": аргументы по умолчанию не допускаются для этого символа
Ошибка компилятора C2384 Member: не может применять thread_local или __declspec(thread) к члену управляемого или winRT-класса.
Ошибка компилятора C2385 неоднозначный доступ к "члену"
Ошибка компилятора C2386 "идентификатор": символ с таким именем уже существует в текущей области
Ошибка компилятора C2387 "идентификатор": неоднозначный базовый класс
Ошибка компилятора C2388 "идентификатор": символ не может быть объявлен как с __declspec(appdomain) и __declspec(process)
Ошибка компилятора C2389 "operator": незаконный операнд "nullptr"
Ошибка компилятора C2390 "идентификатор": неправильный класс хранилища "описатель"
Ошибка компилятора C2391 "идентификатор": "друг" нельзя использовать во время определения типа
Ошибка компилятора C2392 "member1": типы возвращаемых ковариантных значений не поддерживаются в типах managed/WinRT, в противном случае параметр "member2" будет переопределен
Ошибка компилятора C2393 Символ: символ для каждого приложения нельзя выделить в сегменте "сегмент"
Ошибка компилятора C2394 Оператор type::operator : недопустимый оператор CLR/WinRT. По крайней мере один параметр должен иметь следующие типы: "T^", "T^%", "T^&", где T = "type"
Ошибка компилятора C2395 Оператор type::operator : недопустимый оператор CLR/WinRT. По крайней мере один параметр должен иметь следующие типы: "T", "T%", "T", "T^", "T^%", "T^&", где T = "type"
Ошибка компилятора C2396 "type1::operator type2": функция преобразования, определяемая пользователем clR/WinRT, недопустимая. Должен быть преобразован из или преобразовывается в: T^, T^%, T^&&, где T = type1
Ошибка компилятора C2397 Для преобразования из типа1 в type2 требуется сужение преобразования
Ошибка компилятора C2398 Элемент "number": преобразование из "type1" в "type2" требует сужающего преобразования
Ошибка компилятора C2399 Является устаревшей.

См. также

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