Предупреждения компилятора Microsoft C/C++ C4000 до C4199
В статьях этого раздела описываются предупреждения компилятора Microsoft C/C++ C4000 до C4199.
Внимание
Компиляторы и средства сборки Visual Studio могут сообщать о многих типах ошибок и предупреждений. После обнаружения ошибки или предупреждения средства сборки могут делать предположения о намерении кода и пытаться продолжить работу, чтобы в одно и то же время сообщалось больше проблем. Если средства делают неверное предположение, последующие ошибки или предупреждения не могут применяться к проекту. При устранении проблем в проекте всегда начинайте с первой зарегистрированной ошибки (или предупреждения) и выполняйте повторную сборку как можно чаще. Одно исправление может привести к возникновению многих последующих ошибок.
Чтобы получить справку по определенному диагностическом сообщению в Visual Studio, выберите его в окне вывода и нажмите клавишу F1 . Visual Studio открывает страницу документации для этой ошибки, если она существует. Вы также можете использовать средство поиска в верхней части страницы, чтобы найти статьи об определенных ошибках или предупреждениях. Или просмотрите список ошибок и предупреждений по инструменту и введите оглавление на этой странице.
Примечание.
Не все ошибки или предупреждения Visual Studio документируются. Во многих случаях диагностическое сообщение предоставляет все доступные сведения. Если вы приземлились на этой странице при использовании F1 , и вы думаете, что сообщение об ошибке или предупреждении требует дополнительного объяснения, сообщите нам об этом. Вы можете использовать кнопки обратной связи на этой странице, чтобы вызвать проблему документации на GitHub. Если вы считаете, что ошибка или предупреждение неправильно, или вы нашли другую проблему с набором инструментов, сообщите о проблеме продукта на сайте Сообщество разработчиков. Вы также можете отправлять отзывы и вводить ошибки в интегрированной среде разработки. В Visual Studio перейдите в строку меню и выберите "Отправить отзыв о > проблеме" или отправьте предложение с помощью справки > по отправке > отзывов > отправить предложение. Некоторые разделы об ошибках компилятора были созданы, которые не создаются компилятором и теперь перенаправляются на эту страницу.
Вы можете найти дополнительную помощь по ошибкам и предупреждениям на форумах Microsoft Learn Q&A . Или найдите номер ошибки или предупреждения на сайте Сообщество разработчиков Visual Studio C++. Вы также можете искать решения в стеке Overflow .
Ссылки на дополнительные справочные материалы и ресурсы сообщества см. в разделе справки и сообщества Visual C++.
Предупреждающие сообщения
Предупреждение | Сообщение |
---|---|
Предупреждение компилятора (уровень 4, больше не выдаваемое) C4001 | Нестандартное расширение "single строковый комментарий" было использовано |
Предупреждение компилятора (уровень 1, ошибка) C4002 | слишком много аргументов для вызова макросов, таких как функция, "идентификатор" |
Предупреждение компилятора (уровень 1, ошибка) C4003 | недостаточно аргументов для вызова макросов, таких как функция, "идентификатор" |
Предупреждение компилятора (уровень 1) C4005 | "identifier": макрос переопределение |
Предупреждение компилятора (уровень 1) C4006 | #undef ожидается идентификатор |
Предупреждение компилятора (уровень 3) C4007 | Function: должен быть атрибутом |
Предупреждение компилятора (уровень 3) C4008 | "function": атрибут "attribute" игнорируется |
Предупреждение компилятора (уровень 1) C4010 | Один строковый комментарий содержит символ продолжения строки |
Предупреждение компилятора (уровень 3) C4013 | "функция" не определена; при условии, что экстерн возвращает int |
Предупреждение компилятора (уровень 1) C4015 | "идентификатор": тип битового поля должен быть целочисленным |
Предупреждение компилятора (уровень 3) C4018 | Выражение: несоответствие со знаком или без знака |
Предупреждение компилятора (уровень 4) C4019 | пустой оператор в глобальной области видимости |
Предупреждение компилятора (уровень 1) C4020 | Function: слишком много фактических параметров |
Предупреждение компилятора (уровень 1) C4022 | "function": несоответствие указателя для фактического параметра "parameter_number" |
Предупреждение компилятора (уровень 1) C4023 | Function: указатель на основе, переданный в непрототипную функцию: параметр "parameter_number" |
Предупреждение компилятора (уровень 1) C4024 | Function: различные типы для формального и фактического параметра "parameter_number" |
Предупреждение компилятора (уровень 1) C4025 | "function": указатель на основе, переданный функции с аргументами переменной: параметр "parameter_number" |
Предупреждение компилятора (уровень 1) C4026 | функция объявлена со списком формальных параметров |
Предупреждение компилятора (уровень 1) C4027 | функция объявлена без списка формальных параметров |
Предупреждение компилятора (уровень 1) C4028 | формальный параметр parameter_number отличается от объявления |
Предупреждение компилятора (уровень 1) C4029 | объявленный формальный список параметров отличается от определения |
Предупреждение компилятора (уровень 1) C4030 | первый список формальных параметров длиннее второго |
Предупреждение компилятора (уровень 1) C4031 | второй формальный список параметров дольше первого списка |
Предупреждение компилятора (уровень 4) C4032 | формальный параметр parameter_number имеет другой тип при повышении |
Предупреждение компилятора (уровень 1) C4033 | Функция должна возвращать значение |
Предупреждение компилятора (уровень 1) C4034 | sizeof возвращает значение 0 |
Предупреждение компилятора (уровень 3) C4035 | "function": возвращаемое значение не возвращается |
Предупреждение компилятора (уровень 1) C4036 | неименованный "тип" в качестве фактического параметра |
Предупреждение компилятора (уровень 1) C4038 | Модификатор: недопустимый модификатор класса |
Предупреждение компилятора (уровень 1) C4041 | Ограничение компилятора: завершение выходных данных браузера |
Предупреждение компилятора (уровень 1) C4042 | "идентификатор": имеет недопустимый класс хранилища |
Предупреждение компилятора (уровень 1) C4045 | "array": массив ограничивает переполнение |
Предупреждение компилятора (уровень 1) C4047 | "operator": "identifier1" отличается на уровнях косвенного обращения от "identifier2" |
Предупреждение компилятора (уровень 1) C4048 | разные подстроки массива: "identifier1" и "identifier2" |
Предупреждение компилятора (уровень 1) C4049 | Ограничение компилятора: прекращение выбросов номера строки |
Предупреждение компилятора (уровень 1) C4051 | преобразование типа; возможна потеря данных |
Предупреждение компилятора (уровень 1 и уровень 4) C4052 | объявления функции отличаются; одно из них содержит переменные аргументы |
Предупреждение компилятора (уровень 4) C4053 | один пустой операнд для '?: ' |
Предупреждение компилятора (уровень 1) C4055 | "преобразование": от указателя данных "type1" до указателя функции "type2" |
Предупреждение компилятора (уровень 2) C4056 | переполнение в арифметическом арифметическом константе с плавающей запятой |
Предупреждение компилятора (уровень 4) C4057 | Оператор: "identifier1" отличается в косвенном обращении к немного разным базовым типам от "identifier2" |
Предупреждение компилятора (уровень 3, выключен) C4060 | Оператор switch не содержит меток case или default |
Предупреждение компилятора (уровень 4, выключен) C4061 | перечислитель "идентификатор" в параметре enum "перечисление" не обрабатывается явным образом меткой case . |
Предупреждение компилятора (уровень 4, выключен) C4062 | перечислитель "идентификатор" в параметре enum "перечисление" не обрабатывается |
Предупреждение компилятора (уровень 4) C4063 | Регистр "идентификатор" не является допустимым значением для параметра enum "перечисление" |
Предупреждение компилятора (уровень 4) C4064 | параметр неполного enum перечисления |
Предупреждение компилятора (уровень 3, выключен) C4065 | Оператор switch содержит "default ", но нет меток "case " |
Предупреждение компилятора (уровень 3) C4066 | знаки после первого в константе из двухбайтовых знаков пропускаются |
Предупреждение компилятора (уровень 1) C4067 | непредвиденные маркеры после директивы препроцессора — ожидается новая строка |
Предупреждение компилятора (уровень 1) C4068 | неизвестный pragma 'identifier' |
Предупреждение компилятора C4069 | long double совпадает с точностью двойной |
Предупреждение компилятора (уровень 3) C4073 | инициализаторы помещают в область инициализации библиотеки |
Предупреждение компилятора (уровень 1) C4074 | инициализаторы помещают в зарезервированную область инициализации компилятора |
Предупреждение компилятора (уровень 1) C4075 | инициализаторы в неопознанной области инициализации |
Предупреждение компилятора (уровень 1) C4076 | "type_modifier": нельзя использовать с типом "typename" |
Предупреждение компилятора (уровень 1) C4077 | неизвестный параметр check_stack |
Предупреждение компилятора (уровень 1) C4079 | непредвиденный маркер "token" |
Предупреждение компилятора (уровень 1) C4080 | ожидаемый идентификатор для имени сегмента; найден "символ" |
Предупреждение компилятора (уровень 1) C4081 | ожидаемый "token1"; найден "token2" |
Предупреждение компилятора (уровень 1) C4083 | ожидаемый "token"; найден идентификатор "идентификатор" |
Предупреждение компилятора (уровень 1) C4085 | Ожидается, что параметр pragma будет иметь значение "on " или "off " |
Предупреждение компилятора (уровень 1) C4086 | требуется параметр директивы pragma: "1", "2", "4", "8" или "16" |
Предупреждение компилятора (уровень 1) C4087 | Function: объявлен со списком параметров 'void ' |
Предупреждение компилятора (уровень 1) C4088 | Function: несоответствие указателя в фактическом параметре "parameter_number", формальный параметр "parameter_number" |
Предупреждение компилятора (уровень 1) C4089 | Function: различные типы в фактическом параметре "parameter_number", формальный параметр "parameter_number" |
Предупреждение компилятора (уровень 1) C4090 | "operation": разные квалификаторы "модификатор" |
Предупреждение компилятора (уровень 1 и уровень 2) C4091 | "ключевое слово": игнорируется слева от типа, если переменная не объявлена |
Предупреждение компилятора (уровень 4) C4092 | sizeof возвращает значение unsigned long |
Предупреждение компилятора (уровень 2) C4094 | Неуправляемый "токен" не объявил символы |
Предупреждение компилятора (уровень 1) C4096 | "идентификатор": интерфейс не является com-интерфейсом; не будет выдаваться В IDL |
Предупреждение компилятора (уровень 1) C4097 | Ожидается, что параметр pragma будет иметь значение "restore " или "off " |
Предупреждение компилятора (уровень 1) C4098 | "function": "void " функция, возвращающая значение |
Предупреждение компилятора (уровень 2) C4099 | "идентификатор": имя типа, отображаемого с помощью "object_type1", теперь отображается с помощью "object_type2". |
Предупреждение компилятора (уровень 4) C4100 | "identifier": неуправляемый формальный параметр |
Предупреждение компилятора (уровень 3 и уровень 4) C4101 | "identifier": неотменяемая локальная переменная |
Предупреждение компилятора (уровень 3) C4102 | Label: unreferenced label |
Предупреждение компилятора (уровень 1) C4103 | Выравнивание изменено после включения заголовка, может возникнуть из-за отсутствия #pragma pack(pop) |
Предупреждение компилятора (уровень 1) C4109 | непредвиденный идентификатор "идентификатор" |
Предупреждение компилятора (уровень 1 и уровень 4) C4112 | #line требует целое число от 1 до "line_count" |
Предупреждение компилятора (уровень 1) C4113 | "identifier1" отличается в списках параметров от "identifier2" |
Предупреждение компилятора (уровень 1) C4114 | Множественное использование одного и того же квалификатора типа |
Предупреждение компилятора (уровень 1 и уровень 4) C4115 | "type": определение именованного типа в скобках |
Предупреждение компилятора (уровень 1) C4116 | Определение неназванного типа в скобках |
Предупреждение компилятора (уровень 1) C4117 | имя макроса "имя" зарезервировано, "команда" игнорируется |
Предупреждение компилятора (уровень 1) C41119 | указаны разные базы base1 и base2 |
Предупреждение компилятора (уровень 1) C4120 | несоответствие указателей - с базой и без базы |
Предупреждение компилятора (уровень 4) C4121 | "символ": выравнивание члена было чувствительным к упаковке |
Предупреждение компилятора (уровень 1) C4122 | "function": alloc_text применимо только к функциям с компоновкой C |
Предупреждение компилятора (уровень 1) C4123 | различные базовые выражения, указанные |
Предупреждение компилятора (уровень 1) C4124 | __fastcall с проверкой стека неэффективно |
Предупреждение компилятора (уровень 4) C4125 | десятичная цифра в конце восьмеричной escape-последовательности |
Предупреждение компилятора (уровень 4) C4127 | условное выражение является константой |
Предупреждение компилятора (уровень 1) C4129 | "символ": нераспознанная последовательность escape-символов |
Предупреждение компилятора (уровень 4) C4130 | Оператор: логическая операция по адресу строковой константы |
Предупреждение компилятора (уровень 4) C4131 | Функция: использует декларатор старого стиля |
Предупреждение компилятора (уровень 4) C4132 | "object": const объект должен быть инициализирован |
Предупреждение компилятора (уровень 1 и уровень 3) C4133 | "expression": несовместимые типы - от "type1" до "type2" |
Предупреждение компилятора C4137 | "function": возвращаемое значение из функции с плавающей запятой не возвращается |
Предупреждение компилятора (уровень 1) C4138 | '*/ ' найден за пределами комментария |
Предупреждение компилятора (уровень 1, ошибка) C4141 | Модификатор: используется несколько раз |
Предупреждение компилятора (уровень 1) C4142 | "идентификатор": доброкачественное переопределение типа |
Предупреждение компилятора (уровень 1) C4143 | pragma "same_seg" не поддерживается; использование __based выделения |
Предупреждение компилятора (уровень 1) C4144 | Выражение "выражение": реляционное выражение в виде выражения switch |
Предупреждение компилятора (уровень 1) C4145 | "expression1": реляционное выражение как выражение switch; возможная путаница с выражением "expression2" |
Предупреждение компилятора (уровень 2) C4146 | оператор unary минус, примененный к типу без знака, результат по-прежнему не назначен |
Предупреждение компилятора (уровень 2) C4150 | удаление указателя на неполный тип "type"; деструктор не вызывается |
Предупреждение компилятора (уровень 4) C4152 | нестандартное расширение, преобразование указателя данных и функции в выражении |
Предупреждение компилятора (уровень 1) C4153 | преобразование указателя на функцию в указатель на данные (или наоборот) в выражении |
Предупреждение компилятора (уровень 1) C4154 | удаление выражения массива; преобразование в предоставленный указатель |
Предупреждение компилятора (уровень 1) C4155 | удаление массива без использования формы оператора "delete", предусмотренной для массива |
Предупреждение компилятора (уровень 2) C4156 | удаление выражения массива без использования формы массива delete; Заменена форма массива |
Предупреждение компилятора (уровень 1) C4157 | pragma игнорируется компилятором C |
Предупреждение компилятора (уровень 1) C4158 | Предположим #pragma pointers_to_members(full_generality, , что "inheritance_type") |
Предупреждение компилятора (уровень 3) C4159 | #pragma Pragma(pop,...) : выскочил ранее отправленный идентификатор "идентификатор" |
Предупреждение компилятора (уровень 1) C4160 | #pragma Pragma(pop,...) : не нашли ранее отправленный идентификатор "идентификатор" |
Предупреждение компилятора (уровень 3) C4161 | #pragma "pragma"(pop...) : больше всплывающих, чем толкает |
Предупреждение компилятора (уровень 1) C4162 | "идентификатор": не найдена функция с компоновкой C |
Предупреждение компилятора (уровень 1) C4163 | "идентификатор": недоступно в качестве встроенной функции |
Предупреждение компилятора (уровень 1) C4164 | "function": встроенная функция не объявлена |
Предупреждение компилятора (уровень 3, выключен) C4165 | "" преобразуется в "HRESULT bool "; вы уверены, что это то, что вы хотите? |
Предупреждение компилятора (уровень 1) C4166 | недопустимое соглашение о вызове для конструктора или деструктора |
Предупреждение компилятора (уровень 1) C4167 | "function": доступно только как встроенная функция |
Предупреждение компилятора (уровень 1) C4168 | Ограничение компилятора: из типов отладчика, удаление базы данных программы "база данных" и перестроение |
Предупреждение компилятора (уровень 1) C4172 | возврат адреса локальной переменной или временных optional_context |
Предупреждение компилятора (уровень 1) C4174 | "name": недоступно в качестве #pragma component |
Предупреждение компилятора (уровень 1) C4175 | #pragma component(browser, on) : сведения о браузере должны быть изначально указаны в командной строке. |
Предупреждение компилятора (уровень 1) C4176 | "subcomponent": неизвестная подкомпонентная для #pragma component браузера |
Предупреждение компилятора (уровень 1) C4177 | #pragma Pragma следует использовать только в глобальной области или области пространства имен. |
Предупреждение компилятора (уровень 1) C4178 | case константная "константная" слишком большая для типа выражения коммутатора |
Предупреждение компилятора (уровень 4, больше не выдаваемое) C4179 | '//* ': синтаксический анализ как "" и/\* "/ : путаница со стандартными комментариями "// " |
Предупреждение компилятора (уровень 1) C4180 | квалификатор, примененный к типу-функции, не имеет смысла; пропуск |
Предупреждение компилятора C4181 | квалификатор, применяемый к ссылочным типам; Игнорировать |
Предупреждение компилятора (уровень 1) C4182 | #include Уровень вложения nest_count глубоким; возможно бесконечное рекурсии |
Предупреждение компилятора (уровень 1) C4183 | "идентификатор": отсутствующий тип возвращаемого значения; предполагается, что функция-член возвращает "int " |
Предупреждение компилятора (уровень 1) C4185 | игнорируя неизвестный #import атрибут "атрибут" |
Предупреждение компилятора (уровень 1) C4186 | # атрибут импорта "атрибут" требует аргументов "argument_count"; игнорируется |
Предупреждение компилятора (уровень 1) C4187 | #import Атрибуты "attribute1" и "attribute2" несовместимы; оба игнорируются |
Предупреждение компилятора (уровень 1) C4188 | неполное константное выражение |
Предупреждение компилятора (уровень 3 и уровень 4) C4189 | "идентификатор": локальная переменная инициализирована, но не ссылается |
Предупреждение компилятора (уровень 1) C4190 | "identifier1" имеет указанную компоновку C, но возвращает идентификатор UDT2, несовместимый с C |
Предупреждение компилятора (уровень 3, выключен) C4191 | "operation": небезопасное преобразование из "type_of_expression" в "type_required" Вызов функции с помощью результирующего указателя может привести к сбою программы |
Предупреждение компилятора (уровень 3) C4192 | автоматическое исключение "идентификатор" при импорте библиотеки типов "library" |
Предупреждение компилятора (уровень 3) C4193 | #pragma warning(pop) : нет сопоставления '#pragma warning(push) ' |
Предупреждение компилятора (уровень 1) C4194 | #pragma start_map_region не может быть вложено; Игнорировать |
Предупреждение компилятора (уровень 1) C4195 | #pragma stop_map_region используется без сопоставления #pragma start_map_region ; игнорируется |
Предупреждение компилятора (уровень 1) C4196 | ожидаемый "token1" или "token2"; найден "token3" |
Предупреждение компилятора (уровень 3) C4197 | "type": верхний уровень volatile приведения игнорируется |
Предупреждение компилятора (уровень 1, уровень 2, уровень 3 и уровень 4) C4199 | message |
См. также
Компилятор C/C++ и средства сборки ошибок и предупреждений
Предупреждения компилятора C4000 — C5999