Фатальна помилка значення. Фатальна помилка в Автокаді Unhandled e0434352h Exception – способи розв'язання. D.1.Повідомлення про помилки компілятора

«Фатально» – це як? Часто доводиться чути це слово у різних контекстах, тому завжди ясно його значення. Сьогодні ми прояснимо сенс прислівника та деяких словосполучень із ним.

«Фатум» – це доля

Справді, з латинського «фатум» – це доля. Тому з легкістю можна встановити, що фатально – це:

  1. Щось загадкове, фатально визначальне життя людини.
  2. Те, що передбачає трагедію, можливо смерть.

Але не варто лякатися, найчастіше мова все ж таки не йде про смерть, а, швидше, про приречення. Наприклад, можна чути від коментаторів матчів командних видів спорту: "Ця помилка голкіпера виявилася фатальною для команди". Адже глядачі розуміють: воротар не спричинив смертельну хворобу для всіх своїх одноклубників, і вони не померли після матчу. В даному випадку помилка голкіпера фатальна, бо вона визначила результат матчу, виявилася доленосною. "Фатально" - це те, у чого не може бути щасливого фіналу.

Фаталізм та волюнтаризм

Дивно, але те, що пов'язане з фатумом, не наділяється людиною позитивним змістом.

Є взаємовиключні одна одну системи - фаталізм та волюнтаризм. З фаталізмом все ясно - це думка, яка вважає: у світі немає свободи, і все підпорядковане єдиному задуму долі. Причому, хоч би як там було, але фаталіст - це не обов'язково песиміст. Це люди, які вірять у долю, вважають, що їм обов'язково пощастить принаймні деякі з них. Інша річ, що щастить їм рідко, але це не має значення. Найчастіше фаталізм передбачає неабияку частку песимізму і приреченості. Про фаталізм люди згадують зазвичай, коли людина котиться похилою площиною.

А що ж “волюнтаризм”? Термін знайомий радянському та російському глядачеві з фільму «Кавказька бранка» Л. Гайдая. Але мало хто знає, що він означає. А поняття передбачає таке переконання: головною рушійною силою у світі є свобода людини чи Бога (або те, що Його замінює). І хотілося б сказати, що волюнтаризм, на відміну фаталізму, оптимістичний, але, згадуючи мислителів, які дотримувалися цієї доктрини (Ф. Ніцше, А. Шопенгауер), якось мову не повертається. Основна відмінність фаталізму і волюнтаризму криється в наступному: одні вважають, що свободи немає, інші, що немає нічого, крім свободи. Так чи інакше, «фатально» - це те, що нічим добрим для людини точно не закінчиться.

Мартін Іден як приклад трагічної долі

Роман Джека Лондона - вічний твір, він оповідає про бій людини з долею та життям. Погано в цьому творі те, що автор мав певну ідеологічну установку: любов - це головна рушійна сила у світі. І поки герой Лондона думав, що його любить Рут, він долав себе, розвивався. Адже Мартін Іден – самородок. Але варто було головному герою зрозуміти, що Рут - пустушка, він відразу знітився. Для тих, хто не читав, не розкриватимемо всіх карт, але скажемо: зустріч з Рут визначила фатальний результат (що це означає, зрозуміло з контексту, а якщо не зрозуміло, то читайте Джека Лондона) долі Мартіна Ідена.

Долева помилка автора

Джек Лондон - автор вічний, тобто його читатимуть, доки існує англійська мова і люди, здатні з нього перекладати, але він теж допустив промах, який дорого обійшовся його герою. Проникливий читач зрозуміє, про що йдеться. Джек Лондон вважав: найголовніше в житті - це кохання, а коли людина позбавлена ​​любові, то їй і жити нема чого. Жертвою саме такої настанови і став Мартін Іден. І це цілком підходить під визначення «фатальна помилка» - це те, що визначило долю героя, зіграло з ним злий жарт. Системоутворююче переконання про кохання Джека Лондона знецінило всю боротьбу Мартіна Ідена за право бути самим собою.

У цьому Додатку наведено список повідомлень про помилки, на які ви можете натрапити в процесі розробки програм, і, крім того, дає короткий опис дій, які ви повинні зробити для виправлення помилок. Нижче наведено список, де шукати помилкові повідомлення різних компонентів компілятора Microsoft Quick-C:

Компонент Розділ Компілятор Microsoft Quick-C Розділ D.1, "Повідомлення про помилки компілятора. Командний рядок, що використовується Розділ D.2, "Повідомлення про помилки для виклику компілятора Quick-C командного рядка". Бібліотеки виконуючої системи Розділ D.3, " Повідомлення про помилки Microsoft C та інші ситуації періоду виконання". періоду виконання. Оверлейний компоновщик Microsoft, Розділ D.4, "Повідомлення про помилки утиліта LINK. компановщика". Диспетчер бібліотек фірми Розділ D.5, "Повідомлення про помилки Microsoft-утиліта LIB утиліти LIB". Утиліта підтримки розробки Розділ D.6, "Повідомлення про помилки програм MAKE утиліти MAKE". Зверніть увагу, що всі помилкові повідомлення компілятора, командного рядка, періоду виконання наведено в цьому додатку в алфавітному порядку.

У розділі D.1.4 ви знайдете інформацію про обмеження компілятора, а в розділі D.3.3 – обмеження періоду виконання.

D.1.Повідомлення про помилки компілятора.

Повідомлення про помилки, отримані при збоях СІ-компілятора, поділяються на три категорії:

1. Повідомлення про фатальні помилки.

2. Повідомлення про помилки компіляції.

3. Попереджувальні повідомлення.

Повідомлення кожної категорії наведені нижче в пронумерованому порядку, з коротким поясненням кожної помилки. Щоб знайти потрібне повідомлення, спочатку визначте категорію повідомлення, а потім знайдіть відповідний номер помилки. Кожне повідомлення, згенероване серед Quick-C, з'являється у вікні помилок; курсор встановлюється на рядку, що спричинив помилку (подробиці у Розділі 7.3.4). Кожне повідомлення про помилку, згенероване під час компіляції за допомогою команди QCL, містить ім'я файлу та номер рядка, що спричинив помилку.

Повідомлення про фатальні помилки.

Повідомлення про фатальну помилку позначає деяку проблему, яка забороняє компілятор подальше виконання. Цей тип повідомлення має такий формат:

ім'я файлу(рядок): fatal error C1xxx: текст повідомлення Після того, як компілятор висвітить повідомлення про фатальну помилку, він завершить виконання без створення об'єктного файлу та будь-якої перевірки на наступні помилки.

Повідомлення про помилки компілятора.

Повідомлення про помилки компілятора відображають реальні програмні помилки. Дані повідомлення відображаються в наступному форматі:

ім'я файлу (рядок): error C2xxx: текст повідомлення

Компілятор у разі не створює об'єктний файл для вихідного файлу, у якому компілятор виявив помилки. Якщо компілятор зустрічає такі помилки, він намагається їх виправити. Якщо це можливо, він продовжує обробку вихідного файлу та видає помилкові повідомлення. Якщо помилок занадто багато, або вони занадто серйозні, компілятор припиняє роботу.

Попереджувальні повідомлення.

Попереджувальні повідомлення мають лише інформативний характер; вони не переривають процес компіляції чи компоновки. Дані повідомлення з'являються у такому форматі:

ім'я файлу(рядок): warning C4xxx: текст повідомлення

Ви можете використовувати опцію /W для керування рівнем повідомлень, що генеруються компілятором. Ця опція описана в Розділі 9.3.1.

D.1.1. Повідомлення про фатальні помилки.

Наступні повідомлення ідентифікують фатальну помилку. Компілятор не може виправити фатальну помилку; він припиняє роботу після друку повідомлення про помилку. Номер Повідомлення про фатальну помилку C1000 "Невідома фатальна помилка, зв'яжіться з Технічним сервісом Microsoft". Компілятор виявив невідому помилку. Будь ласка, повідомте фірмі Microsoft Corporation умови виникнення цієї помилки за допомогою спеціальної форми "Product Assistan Request" на обкладинці цього посібника. C1001 "Внутрішня помилка компілятора, зв'яжіться з Технічним сервісом Microsoft". Компілятор виявив внутрішню невідповідність. Будь ласка, повідомте умови виникнення цієї помилки за допомогою бланка "Product Assistance Request" на обкладинці даного посібника. Будь ласка, увімкніть у ваше повідомлення ім'я файлу та номер рядка, що спричинив помилку; Зверніть увагу, що "ім'я файлу" стосується внутрішнього файлу компілятора, а не вашого вихідного файлу. C1002 "Вихід за межі динамічної області". Компілятор вийшов за межі динамічної області пам'яті. Ця ситуація зазвичай означає, що ваша програма має надто багато символічних імен та/або комплексних виразів. Щоб уникнути цієї проблеми, розділіть файл на кілька менших вихідних файлів або розбийте вирази на менші вирази. C1003 "Лічильник помилок перевищив n; компіляцію зупинено". Помилок у програмі занадто багато, або вони занадто серйозні, щоб можливе відновлення, компілятор повинен перервати виконання. C1004 "Несподіваний кінець файлу (EOF). Дане повідомлення з'являється, якщо у вас недостатньо пам'яті на стандартному дисковому пристрої, щоб компілятор створив потрібні тимчасові файли. Потрібний простір приблизно в 2 рази більше розміру вихідного файлу. Це повідомлення може бути також згенеровано , якщо коментар не має закриваючого обмежувача (*/), або якщо директиві #if не вистачає закриваючої директиви #endif. C1005 "Рядок занадто великий для буфера". компілятора". Компілятор не може створити проміжні файли, що використовуються в процесі компіляції. До цієї помилки зазвичай наводять такі ситуації: 1.Занадто мало файлів у рядку files = number файлу CONFIG.SYS (компілятор вимагає щоб число number було не менше 15) 2.Не вистачає пам'яті на пристрої, що містить проміжні файли компілятора. C1007 "Нерозпізнаний прапор "string" в "option"" string-в опції командного рядка option не є коректною опцією. C1009 "Обмеження компілятора, можливо рекурсивно певне макровизначення". Розширення макрокоманди перевищує розмір доступної пам'яті. Перевірте, чи не було рекурсивно-визначених макрокоманд, або не дуже великий текст, що розширюється. C1010 "Обмеження компілятора: макророзширення занадто велике". Розширення макрокоманди перевищує доступну пам'ять. C1012 "Неправильне вкладення дужок-пропущений "character" (символ)". Невідповідність дужок у директиві препроцесора; "character" - це або ліва, або права дужка. C1013 "Неможливо відкрити вихідний файл "filename"". Цей файл "filename" або не існує, або не може бути відкритий, або не знайдений. Переконайтеся, що параметри установки середовища коректні, і що для файлу встановлено коректне ім'я маршрута. C1014 "Занадто багато файлів, що включаються". Вкладення директив #include перевищує 10-рівневу межу. C1015 "Неможливо відкрити файл "filename", який вмикається. Цей файл або немає, або може бути відкритий, або знайдено. Переконайтеся, що параметри невизначеності середовища задані коректно, і ви визначили коректне ім'я маршруту для цього файлу. C1016 "Директиві #if [n]def потрібен ідертифікатор". З директивами #ifdef та #ifndef ви обов'язково повинні використовувати ідентифікатор. C1017 "Неправильне вираження цілої константи". Вираз у директиві #if має обчислюватись у константу. C1018 "Несподівана директива #elif". Поява директиви #elif дозволена лише всередині директив #if, #ifdef або #ifdef. C1019 "Несподівана директива "#else"". Поява директиви #else можлива лише всередині директив #if, #ifdef або #ifndef. C1020 "Несподівана директива #endif" Директива #endif з'явилася без відповідної директиви #if, #ifdif або #ifndef. C1021 "Неправильна команда препроцесора "string"" Символи, що йдуть за знаком (#) формують неправильну директиву препроцесора. C1022 "Очікується директива #endif". Директива #if, #ifdef або #ifndef не закінчується директивою #endif. C1026 "Переповнення стеку, будь ласка, спростіть вашу програму." Ваша програма не може бути далі оброблена, оскільки пам'ять, потрібна для "розбору" програми, переповнює стек компілятора. Щоб вирішити цю проблему, спростіть вашу програму. C1027 "Обмеження компілятора: вкладення структур/сумішей". Визначення структур та сумішей вкладено понад 10 разів. C1028 "Сегмент segment займає більше 64К" У даному сегменті розміщено понад 64 "далеких" даних. Один модуль може мати не більше 64К "далеких" даних. Щоб вирішити цю проблему, або розбийте пояснення на окремі модулі, скоротите загальний обсяг використовуваних даних, або відкомпілюйте вашу програму за допомогою компілятора Microsoft-C, що оптимізує. C1032 "Неможливо відкрити файл, який містить об'єктний листинг "filename"". Має чинність одне з таких тверджень, що стосуються імені файлу або імені маршруту: 1. Дане ім'я неправильне. 2.Файл з цим ім'ям не може бути відкритий через брак пам'яті. 3.Вже існує файл з даним ім'ям та атрибутом "тільки-читання". C1033 "Неможливо відкрити вихідний файл мовою асемблер "filename"". Одна з умов, розглянутих в описі помилки із кодом C1032, призвела до неможливості відкрити цей файл. C1034 "Неможливо відкрити вихідний файл "filename"". Одна з умов, розглянутих в описі помилки із кодом C1032, призвела до неможливості відкрити цей файл. C1035 "Вираз є занадто складним, будь ласка, спростіть". Компілятор не зміг створити код для складного вираження. Щоб вирішити цю проблему, розбийте вираз більш прості подвиражения і повторіть компіляцію. C1036 "Неможливо відкрити файл, який містить вихідний листинг "filename"". Одна з умов, розглянутих в описі помилки з кодом C1032, призвела до неможливості відкриття файлу. C1037 "Неможливо відкрити файл "filename"". Одна з умов, розглянутих в описі помилки із кодом C1032, призвела до неможливості відкрити цей файл. C1039 "Переповнення динамічної області, що не відновлюється, в третьому проході компілятора": У третьому оптимізуючому проході компілятор переповнив динамічну область і припинив роботу. Спробуйте повторити компіляцію з увімкненою опцією Optimizations (у середовищі програмування Quick-C), або з опцією /Od (у командному рядку QCL), або спробуйте відокремити функцію, що містить рядок, що спричинив помилку. C1040 "Несподіваний EOF у вихідному файлі "filename"". У процесі створення листингу вихідного файлу або вихідного/об'єктного файлу компілятор виявив несподіваний кінець файлу. Ця помилка сталася, ймовірно, якщо вихідний файл було відредаговано у процесі компіляції. C1041 "Неможливо відкрити проміжний файл компілятора більше немає". Компілятор не може створити проміжний файл, який використовується під час компіляції, оскільки більше немає логічних номерів файлів. Ця помилка може бути виправлена ​​шляхом зміни рядка files=number у файлі CONFIG.SYS, щоб задати більшу кількість одночасно відкритих файлів (рекомендується призначити число 20). C1042 "Неможливо відкрити проміжний файл компілятора - немає такого файлу або каталогу". Компілятор не може створити проміжні файли, що використовуються в процесі компіляції, оскільки в змінному операційному середовищі TMP заданий неправильний каталог або маршрут. C1043 "Неможливо відкрити проміжний файл компілятора". Компілятор не може створити проміжні файли, які використовуються під час компіляції. Точна причина невідома. C1044 "Нестача дискової пам'яті для проміжного файлу компілятора" Через брак пам'яті компілятор не може створити проміжний файл, який використовується в процесі компіляції. Щоб виправити цю ситуацію, звільніть місце на диску та повторіть компіляцію. C1045 "Переповнення під час операції з плаваючою точкою". Компілятор отримав помилку під час присвоєння арифметичних кон- стант елементам з плаваючою точкою, як у наступному прикладі: float fp val = 1.0e100; У цьому прикладі константа подвійний точності 1.0е100 перевищує максимально-допустиме значення даних з плавучою точкою. C1047 "Занадто багато опцій "string"". Ця опція згадується дуже багато разів. Рядок "string" містить опцію, що викликала помилку. C1048 "Невідома опція "character" у "optionstring"". Символ є некоректною літерою для опції "optionstring". C1049 "Неправильний числовий аргумент "string"". Замість string очікувався числовий аргумент. C1050 "Сегмент коду "segmentname" занадто великий". У процесі компіляції сегмент коду зріс межі 36 байтів від 64К. В даному випадку використовується 36-байтовий заповнювач, оскільки збій на деяких платах мікропроцесорів 80286 можуть викликати непередбачувану поведінку програм, якщо серед інших умов розмір кодового сегмента знаходиться в межах 36 байтів від 64К. C1052 "Занадто багато директив #if/#ifdef"s". У програмі перевищено максимальну кількість рівнів вкладення ді- #if/#ifdef. C1053 "Розміщення даних DGROUP перевищує 64К". У стандартному сегменті даних було розміщено більше 64К змінних. Для програм компактної, середньої та великої моделі пам'яті виконуйте компіляцію за допомогою команди QCL, використовуючи опцію /GT для розміщення елементів даних в окремих сегментах. - Заторів. Межа - від 10 до 15 рівнів, залежно від комбінації типів, що ініціалізуються. Щоб вирішити цю проблему, для скорочення рівнів вкладеності спростіть тип даних, що ініціалізуються, або після опису надавайте початкове значення в окремих операторах. C1056 "Обмеження компілятора: переповнення в процесі макророзширення". Компілятор переповнив внутрішній буфер під час розширення макрокоманди. C1057 "Несподіваний EOF у макро-розширенні; (пропущено ")"?)". Компілятор виявив кінець вихідного файлу у процесі складання аргументів макродзвінка. Зазвичай, це є результатом опущеної правої дужки, що закриває) в макро-виклику, як і в наступному прикладі: #define print(a) printf(string is(,#a)) main() ( print(the quick brown) fox; ) C1059 "Перевищені межі "ближньої" динамічної області". При розміщенні елементів даних у "ближній" динамічній області (стандартний сегмент даних) компілятор вийшов за допустимі межі. C1060 "Перевищені межі "дальньої" динамічної області" При розміщенні елементів даних у "далекій" динамічній області компілятор вийшов за допустимі межі пам'яті.Зазвичай дана помилка відбувається у вбудованих в пам'ять програмах, тому що таблиця імен містить занадто багато імен. виконати компіляцію з вимкненою опцією Debug, або спробуйте підключити менше файлів, що включаються: Якщо такий спосіб не рятує ситуацію, виконайте компіляцію програми за допомогою команди QCL C1061 "Обмеження компілятора: занадто глибоке вкладення блоків". Вкладеність блоків у даній прогамі перевищує можливості компілятора. Для виправлення цієї ситуації перепишіть програму так, щоб вкладеність блоків була меншою. C1063 "Обмеження компілятора-переповнення стека компілятора". Ваша програма надто складна, оскільки призвела до переповнення стека. Спростіть вашу програму та повторіть компіляцію.

D.1.2. Повідомлення про помилки компілятора.

Повідомлення, наведені нижче, означають, що ваша програма має помилки. Коли компілятор зустрічає одну з помилок, перелічених у цьому розділі, програма продовжує розглядатися (якщо можливо), причому продовжують виводитися повідомлення про помилки, що залишилися. Однак об'єктний файл не будується. Номер Повідомлення про помилки компілятора C2000 "Нерозпізнана помилка. Зверніться до Технічного сервісу Microsoft". Компілятор не може визначити тип виявленої помилки. Будь ласка, повідомте умову виникнення цієї помилки у фірмі Microsoft, скориставшись спеціальним бланком "Product Assistance Reguest", що знаходиться на обкладинці цього посібника. C2001 "У константі виявлено символ переходу на новий рядок (newline)". Символ переходу на новий рядок у символьній або рядковій константі використовується не в коректній формі послідовності, що управляє (/n). C2002 "Фактичні параметри макрокоманди перевищують допустимі межі пам'яті". Аргументи макро-препроцесора перевищують 256 байтів. C2003 "Потрібен ідентифікатор". Ідентифікатор для перевірки умови #if не знайдено. C2004 "Потрібен ідентифікатор". Директива #if викликала синтаксичну помилку. C2005 "У директиві #line потрібний номер рядка". У директиві #line бракує заданого номера рядка. C2006 "Директиві #include потрібне ім'я файлу". Директива #include не має специфікації імені файлу. C2007 "Синтаксична помилка директиви #define". У директиві #define було виявлено синтаксичну помилку. C2008 ""character": неможливий у макровизначенні". Цей символ був використаний у макровизначенні некоректно. C2009 "Повторне використання формального параметра "identifier" макровизначення". Цей ідентифікатор був використаний двічі у списку формальних параметрів макровизначення. C2010 "character": неможливий у формальному списку". Цей символ був некоректно використаний у списку формальних параметрів макровизначення. C2011 "identifier": визначення занадто велике. Це макровизначення перевищує 256 байтів. C2012 "Пропущено ім'я, наступне за"<"". В директиве #include не хватает требуемой спецификации имени файла. C2013 "Не хватает знака "> "". У директиві #include пропущено закриваючу кутову дужку (>) C2014 "Команда препроцесора повинна починатися з першого значущого (не пробельного) символу". У директиві препроцесора на тому ж рядку з'явилися не пробільні символи перед знаком #. C2015 "Надто багато символів у константі". Символьна константа містить більше одного символу, або була використана послідовність, що управляє. C2016 "Відсутня закриваюча одинарна лапка". Символьна константа була укладена в одинарні лапки. C2017 "Некоректна керуюча послідовність". Символ або символи, що йдуть за знаком (\) не мають коректної форми для керуючої послідовності. C2018 "Невідомий символ Oxcharacter". Це шістнадцяткове число не відповідає символу. C2019 "Потрібна команда препроцесора, виявлено символ "character"" Цей символ слідує за знаком (#), але не є першою літерою директиви препроцесора. C2020 "Неправильне вісімкове число "character"". Цей символ не є коректною вісімковою цифрою. C2021 "Число "number" дуже велике для символу". Число "number" занадто велике, щоб представляти символ. C2023 "Поділ на нуль". Другий операнд операції поділу (/) при обчисленні дає нуль. що може призвести до непередбачуваних результатів. C2024 "По модулю 0". Другий операнд у залишку операції (%) при обчисленні дає нуль, що може призвести до непередбачуваних результатів. C2025 "identifier": перевизначення типу enum/struct/union. Цей ідентифікатор вже був використаний у перерахуванні, структурі або тезі суміші. C2026 "identifier": перевизначення числа перерахування. Цей ідентифікатор вже був використаний у константі перерахування, або в тому самому типі перерахування, або в іншому типі перерахування в тому самому вигляді. C2028 "Член структури/суміші повинен знаходитися всередині структури/суміші" Члени структури або суміші повинні бути описані всередині структури або суміші. Ця помилка може бути викликана описом перерахування, що містить опис члена структури, як у наведеному нижче прикладі: enum a ( january, february, int march; /* опис структури: ** некоректно */ ); C2029 "identifier": бітові поля дозволені тільки в структурах. Лише структури можуть містити бітові поля. C2030 "identifier": перевизначення члена структури/суміші. Цей ідентифікатор був більше одного разу використаний як член однієї і тієї ж структури/суміші. C2031 "identifier": функція не може бути членом структури або суміші. Ця функція була описана як член структури або суміші. Щоб виправити цю помилку, скористайтеся вказівником на функцію. C2032 "identifier": базовий тип з ключовими словами near/far/huge не дозволений. Цей член структури або суміші був описаний з ключовими словами far і near. C2033 "identifier": до бітових полів не можна застосовувати оператор непрямого обігу (*)". Дане поле було описано як покажчик (*), що не дозволено. C2034 "identifier": бітове поле занадто мало для даної кількості розрядів. Кількість розрядів, задана в описах бітового поля, перевищує кількість розрядів у данеод базовому т(пе. C2040 "". "вимагає ім'я структури або суміші". Вираз перед оператором вибору структури або суміші (.) є покажчиком C2041 "Ключове слово "enum" некоректне". В описі структури або суміші з'явилося ключове слово "enum", або визначення типу "enum" було сформовано некоректно. ключові слова signed/unsigned є взаємовиключними". Обидва ключові слова signed і unsigned були одночасно використані в одному описі, як у наступному прикладі: unsigned signed int i; C2043 "Некоректний оператор break". Оператор break дозволений тільки всередині операторів do , for, while або switch C2044 "Некоректний оператор continue". Оператор continue дозволений тільки всередині оператора do, for, або while. C2045 ""identifier": повторне визначення мітки". ної і тієї ж функції. C2046 "Некоректне ключове слово case". Ключове слово case може знаходитись лише всередині оператора switch. C2047 "Некоректне ключове слово default". Ключове слово default може знаходитись лише всередині оператора switch. C2048 "Більше одного default". Оператор switch містить більше однієї мітки default. C2050 "Не цілий вираз switch". Вираз switch не є цілим. C2051 "Вираз case не константний". Вирази case мають бути цілими константами. C2052 "Вираз case не є цілим". Вирази case мають бути цілими константами. C2054 "Значення case "number" вже було використане". Це значення case вже було використане в операторі switch. C2054 "Потрібен знак "(" після ідентифікатора "identifier"). За контекстом потрібні дужки після функції "identifier". C2055 "Потрібен список формальних параметрів, а не тип list". У визначенні функції замість списку формальних параметрів з'явився тип аргументу list . C2056 "Некоректний вираз". Через попередню помилку вираз є некоректним (Попередня помилка могла не викликати помилкового повідомлення). C2057 "Потрібен константний вираз". По контексту потрібен константний вираз. C2058 "Константний вираз не є цілим". По контексту потрібен цілий константний вираз. C2059 "Синтаксична помилка: token". Ця лексема викликала синтаксичну помилку. C2060 "Синтаксична помилка: EOF". Виявили несподіваний кінець файлу, що викликало синтаксичну помилку. Ця помилка може бути викликана опущеною закриваючою дужкою ")" в кінці вашої програми. C2061 "Синтаксична помилка: ідентифікатор "identifier"". Цей ідентифікатор викликав синтаксичну помилку. C2062 "Тип "type" не потрібний". Цей тип був некоректно використаний. C2063 "identifier": не є функцією. Цей ідентифікатор не оголошений як функція, але зроблено спробу використовувати його як функцію. C2064 "Цей терм не обчислюється у функцію". Зроблено спробу виклику функції за допомогою виразу, який під час обчислення не дає покажчик функції. C2065 "identifier": не визначено. Цей ідентифікатор не визначено. C2066 "Перетворення до функції неправильне". Об'єкт було перетворено на тип функції. C2067 "Перетворення типу масиву некоректно". Об'єкт було перетворено на тип масиву. C2068 "Некоректне наведення типів". Тип, який використовується у наведенні типів, не є коректним. C2069 "Приведення типу void до типу, що не є void". Тип void був приведений до іншого типу. C2070 "Некоректний операнд sizeof". Операнд виразу size не є ідентифікатором, або найменуванням типу. C2071 "class": неправильний клас пам'яті. Цей клас пам'яті не може бути використаний у такому контексті. C2072 "identifier": ініціалізація функції. Було зроблено спробу ініціалізації функції. C2073 "identifier": неможливо ініціалізувати масив у функції. Була зроблена спроба проініціалізувати цей масив усередині функції. Масив можна пориніціалізувати лише на зовнішньому рівні. C2074 "У функції заборонено ініціалізувати структуру або суміш". Була зроблена спроба проініціалізувати цю структуру чи суміш усередині функції. Структури та функції можуть бути проініціалізовані лише на зовнішньому рівні. C2075 "identifier": ініціалізація масиву вимагає лише фігурних дужок. При ініціалізації масиву було пропущено фігурні дужки (). C2076 "identifier": ініціалізація структури або суміші вимагає лише фігурних дужок. При ініціалізації структури чи суміші пропустили фігурні дужки (). C2077 "Нецілісний ініціалізатор поля "identifier"". Було зроблено спробу ініціалізації члена структури-бітового поля нецілим значенням. C2078 "Занадто багато ініціалізаторів". Кількість ініціалізаторів перевищує кількість об'єктів, що ініціалізуються. C2079 ""identifier"-невизначена структура або суміш". Цей ідентифікатор був описаний як структура або суміш, тип якої не визначений. C2082 "Повторне визначення формального параметра "identifier"". Формальний параметр функції було повторно описано у тілі функції. C2083 "Масив "identifier" вже має розмір". Розмірність даного масиву вже була описана. C2084 "Функція "identifier" вже має тіло". Ця функція вже була визначена. C2085 "identifier": не в списку формальних параметрів. Цей параметр був оголошений у визначенні функції для несучого формального параметра. C2086 "identifier": перевизначення. Цей ідентифікатор було визначено більше одного разу. C2087 "identifier": пропущений описувач. У визначенні масиву з кількома описниками було опущено значення описувача для розмірності, відмінної від першої, як у прикладі: int func(a) char a; /* некоректно */ ( . . . ) int func(a) char a; /* коректно */ ( . . . ) C2088 "Використання невизначеного ідентифікатора "identifier" переліку/структури/суміші". Цей ідентифікатор звертається до структури або суміші, тип якої не визначено. C2089 "typedef визначає функцію near/far". Використання ключових слів near або far в оголошенні typedef не узгоджується з використанням ключових слів near або far для оголошеного елемента, як у наведеному нижче прикладі. typedef int far FARFUNC(); FARFUNC near *fp; C2090 "Функція повертає масив". Функція не може повертати масив (вона може повертати лише вказівник на масив). C2091 "Функція повертає функцію". Функція не може повертати функцію (вона може повертати лише вказівник на функцію). C2092 "Елемент масиву не може бути функцією". Масиви функцій забороняються; однак, можна використовувати масиви покажчиків на функції. C2093 "Неможливо ініціалізувати статичні дані або структури адресами автоматичних змінних". C2098 "Неадресний вираз". Було зроблено спробу ініціалізації елемента даних, що не є адресним виразом. C2099 "Неконстантне усунення". Ініціалізатор використав неконстантне усунення. C2100 "Некоректне використання оператора (*)". Оператор (*) був застосований до невказівника. C2101 "&" в константі". Оператор (&) не має адресного значення як операнда. C2102 "&" потрібне адресне значення". Оператор адресації (&) повинен застосовуватись до адресного значення. C2103 ""&" у регістровій змінній". Було зроблено спробу взяти адресу регістрової змінної. C2104 "&" у бітовому полі". Було зроблено спробу взяти адресу битового поля. C2105 "operator" вимагає адресного значення. Цей оператор немає адресного операнда. C2106 "operator": лівий операнд повинен бути адресним. Лівий операнд цього оператора не є адресним. C2107 "Некоректний індекс, непряме найменування (*) не дозволено". Описувач був застосований до виразу, який не обчислюється в покажчик. C2108 "Не-цілий індекс". Як описувач масиву було використано не-ціле вираження. C2109 "Описувач у не-масиві". Описувач був використаний у змінній, яка не є масивом. C2110 "+": 2 покажчика". Була зроблена спроба скласти один покажчик з іншим. C2111 "Покажчик + неціле значення". Була зроблена спроба скласти не ціле значення з покажчиком. C2112 "Некоректне віднімання покажчиків". Була зроблена спроба відняти покажчики, які не вказують на той самий тип. C2113"-": правий операнд-покажчик". Правий операнд в операції віднімання (-) є покажчиком, а лівий операнд-ні. C2114 ""operator": покажчик зліва; потрібне ціле праворуч". Лівий операнд у цьому операторі є покажчиком; правий операнд має бути цілим значенням. C2115 "identifier": несумісні типи. Вираз містить несумісні типи. C2116 "operator": неправильний лівий (або правий) операнд. Заданий операнд цього оператора не відповідає оператору. C2117 Operator: Некоректно для структури або суміші. Значення структури та суміші не дозволено з цим оператором. C2118 "Негативний описник". Значення, що визначає розмір масиву, негативно. C2119 "typedefs" обидва визначають непряме найменування (*)". Були використані одночасно два типи typedef для оголошення елемента даних і обидва типи typedef мають непряме найменування. Наприклад, оголошення p у наступному прикладі-некоректно: typedef int * P INT; typedef short *P SHORT; /* дане оголошення некоректне */ P SHORT P INT P; C2120 ""void"-некоректно з усіма типами". Тип void був використаний у оголошенні з іншим типом. C2121 "typedef визначає інше перерахування". Була спроба використовувати тип, оголошений в операторі typedef для завдання як типу перерахування, так і іншого типу. C2122 "typedef визначає іншу структуру". Була зроблена спроба використовувати тип, оголошений в операторі typedef, для завдання як типу структури, так і іншого типу. C2123 "typedef визначає іншу суміш". Була зроблена спроба використовувати тип, оголошений в операторі typedef, для завдання як типу суміші, так і іншого типу. C2125 ""idetifier": пам'ять, зайнята даними, перевищує 64К": Цей елемент даних перевищує граничний розмір 64К. C2126 "identifier": дані типу automatic перевищують розмір 32К. Пам'ять, зайнята локальними змінними функціями, перевищує задану межу. C2127 "Пам'ять, зайнята параметрами, перевищує 32К". Пам'ять, потрібна для парметрів функції перевищує межу 32К. C2129 "Статична функція "identifier" не знайдена". Було зроблено посилання на статичну функцію, яку ніколи не було визначено. C2130 "#line потрібен рядок, який містить ім'я файлу". У директиві #line було опущено ім'я файлу. C2131 "Атрибути near/far/huge задані більше одного разу". Ключові слова near і far були застосовані до елемента даних більше одного разу, як у наступному прикладі: typedef int near NINT; NINT far a; /* некоректно */ C2132 "Синтаксична помилка: несподіваний ідентифікатор". Ідентифікатор з'явився у синтаксично некоректному форматі. C2133 "Масив "identifier": невідомий розмір" Зроблено спробу описати масив з непризначеним розміром, як у наступному прикладі: int mat add(array1) int array1; /* коректно */ ( int array2; /* некоректно */ . . . ) C2134 " "identifier": структура чи суміш занадто великі". Розмір структури або суміші перевищує межу, встановлену компілятором (232 байтів). C2135 "Пропущено знак ")" у макророзширенні". У зверненні до макрокоманди з аргументами була опущена дужка, що закриває. C2137 "Порожня символьна константа". Була використана некоректна порожня символьна константа (" "). C2138 "Невідповідність закриває межі коментаря "/*"". Компілятор виявив обмежувач коментаря (/*), що відкриває, без відповідного закриваючого обмежувача (*/). Ця помилка може виникнути через спробу використання некоректних вкладених коментарів. C2139 "Тип, за яким слідує "type", некоректний". Некоректна комбінація типів, як у прикладі: long char a; C2140 Тип аргументу не може бути функцією, що повертає. ..". Функція була оголошена як формальний параметр іншої функції, як у наступному прикладі: int funcl (a) int a(); /* некоректно */ C2141 "Для константи перерахування значення перевищує допустимі межі". Константа перерахування має значення, що перевищує допустимі межі для типу int. C2142 "Для крапки потрібно три точки". Компілятор очікує появи перед token2-token1. Це повідомлення може з'явитися, якщо пропущено необхідну закриваючу фігурну дужку ()), праву дужку ()) або точку з комою (;). "token" перед типом "type"". Компілятор вимагає наявності даної лексеми перед цим типом. Це повідомлення може з'явитися попередньо пропущеною закриваючою фігурною дужкою ()), правою дужці ()), або точкою з комою (;). C2145 "Синтаксична помилка : перед ідентифікатором не вистачає лексеми "token". Компілятор потребує наявності перед ідентифікатором цієї лексеми. Це повідомлення може з'явитися при пропущеній точці з комою (;) в останньому оголошенні блоку. C2146 "Синтаксична помилка: перед ідентифікатором "identifier" не вистачає лексеми "token"". Компілятор вимагає наявності цієї лексеми перед цим ідентифікатором. C2147 "Масив: невідомий розмір". Зроблено спробу збільшити індекс, або покажчик на масив, базовий тип якого ще не оголошено. C2148 "Занадто великий масив". Масив перевищує максимально допустимий розмір (232 байти). C2149 "identifier": дане бітове поле не може мати нульову ширину. Бітове поле з даним ім'ям має нульову ширину. Нульовий розмір дозволяється мати лише неназваним бітовим полям. C2150""identifier": бітове поле повинно мати тип int, signed int або unsigned int. Стандарт ANSI C вимагає, щоб бітові поля мали типи int, signed int або unsigned int. Це повідомлення може з'явитися тільки при компіляції з опцією /Za. "Задано більше одного атрибуту cdecl/fortran/pascal". Було задано більше одного ключового слова, що визначає угоду про виклик функцій. C2152 ""identifier": покажчики на функції з різними атрибутами". - ну з одними угодами про зв'язки (cdecl, fortran або pascal)- -вказівнику на функцію, оголошену з іншими угодами про зв'язки. C2153 "Шістнадцяткові константи повинні мати принаймні одну шістнадцяткову цифру". Ox або OX є некоректними шістнадцятковими константами. За "x" або "X" повинна слідувати хоча б одна шістнадцятерична цифра. C2154 "name": не відноситься до сегменту. Ім'я функції name було першим ідентифікатором, заданим в аргументному списку прагми alloc_text, і вже визначено як якесь ім'я, відмінне від імені сегмента. C2155 "Назва "name": вже є в сегменті". Ім'я функції name з'являється більш ніж в одній прагмі alloc_ text. C2156 "Прагма має бути на зовнішньому рівні". Деякі прагми мають бути визначені на глобальному рівні, поза тілом функції, а одна з таких прагм виявилася всередині функції. C2157 ""name": перед використанням у списку прагми це ім'я має бути описане". Перед включенням до списку дане ім'я функції зі списку функцій прагми alloc_text не було описано. C2158 "name": є функцією. Ім'я name було задано у списку змінних прагми same_seg, але раніше було оголошено як функцію. C2159 "Визначено більше одного класу пам'яті". В описі було задано більше одного класу пам'яті, як у наведеному нижче прикладі: extern static int i; C2160 "## не може зустрітися на початку макро-визначення". Макро-визначення починається з оператора підстановки лексем, як у прикладі: #define mac(a,b) ##a... C2161 "## неспроможна перебувати наприкінці макро-определения". Макро-визначення закінчується оператором підстановки лексем (##). C2162 "Потрібен формальний параметр макрокоманди". Лексема, що йде за оператором (#), не є ім'ям формального параметра, як у наступному прикладі: #Define print(a) printf(#b) C2163""string": відсутня, як intrinsic". Функція, визначена у списку функцій для прагми intrinsic або function, не є однією з наявних у формі intrinsic функцій. C2165 "keyword": неможливо змінити вказівники на дані. Були некоректно використані ключові слова fortran, pascal або cdecl для модифікації покажчика на дані, як у прикладі: char pascal *p; C2166 "Значення визначає об'єкт, що відноситься до класу пам'яті "const"". Було зроблено спробу надати значення елементу даних, оголошеному з класом пам'яті const. C2167 ""name": занадто багато фактичних параметрів для intrinsic. Посилання на ім'я intrinsic function містить занадто багато фактичних параметрів. C2168 ""name": занадто мало фактичних параметрів для intrinsic". Посилання на ім'я містить дуже мало фактичних параметрів. C2169 ""name": є intrinsic воно не може бути визначено ". Була зроблена спроба задати визначення для функції, вже описаної як intrinsic. C2171 ""оператор": невірний операнд". Цей унарний оператор був використаний з операндом некоректного типу, як у наведеному нижче прикладі: int (*fp)(); double d, d1; . . . fp++; d=~d1 C2172 ""function": фактично не покажчик, параметр номер "number". Була зроблена спроба передати аргумент, що не є покажчиком, функції, що потребує покажчик. Цей номер вказує, який аргумент є помилковим. C2173 "" function": фактично не покажчик, параметр "number": список параметрів "number"". Була зроблена спроба передати аргумент, що не є вказівником, функції, що потребує покажчик. Ця помилка може статися у викликах, що повертають покажчик на функцію Перший номер вказує, який аргумент викликав помилку, другий номер показує, який список аргументів містить невірний аргумент C2174 "function": фактично має тип void: параметр "number", список параметрів "number" зроблено спробу передати аргумент типу void функції Формальні параметри та аргументи функції не можуть мати тип void, однак вони можуть мати тип void* (покажчик на void) Ця помилка відбувається у викликах, що повертають покажчик на функцію. який аргумент спричинив помилку; Другий номер показує, який список аргументів містить неправильний аргумент. C2175 ""function": невирішене зовнішнє посилання". Ця функція не визначена у вихідному файлі, або вбудована в програмне середовище QUICK-C, або знаходиться в бібліотеці QUICK, якщо вона завантажена. Ця помилка виникає лише в одномодульних, вбудованих у середу Quick-C програмах. Щоб вирішити цю проблему, або визначте функцію у вихідному файлі, або завантажте бібліотеку QUICK, що містить цю функцію, або (якщо функція міститься в стандартній бібліотеці СІ-функцій), створіть програмний список. C2177 "Константа занадто велика". Інформація була втрачена, оскільки константа дуже велика, щоб замінити тип, якому вона присвоюється. (1)

D.1.3. Попереджувальні повідомлення.

Повідомлення, перелічені в цьому розділі, розкривають деякі можливі проблеми, але не заважають компіляції та компонування. Номер у дужках наприкінці повідомлення про помилку означає мінімальний рівень попередження, встановлений для цього повідомлення. Номер Попереджувальне повідомлення C4000 "Нерозпізнане попередження, зв'яжіться з технічним сервісом Microsoft". Компілятор виявив невідому помилку. Будь ласка, повідомте умови виникнення цієї помилки фірмі Microsoft Corporation, скориставшись бланком "Product Assistant Request", що знаходиться наприкінці цього посібника. C4001 "Макрокоманда "identifier" вимагає параметрів". Цей ідентифікатор був визначений як макрокоманда, що має один або більше аргументів, але використовується у програмі без аргументів. (1). C4002 "Занадто багато фактичних параметрів для макрокоманди "identi-fier"". Число фактичних аргументів, що вживаються з даним ідентифікатором, більше, ніж кількість формальних параметрів, заданих у макровизначенні даного ідентифікатора. (1). C4003 "Недостатньо фактичних параметрів для макрокоманди "identifier"". Число фактичних аргументів, що вживаються з даним ідентифікатором, менше, ніж кількість формальних параметрів, заданих у макровизначенні даного ідентифікатора. (1). C4004 "Не вистачає дужки, що закриває, після "defined"". Після фрази #if defined пропущена дужка, що закриває. (1). C4005 "identifier": повторне визначення. Цей ідентифікатор було повторно визначено. (1). C4006 "Директиві #indef потрібен ідентифікатор". У директиві #indef встановлено ідентифікатор, визначення якого відсутнє. (1). C4009 "Рядок занадто великий, хвостові символи відсікаються". Розмір рядка перевищує межу, встановлену компілятором. Для виправлення цієї ситуації розбийте рядок на два або більше підрядки. (1). C4011 "Ідентифікатор усічено до "identifier"". Приймаються лише перші 31 символ ідентифікатора. (1). C4014 ""identifier": бітове поле повинно мати тип unsigned. Дане бітове поле не було описано з типом unsigned. Побутові поля повинні бути описані, як цілі без знака. Компілятор відповідно конвертує дане бітове поле. (1). C4014 "" identifier": бітове поле повинно мати цілий тип". Дане бітове поле було описано, не як ціле. Бітові поля повинні бути описані, як цілі без знака. , що повертається функцією". Ця функція ще не була описана або визначена, тому тип значення, що повертається невідомий. Мається на увазі стандартний тип (int). (2). C4017 "Приведення цілого виразу до "далекого" покажчика". Далекі вказівники містять повні адреси сегментів. На процесорі 8086/8088 приведення цілого (int) значення до "далекого" покажчика може створити адресу з безглуздим значенням сегмента. (1). C4020 "Надто багато фактичних параметрів". Кількість аргументів, визначених у виклику функції, більша за кількість формальних аргументів, заданих у списку аргументів визначення функції. (1). C4021 "Надто мало фактичних параметрів". Число аргументів, заданих у виклику функції, менше кількості формальних параметрів, визначених у списку аргументів визначення функції. (1). C4022 "Невідповідність покажчиків: параметр n". Тип покажчика цього параметра відрізняється від типу покажчика, заданого у списку аргументів визначення функції. (1). C4024 "Різні типи: параметр n". Тип параметра функції не узгоджується з типом, заданим у списку аргументів визначення функції. (1). C4025 "Опис функції визначає змінний список аргументів". Список типів аргументів визначення функції закінчується комою, за якою слідує багатокрапка, що означає, що функція може приймати змінну кількість аргументів, але для функції не були описані формальні параметри. (1). C4026 "Функція була описана зі списком формальних параметрів". Функція була описана як приймаюча аргументи, але у визначенні функції не встановлено формальних параметрів. (1). C4027 "Функція була описана без переліку формальних параметрів". Функція була описана як не приймаюча аргументів (список типів аргументів складається зі слова void), але у визначенні функції задані формальні параметри, або у виклику функції задані фактичні параметри. (1). C4028 "Відрізняється опис параметра n". Тип цього параметра не узгоджується з відповідним типом у списку типів аргументів, або з відповідним формальним параметром. (1). C4029 "Опис списку параметрів на відміну від визначення": Список типів аргументів, заданий в описі функції, не погоджується з типами формальних параметрів, заданих у визначенні функції. (1). C4030 "Перший список параметрів довший за другий". Функцію було описано більше одного разу, причому з різними списками типів аргументів. (1). C4031 "Другий список параметрів довше першого". Функцію було описано більше одного разу, причому з різними списками типів аргументів. (1). C4032 "Неіменована структура/суміш як параметр". Тип структури чи суміші було передано як неіменований аргумент, тобто опис формального параметра неспроможна використовувати ім'я і має описати тип. (1). C4033 "Функція має повертати значення". Якщо функція не описана як void, вона повинна повертати значення. (2). C4034 "Оператор sizeof повернув 0". Оператор sizeof був застосований до операнда, причому в результаті було отримано 0. (1). C4035 "identifier": немає значення, що повертається. Функція описана як повертає значення, але не робить цього. (2). C4036 "Неочікуваний перелік формальних параметрів". Список формальних параметрів було встановлено в описі функції. Список формальних параметрів ігнорується. (1). C4037 "identifier": формальні параметри ігноруються. В описі функції не знайдено перед описом формальних параметрів ні класу пам'яті, ні найменування типу, як у наведеному нижче прикладі: int * f(a,b,c); Формальні параметри ігноруються. (1). C4038 "identifier":формальний параметр має некоректний клас пам'яті. Цей формальний параметр був описаний із класом пам'яті, відмінним від auto або register. (1). C4039 ""identifier": функція використовується як аргумент" Формальний параметр функції був описаний як функція, що не- коректно.Формальний параметр буде перетворено на покажчик функції (1). C4040 "Ключове слово near/far/ в ідентифікаторі "identifier" ігнорується". Ключові слова near або far не впливають на цей ідентифікатор і тому ігноруються.(1). C4041 "Формальний параметр "identifier" перевизначений". Цей формальний параметр був визначений у тілі функції повторно, зробивши відповідний фактичний параметр для функції недоступним. (1). C4042 "identifier" має не коректний клас пам'яті. Зазначений клас пам'яті не може бути використаний у цьому контексті (наприклад, параметри функції не можуть бути присвоєні класу extern). Для даного контексту використано замість некоректного стандартний клас пам'яті. (1). C4043 "identifier": тип void змінений на int. Елемент даних, який відрізняється від функції, був описаний з типом void. (1). C4045 "identifier": масив переповнений. Для цього масиву було задано дуже багато ініціалізаторів. Зайві ініціалізатори будуть ігноровані. (1). C4046 "Знак "&" у функції/масиві ігнорується". Було зроблено спробу застосувати оператор адресації (&) до ідентифікатора, що позначає функцію або масив. (1). C4047 ""operator": різні рівні непрямого найменування". Цю ситуацію ілюструє такий приклад: char **p; char *q; . . . p=q; C4048 "Масив описаний за допомогою різних описувачів". Масив був описаний двічі з різними розмірами. Використовується великий розмір. (1). C4049""operator": непряме найменування застосовується до різних типів". Оператор непрямого найменування (*) був використаний у виразі для доступу до значень різних типів. (1). C4051 "Перетворення даних". У виразі два елементи даних мають різні типи, що призведе до перетворення даних до одного типу. (2). C4052 "Різні типи enum". У виразі були використані два різні типи enum. (1). C4053 "Принаймні один операнд void" Вираз з типом void був використаний як операнда. (1). C4056 "Переповнення в константній арифметиці". Результат операції перевищує 0x7FFFFFFF. (1). C4057 "Переповнення при перемноженні констант". Результат операції перевищує 0x7FFFFFFF. (1). C4058 "Взято адресу змінної кадру, DS!=SS". Програма була скомпілювана зі стандартним сегментом даних (DS), не рівним стековому сегменту (SS), програма намагається звернутися до змінної кадру за допомогою ближнього покажчика.(1) C4059 "В результаті перетворення адресу сегмента втрачено". Перетворення "далекого" покажчика (повної адреси сегмента) до "ближнього" покажчика (зміщення) призвело до втрати адреси сегмента. (1). C4060 "Перетворення "довгої" адреси на "коротку" адресу". Перетворення довгої адреси (32-розрядного покажчика) на коротку адресу (16-розрядного покажчика) призвело до втрати адреси сегмента. (1). C4061 "long/short невідповідність в аргументі: застосовано перетворення". Базові типи дійсних та формальних параметрів функції різні. Фактичний параметр перетворюється на тип формального параметра. (1) C4063 "identifier": функція занадто велика для кроку оптимізації. Ця функція була оптимізована, оскільки цього недостатньо пам'яті. Щоб виправити цю ситуацію, зменшіть розмір функції шляхом поділу її на дві або більше функцій. (0). C4066 "Таблиця локальних імен переповнена, деякі локальні імена можуть бути пропущені в списку". Генератор листингу вийшов за межі динамічної області, відведеної під локальні змінні, тому вихідний лістинг може не включати повну таблицю імен для всіх локальних змінних C4067 "За директивою "directive" слідують незрозумілі символи-потрібний символ переходу на наступну рядок". За директивою препроцесора слід зайві символи, як у наступному прикладі: #endif NO_EXT_KEYS Це приймається в деяких версіях компілятора Microsoft C, за винятком версії 1.0 Microsoft Quick C. (1). C4068 "Невідома прагма". Компілятор не зміг розпізнати прагму та ігнорував її. (1). C4069 "Перетворення ближнього покажчика до довгого цілого". Близький покажчик був перетворений на довге ціле, що заповнило старші розряди поточним значенням сегмента даних, не рівним нулю. (1). C4071 "identifier": прототип функції не заданий. Ця функція була викликана компілятором перед тим, як компілятор обробив відповідний прототип функції. (3). C4072 "Недостатньо пам'яті для обробки налагоджувальної інформації". Ви скомпілювали програму з опцією /Zi, але для створення відповідної налагоджувальної інформації недостатньо пам'яті. (1). C4073 "Вкладеність занадто глибока, подальша вкладеність під час налагодження ігнорується". Описи з'явилися на рівні вкладеності, більшому за 13. У результаті всі описи будуть сприйматися як би на одному рівні. (1). C4074 "Було використано нестандартне розширення-"extension"". Було використане дане нестандартне розширення в той час, як опція Language Extension у діалоговій рамці Compile була вимкнена або опція /Ze не діяла. Дані розширення наведено у Розділі 8.1.4.6. "Використання розширень мови СІ фірми Microsoft: Опція Language Extension". (якщо включена опція / Za, дана ситуація дає помилку). (3). C4075 "Розмір виразу в операторі switch або константа в операторі case мають занадто великий розмір-перетворюються до типу int". Значення, що з'являється в операторах switch або case, більше за тип int. Компілятор перетворює це некоректне значення на тип int. (1). C4076 "type": може використовуватися тільки з цілими типами. Модифікатор типу signed або unsigned був застосований до цілого типу, як у наступному прикладі: unsigned double b; C4077 "Невідома опція прагми check_stack". Зі старої форми прагми check_stack була задана невідома опція, як у наступному прикладі: #pragma check_stack yes У старій формі прагми check_stack аргумент прагми має бути порожнім + або -. C4079 "Несподіваний символ "character"". У аргументному списку прагми було знайдено несподіваний роздільник "character". C4080 "Пропущено ім'я сегмента". У першому аргументі аргументного списку прагми alloc_text пропущено ім'я сегмента. Це трапляється, якщо перша лексема в аргументному списку не є ідентифікатором. C4082 "Потрібен ідентифікатор". У списку аргументів прагми пропущено ідентифікатор. C4083 "Пропущено"("". У аргументному списку прагми пропущено ліву дужку, що відкриває, як у наступному прикладі: #pragma check_pointer on) C4084 "Потрібно ключове слово pragma". Лексема, яка слідує за ключовим словом pragma, не є ідентифікатором, як у наступному прикладі: #pragma (on) C4085 "Потрібна Для нової форми прагми check_stack був заданий некоректний аргумент, як у наступному прикладі: #pragma check_stack C4087 ""name": описана з порожнім списком параметрів". Ця функція була описана, як не приймає параметрів, в той час як виклик функції визначає фактичні параметри, як у наступному прикладі: int fl(void); . . . fl(10 C4090 "Різні атрибути "const". Вказівник на елемент даних, описаний як const, був переданий функції, відповідний формальний параметр якої є вказівником на елемент даних, що не є const. Це означає, що даний елемент даних може бути непомітно змінений, як у наведеному нижче прикладі: const char *p = "ascde"; int str(char *s); . . str(p); як у наступному прикладі (2): int;C4092 "Опис перерахування/структури/суміші не має імені". Компілятор виявив порожній опис, що використовує структуру, суміш або перерахування, що не має відповідного тега, як у наступному прикладі: struct ( . . . ); C4093 "Некоректний символ переходу на новий рядок у символьному контакті в коді, що не діє". Константний вираз у директиві препроцесора #if, #ifdef або #ifndef обчислюється в 0, що робить відповідний код неактивним, причому символ переходу на новий рядок з'являється в даному не активному коді між відповідними одиночними або подвійними лапками. C4095 "Занадто багато аргументів для прагми". У прагмі, що має лише один аргумент, з'являється більше одного аргументу. C4096 "Елемент типу huge трактується як far". Оскільки компілятор Microsoft Quick-C не підтримує ключове слово huge, елемент даних трактується як описаний з ключовим словом far. Якщо елемент даних або функція повинні все ж таки мати тип huge, перекомпілюйте програму за допомогою оптимізуючого компілятора Microsoft C. C4097 "У рядку зустрівся символ "hex-character", що не відноситься до коду ASCII". Цей ASCII-символ був використаний в даному символьному рядку.

D.1.4. Обмеження компілятора.

Для роботи з компілятором Microsoft Quick-C потрібно мати достатню кількість пам'яті для обробки тимчасових файлів, які використовуються для обробки. Потрібна пам'ять приблизно вдвічі більша, ніж розмір вихідного файлу.

У таблиці D.1 наводяться обмеження, що накладаються СІ-компілятором. Якщо ваша програма перевищує одну із заданих меж, вас інформує про це повідомлення про помилку.

Таблиця D.1. Обмеження СІ-компілятора. Елемент програми Опис Обмеження Рядкові літерали Максимальна довжина рядка, 512 байтів, що включає нульове закінчення (\0). Константи Максимальний розмір константи залежить від її типу; дивіться "Довідковий посібник з мови СІ". Ідентифікатори Максимальна довжина ідентифікації 31 байт (додаткові символи не сприймаються). Опис Максимальний рівень волого- 10 рівнів жіночості для визначення структури або суміші. Директиви препроцес-максимальний розмір макро-512 байтів. сміття визначення. Максимальна кількість 8 аргументів фактичних параметрів у макровизначенні. Максимальна довжина реально-256 байтів го аргументу препроцесора. Максимальний рівень вкладений-32 рівня директив #if, #ifdef, #ifndef. Максимальний рівень вкладеності - 10 рівнівності для файлів, що підключаються. Компілятор не встановлює явних обмежень на кількість і складність описів, визначень та операторів в окремих функціях або програмі. Якщо компілятор зустрічає функцію або програму надто велику чи надто складну для обробки, він виводить повідомлення про помилку.

D.2.Повідомлення про помилки в командному рядку.

Повідомлення, що вказують на помилки в командному рядку, який використовується для виклику компілятора, мають один з наступних форматів: command line fatal error D1xxx: messagetext Fatal error (Рокальна помилка командного рядка D1xxx: текст повідомлення Фатальна помилка) command line error D2xxx: messagetext Error (Помилка командного рядка D2xxx: текст повідомлення Помилка command line warning D4xxx: messagetext Warning (Попередження командного рядка D4xxx: текст повідомлення Попередження). Якщо можливо, компілятор продовжує роботу, роздруковуючи попереджувальне повідомлення. У деяких випадках помилки командного рядка є невиправними та компілятор припиняє роботу. Повідомлення, наведені в розділах D.2.1-D.2.3, описують помилки командного рядка.

D.2.1. Невиправні помилки командного рядка.

Наступні повідомлення описують фатальні помилки. Драйвер компілятора не може відновити роботу після фатальної помилки; він припиняє роботу після роздруківки повідомлення. Номер Повідомлення про фатальну помилку командного рядка D1000 Невідома фтатальна помилка командного рядка. Зверніться до технічної служби Microsoft. Компілятор виявив нерозпізнану невиправну помилку. Будь ласка, повідомте умови виникнення цієї помилки у фірмі Microsoft Corporation за допомогою форми Product Assistance Request, що знаходиться наприкінці цього посібника. D1001 "Неможливо виконати "filename"". Компілятор не може знайти цей файл у поточному робочому каталозі, або в інших каталогах, які визначаються за допомогою змінної PATH. D1002 "Занадто багато відкритих файлів неможливо переадресувати "filename"". Більше немає файлів, щоб переадресувати виведення опції /P у файл. Спробуйте змінити файл CONFIG.SYS і збільште значення num у рядку files=num (якщо num менше 20).

D.2.2. Повідомлення про помилки командного рядка.

Як тільки драйвер компілятора зустрічає одну з помилок, перелічених у цьому розділі, він (якщо можливо) продовжує компіляцію програми та виводить додаткові повідомлення про помилки. Однак об'єктний файл не будується. Номер Повідомлення про помилки командного рядка D2000 "Нерозпізнана помилка командного рядка, зверніться до технічного сервісу Microsoft". Компілятор виявив невідому помилку. Будь ласка, повідомте умови виникнення цієї помилки фірмі Microsoft Corporati- on, використовуючи бланк "Product assistance Request", що знаходиться в кінці цього посібника. D2001 "Надто багато імен визначено з -D". Занадто багато символічних констант було визначено за допомогою опції /D командного рядка. Звичайна межа визначень на командному рядку 16; якщо ви використовуєте опції /U або /u-межа збільшується до 20. D2002 "Попередньо певну модель було скасовано". Було визначено дві різні моделі пам'яті; використовується модель, задана на командному рядку пізніше. D2003 "Пропущено ім'я вихідного файлу". Ви не задали ім'я вихідного файлу, що компілюється. D2007 "Неправильно задана опція, слід замінити "string1" на "string2"". Ця опція була задана більше одного разу з конфліктуючими аргументами string1 та string2. D2008 "Надто багато прапорців опції "string"". Із заданою опцією було визначено дуже багато літер (наприклад, з опцією /O). D2009 "Невідомий символ опції "option string"". Одна з літер цієї настройки не розпізнана. D2010 "Невідома опція плаваючої точки". Ця опція плаваючої точки (опція /FP) не є коректною. D2011 "Дозволено лише одну опцію плаваючої точки". На командному рядку ви задали більше однієї опції плаваючої точки (/FP). D2012 "На командному рядку надто багато опцій компанувальника". Ви зробили спробу задати на командному рядку понад 128 окремих опцій та об'єктних файлів для компанівника. D2015 "Ассемблерні файли не обробляються". Ви задали на командному рядку ім'я файлу з розширенням ASM. Оскільки компілятор не може автоматично викликати макроассемблер (MASM), він не може асемлювати дані файли. D2018 "Неможливо відкрити файл комп'ютера cmd". Файл відповідності, який надсилає імена об'єктних файлів та опції компанувальнику, не може бути відкритий. Ця помилка може статися, якщо будь-який файл з атрибутом "тільки-читання" має те саме ім'я, що файл відповідностей компанівщика. D2019 "Неможливо перезаписати вихідний файл "name"". Ви задали вихідний файл як вивідний. Компілятор не дозволяє вихідному файлу бути перезаписаним одним із вихідних файлів компілятора. D2020 "Опція -Gc вимагає можливості дозволу розширених ключових слів (-Ze)". Опція /Gc та опція /Za були задані на одному командному рядку. Опція /Gc вимагає можливості завдання розширеного ключового слова cdecl, якщо здійснюється доступ до бібліотечних функцій. D2021 "Неправильний числовий аргумент "string"". Нечисловий рядок був заданий за опцією, що вимагає числового аргументу. D2022 "Неможливо відкрити файл допомоги cl.hlp". Була задана опція /HELP, але файл, що містить допоміжні повідомлення, не був знайдений у поточному каталозі, або в каталогах, заданих за допомогою змінної PATH.

D.2.3. Попереджувальні повідомлення командного рядка.

Повідомлення, перелічені в цьому розділі, описують можливі проблеми, але не переривають компіляцію та компонування. Номер Попереджувальні повідомлення D4000 "Невідоме попередження командного рядка, зв'яжіться з технічною службою Microsoft". Компілятором було виявлено невідому ситуацію. Будь ласка, повідомте умови виникнення цієї ситуації фірмі Microsoft Corporation, використовуючи бланк "Product Assistance Request", що знаходиться наприкінці цього посібника. D4002 "Невідома опція "string" ігнорується". Одна з опцій, заданих на командному рядку, була нерозпізнана і тому проігнорована. D4003 "Для створення коду вибрано 80186/286, а не 8086". Були задані обидві опції: /G0 та /G2; перевага дана опції / G2. D4004 "Оптимізація за часом, а не за розміром". Це повідомлення підтвердило використання для оптимізації опції /Ot. D4005 "Неможливо виконати "filename"; будь ласка, вставте дискету та натисніть будь-який ключ". Команда QCL не може знайти заданий файл за заданим маршрутом. D4006 "Дозволено лише одну з опцій -P/-E/-EP, вибрано -P". Було поставлено більше однієї вивідної опції препроцесора. D4007 "Опція -C ігнорується (потрібно також встановити -P або -E, або -EP)". Опція /C повинна використовуватися разом із однією з вивідних опцій препроцесора (/E, /EP, /P). D4009 "Поріг тільки для даних far/huge, ігнорується". Опція /Gt була використана в моделі пам'яті, що має близькі покажчики на дані. Вона може застосовуватися тільки для компактної та великої моделей. D4010 "Опція -Gp не застосовується, ігнорується". Версія операційної системи DOS Microsoft C не підтримує профайлінг. D4013 "Комбінований листинг має перевагу над об'єктним лістингом" Якщо опція /Fc задана разом з однією з опцій /Fl або /Fa, створюється комбінований лістинг (/Fc). D4014 "Неправильне значення number для рядка "string". Використовуєте стандартне значення number". У контексті, що потребує певного числового значення, було встановлено некоректне значення. D4017 "Конфліктуючі опції перевірки стека-перевірка стека скасовується". Ви задали на командному рядку CL обидві опції /Ge та /Gs. Опція Gs має перевагу, тому в даній програмі стековий контроль скасовується.

D.3. Повідомлення про помилки періоду виконання.

Помилки періоду виконання поділяються на чотири категорії: 1. Виняткові ситуації при виконанні операцій з плаваючою точкою математичним співпроцесором 8087/80287 або емулятором. Ці ситуації описані в Розділі D.3.1.

2. Повідомлення про помилки, згенеровані бібліотекою періоду виконання, що інформують вас про серйозні помилки. Дані повідомлення перелічені та описані у Розділі D.3.2.

3. Повідомлення про помилки, згенеровані під час звернення до процедур обробки помилок бібліотеки періоду виконання - abort, assert, perror-як тільки програма викличе процедуру. Ця процедура надсилає повідомлення до стандартного виведення. Опис цих процедур та відповідних повідомлень про помилки дивіться у документі: "Довідковий посібник з бібліотеки процедур Microsoft-C".

4. Повідомлення про помилки, згенеровані викликами математичних процедур із бібліотеки СІ періоду виконання. У разі помилки математичні процедури повертають помилкове значення, а деякі виводять повідомлення на стандартний висновок. Опис математичних процедур та відповідні повідомлення про помилки див. у документі "Довідковий посібник з бібліотеки Microsoft-C".

D.3.1. Виняткові ситуації операцій із плаваючою точкою.

Повідомлення про помилки, наведені нижче, генеруються математичним співпроцесором 8087/80287. Опис збоїв обладнання дивіться у документації з процесорів сімейства Intel. Ці помилки можуть бути також виявлені емулятором операцій з плаваючою точкою, вбудованим у стандартну бібліотеку Quick-C.

За допомогою призначень керуючого слова співпроцесора 8087/80287, наступні виняткові ситуації маскуються і тому не відбуваються.

ситуація

Занадто мале число Ситуація маскується Втрата значимості Результат наводиться до нуля Втрата точності Ситуація маскується Інформацію про те, як змінити керуюче слово операцій з плаваючою точкою, дивіться у довідкових сторінках, присвячених _control87, у документі "Довідковий посібник з бібліотеки процедур Microsoft C".

Крім того, такі помилки не виникають у коді, згенерованому за допомогою компілятора Microsoft Quick-C або отриманому за допомогою стандартної СІ-бібліотеки:

Квадратний корінь Вихід за нижню межу стека Неемулюється Виняткові ситуації при операціях з плаваючою точкою мають такий формат: run-time error M61nn: MATH - floating-point error: messagetext Номер Виняткові ситуації при операціях з точкою, що плаває М6101 "Неправильно". Відбулася некоректна операція. Зазвичай це відбувається при дії з невизначеністю. Ця помилка призводить до зупинення програми з кодом завершення 129. Номер Виняткові ситуації під час операцій з плаваючою точкою М6102 "Занадто мале число". Було згенеровано занадто мале число з плаваючою точкою, подальше його використання призведе до втрати значущості. Такі ситуації зазвичай маскуються, вони відловлюються та обробляються. Програма закінчується з кодом завершення 130. М6103 "Поділ на нуль". Була зроблена спроба поділу на нуль. Програма закінчується з кодом 131. М6104 "Переповнення". Під час операції з плаваючою точкою відбулося переповнення. Програма закінчується з кодом 132. М6105 "Втрата значущості". Під час операції з плаваючою точкою відбулася втрата значущості. Такі ситуації зазвичай маскуються; надто мале значення замінюється нулем. Програма закінчується з кодом завершення 133. М6106 "Втрата точності". Під час операції з плаваючою точкою сталася втрата точності. Ця ситуація зазвичай проходить непоміченою, оскільки майже всі операції з плаваючою точкою можуть призвести до втрати точності. Програма закінчується з кодом 134. М6107 "Неможлива емуляція" Була зроблена спроба виконати інструкцію співпроцесора 8087//80287, яка є некоректною та не підтримується емулятором. Програма завершується із кодом 135. М6108 "Квадратний корінь". Операнд операції вилучення квадратного кореня негативний. Програма завершується з кодом 136. (зверніть увагу, функція sqrt з бібліотеки процедур мови СІ перевіряє аргумент перед виконанням і повертає помилку, якщо аргумент від'ємний; опис функції sqrt дивіться в документі: "Довідкове посібник з бібліотеки процедур Microsoft-C": М6110 "Переповнення стеку" Вираз з плаваючою точкою призвело до переповнення стека на співпроцесорі 8087/80287 або емуляторі. кодом 138. М6111 "Вихід за нижню межу стека". Виконання операції з плаваючою точкою на співпроцесорі 8087/80287 або емулятор викликало вихід за нижню межу стека. Програма завершується з кодом 139. М6112 "Явно згенеровано помилку". Сигнал, що означає помилку при виконанні операції з плаваючою точкою, було надіслано за допомогою виклику raise (SIGFPE). Програма завершується із кодом 140.

D.3.1. Повідомлення про помилки періоду виконання.

Наступні повідомлення описують помилки, згенеровані під час виконання програми. Номери помилок періоду виконання лежать у межах від R6000 до R6999.

Повідомлення про помилки періоду виконання мають таку основну форму:

Run-time error R6nnn - messagetext (помилка періоду виконання R6nnn) (- текст повідомлення) Номер Повідомлення про помилку періоду виконання R6000 "Переповнення стеку". Ваша програма переповнила простір, відведений під стек. Це може статися, якщо ваша програма використовує велику кількість локальних даних або є рекурсивною. Програма завершується з кодом 255. Щоб виправити цю ситуацію, перекомпілюйте програму за допомогою команди QCL з опцією /F і перекомпануйте програму, використовуючи опцію компанівника /STACK для розміщення великого стеку R6001 "Привласнення нульового покажчика". У процесі виконання програми було змінено вміст сегмента NULL. Сегмент NULL – це спеціальне місце, розташоване за молодшими адресами пам'яті, яке зазвичай не використовується. Якщо вміст сегмента NULL змінився в процесі виконання програми, це означає, що програма була записана на цю галузь, зазвичай, через нульовий вказівник, застосований за недбалістю. Зауважимо, що ваша програма може містити нульові покажчики, але це повідомлення не буде генеруватися; це повідомлення з'являється тільки у випадку звернення до області пам'яті за допомогою нульового покажчика Дана помилка не буде викликати зупинку програми; за повідомленням про помилку слідує нормальне завершення програми. Помилка повертає ненульовий код завершення. Це повідомлення відображає можливість серйозних помилок у програмі. Хоча програма, в якій виникла така помилка, може працювати правильно, вона ймовірно дає помилки в майбутньому і може дати збій під час роботи в іншому операційному середовищі. R6002 "Бібліотека процедур операцій з плаваючою точкою не завантажена". Ваша програма вимагає бібліотеку з плаваючою точкою, але ця бібліотека не завантажена. Програма завершується помилково з кодом 255. Така помилка може статися в наступних двох ситуаціях: 1.Програма була скомпільована або скомпанована з такою опцією, як /FPi87, що вимагає співпроцесор 8087 або 80287, але програма виконується на машині, яка не має такого. Щоб виправити помилку, або перекомпілюйте програму з опцією /FPi, або встановіть співпроцесор. (У розділі 9.3.5 цього посібника ви знайдете більш детальну інформацію про дані опції та біліотеки. 2.Рядок формату для однієї з процедур сімейства printf або scanf містить специфікацію для формату з плаваючою точкою, у той час, як значень або змінних з плаваючою точкою у програмі немає. Компілятор Quick-C робить спробу мінімізувати розмір програми за допомогою завантаження бібліотеки підтримки плавучої точки тільки в разі нагальної потреби. Оскільки у форматних рядках не виявлено специфікацій плаваючої точки, необхідні процедури для роботи з плаваючою точкою не були завантажені. Для виправлення цієї помилки використовуйте будь-який аргумент з плаваючою точкою для відповідності заданої специфікації формату. Це призведе до того, що бібліотека підтримки плаваючої точки буде завантажена. R6003 "Ціле, поділене на нуль". Було зроблено спробу розділити ціле число на нуль, що дало невизначений результат. Програма завершується з кодом 255. R6004 "Потрібна версія DOS 2.0 або вище". Компілятор Quick-C не може працювати на версіях операційної системи DOS до 2.0. R6005 "Вистачає пам'яті для exec". Помилки з R6005 по R6007 відбуваються при збої в процедурах, викликаних однією з бібліотечних, коли операційна система DOS не може повернути керування батьківським процесом. Ця помилка показує, що для завантаження програми не вистачає пам'яті. R6006 "Неправильний формат для exec". Файл, який виконується однією з функцій exec, не має формату, який потрібно для файлу. R6007 "Некоректне середовище для exec". Під час виклику однієї з функцій exec операційна система DOS виявила некоректність середовища для дитячого процесу. R6008 "Не вистачає пам'яті для аргументів". R6009 "Не вистачає пам'яті для програмного середовища". Помилки R6008 і R6009 можуть статися при старті програми, якщо для завантаження програми вистачає пам'яті, але недостатньо місця для вектора argv або вектора envp або для обох. Щоб уникнути цієї проблеми, перепишіть процедури _setargv або _setenvp R6012 "Некоректне звернення до ближнього покажчика". У програмі було використано нульовий ближній покажчик. Ця помилка може статися лише при включеному контролі на покажчики (тобто, якщо програма була скомпілювана з опцією Pointer Check у діалоговій рамці Compile, опцією /Zr на командному рядку, або при діючій прагмі pointer_check). R6015 "Неочікуване переривання". Програма не може виконуватись, оскільки вона містить несподівані переривання. Коли переривання створюються у програмі з програмного списку, що працює у програмному середовищі, Quick-C автоматично створює об'єктні файли і передає компановщику. Об'єктні файли, передані компанію, містять переривання, необхідні для програмного середовища Quick-C. Однак, ви не зможете запускати програму, отриману з даних об'єктних файлів, поза програмним середовищем Quick-C.

D.3.3. Обмеження періоду виконання.

У таблиці D.2 наведено обмеження, що накладаються на програми під час виконання. Якщо програма порушує одне з цих обмежень, система видає відповідне повідомлення про помилку. Таблиця D.2. Програмні обмеження періоду виконання. Елемент даних Опис Обмеження Файли Максимальний розмір файлу 232-1 байт (4 гігабайти) Максимальне число одночасно від - 20 критих файлів (потоків). Командний рядок Максимальна кількість символів 128 (включаючи назву програми). Таблиця операції - Максимальний розмір. 32Конного середовища.

Примітка:

П'ять стандартних потоків відкриваються автоматично (stdin, stdout, stderr, stdaux, stdprn), залишаючи ще 15 потоків потреб програми.

D.4. Повідомлення про помилки компанувальника.

Даний розділ описує повідомлення про помилки, створені компанією LINK (Оверлейний компаній Microsoft). У разі фатальної помилки компановщик перериває виконання. Повідомлення про фатальні помилки мають такий формат:

місце виникнення: fatal error L1xxx: текст повідомлення Нефатальні помилки виявляють проблеми у файлі. Компанувальник LINK будує виконуваний файл. Нефатальні помилки мають такий формат:

місце виникнення: error L2xxx: текст повідомлення

Попередження також позначають можливі проблеми у файлі. Компанувальник LINK будує виконуваний файл. Попередження мають такий формат:

місце виникнення: warning L4xxx: текст повідомлення

У даних повідомленнях-місце виникнення-це вхідний файл, у якому виявлено помилку, або програма LINK, якщо вхідного файлу немає. Якщо вхідний файл є файлом.OBJ або.LIB і відомо ім'я модуля, ім'я модуля полягає в дужки, як показано в наступному прикладі:

SLIBC.LIB(file) MAIN.OBJ(main.c) TEXT.OBJ Помилки компонувальника можуть виникнути, як при неявному виклику за допомогою команди QCL, так і при явному виклику за допомогою команди LINK. Вони можуть також відбутися і при компіляції програми, що має програмний список, або коли ви створюєте на диску файл у середовищі Quick-C. Якщо помилка компонувальника виникає в програмному середовищі Quick-C, Quick-C висвічує повідомлення: Помилка в процесі компонування виконуваного файлу не створюється. Щоб переглянути помилки компанувальника, натисніть ENTER, або позначте "мишкою" командну кнопку OK. Помилки останнього проходу компанії зберігаються у файлі з ім'ям LINK.ERR. У цьому списку наведено помилки, які виникають під час кампанування об'єктних файлів за допомогою Microsoft Overlay Linker, LINK. Номер Повідомлення про помилку компанувальника L1001 "option": ім'я опції неясно". Після індикатора опції (/) не з'явилося унікальне ім'я опції. Наприклад, команда Link/Nmain; згенерує помилку, оскільки програма LINK не може визначити, яка з опцій, що починаються на букву "N", мають на увазі. L1002 ""option": нерозпізнане ім'я опції". За індикатором опції (/) з'явився нерозпізнаний символ, як у прикладі: LINK /ABCDEF main; L1004 ""option": неправильне числове значення". Для однієї з опцій було встановлено некоректне числове значення. Наприклад, для опції, яка потребує числового значення, заданий символьний рядок. L1006 "option": розмір стеку перевищує 65535 байтів. Розмір, визначений для стеку, перевищує 65 535 байтів. l1007 "option": номер переривання перевищує 255. Як значення опції /OVERLAYINTERRUPT вказано число, більше 255. l1008 ""option": занадто велика гранична кількість сегментів". Було встановлено граничну кількість сегментів, більшу за 3072 (за допомогою опції /SEGMENTS). L1009 "option": CPARMAXALLOC: некоректне значення. Число, визначене в опції /CPARMAXALLOC, не лежить в межах 1-65535. L1020 "Не задані об'єктні модулі". Для комп'ютера не вказано імена об'єктних файлів. L1021 "Неможливо вкладати файли відповідності". Один файл відповідності виявився всередині іншого файлу відповідності. L1022 "Файл відповідей занадто довгий". Рядок у файлі відповідностей довше 127 символів. L1023 "Виконання припинено користувачем". Ви натиснули CONTROL+C. L1024 "Вкладення правих дужок". У командному рядку вміст оверлея було написано некоректно. L1025 "Вкладення лівих дужок". У командному рядку вміст оверлея було написано некоректно. L1026 "Невідповідність правих дужок". У командному рядку у специфікації вмісту оверлею пропущено праву дужку. L1027 "Невідповідність лівих дужок". У командному рядку у специфікації вмісту оверлею пропущено ліву дужку. L1043 "Таблиця розподілу пам'яті переповнена". У програмі задано понад 32768 довгих викликів, довгих переходів або інших довгих покажчиків. Спробуйте замінити довгі посилання короткими, якщо можливо, і перебудувати об'єктний модуль L1045 "Занадто багато записів TYPDEF. Об'єктний модуль містить більше 255 записів TYPDEF. Дані записи описують спільні змінні. Така помилка може виникнути лише у програмах, створених компілятором Microsoft Qui або іншими компіляторами, що підтримують загальні змінні (TYPDEF-це термін операційної системи DOS. Він пояснюється в документі "Довідкове керівництво програміста з операційної системи MS-DOS фірми Microsoft" або інших довідкових книг за DOS.) L1046 "Занадто багато зовнішніх імен в одному модулі". В об'єктному модулі визначено більше 1023 зовнішніх імен. Розбийте модуль на менші частини. L1047 "Занадто багато імен груп, сегментів, класів в одному модулі". Програма містить занадто багато імен груп, сегментів, класів. Скоротіть кількість груп, сегментів або класів і перебудуйте об'єктний файл L1048 "Занадто багато сегментів в одному модулі". Розщепіть модуль або об'єднайте сегменти. L1049 "Занадто багато сегментів". Програма має більш ніж максимально дозволену кількість сегментів. (опція /SEGMENTS визначає максимально дозволене число; стандартно 128). Повторіть компанію з опцією /SEGMENTS з відповідним числом сегментів. L1050 "Занадто багато груп в одному модулі". Програма LINK виявила понад 21 визначення груп (GRPDEF) в одному модулі. Скоротіть кількість визначень груп або розщепіть модуль. (Визначення груп роз'яснюються в документі "Довідкове керівництво програміста з MS-DOS" та інших довідкових книгах по DOS. L1051 "Занадто багато груп". У програмі визначено більше 20 груп, крім DGROUP. Скоротіть кількість груп. L1052 "Занадто багато бібліотек". Було зроблено спробу скомпанувати більше 32 бібліотек. Об'єднайте бібліотеки, або використовуйте модулі, що вимагають меншої кількості бібліотек. L1053 "Переповнення таблиці імен". Компанувальник не має достатньо місця для розміщення таблиці імен програми (таких, як глобальні, зовнішні , імена сегментів, груп, класів, файлів). Об'єднайте модулі або сегменти та перебудуйте об'єктні файли. Виключіть стільки глобальних імен, скільки можливо. L1054 "Необхідна кількість сегментів занадто велика". Компанувальник не має достатньо пам'яті для розміщення таблиці, яка описує кількість необхідних сегментів (стандартне число 128 або значення, визначене опціями /SEGMENTS). Повторіть кампанування знову, використовуючи опцію /SEGMENTS для завдання меншої кількості сегментів (наприклад, 64, якщо раніше було використано стандартне значення), або звільніть деяку кількість пам'яті шляхом видалення резидентних програм або паралельних завдань. L1056 "Занадто багато оверлеїв". У програмі виразно понад 63 оверлєїв. L1057 "Запис даних занадто великий". Запис LIDATA (в об'єктному модулі) містить понад 1024 байти даних. Це помилка транслятора. (LIDATA це термін операційної системи DOS, його пояснення можна знайти в документі "Довідкове керівництво програміста з MS-DOS фірми Microsoft" або в інших довідкових книгах по DOS. Зверніть увагу, який транслятор (компілятор або асемблер) побудував некоректний об'єктний модуль Будь ласка, повідомте про цю помилку, використовуючи форму Product Assistance Request, що знаходиться в кінці цього посібника. L1070 ""name": розмір сегмента перевищує 64К". компіляцію і компанування у великій моделі пам'яті L1071 "Сегмент _TEXT більше 65520 байтів". Ця помилка найімовірніше може статися тільки в СІ-програмах малої моделі пам'яті, однак вона може статися і, якщо будь-яка програма з сегментом, названим _TEXT, компанією за допомогою команди LINK з опцією /DOSSEG.Програми на мові СІ малої моделі пам'яті повинні резервувати адреси коду 0 і 1. Для цілей вирівнювання ця межа збільшується до 16. L1072 "Загальна область більше 65536 байтів". Програма має понад 64 загальні змінні. Ця помилка не може виникнути в об'єктних файлах, згенерованих за допомогою макроассемблера MASM (Microsoft Macro Assembler). Вона виникає тільки в програмах, отриманих за допомогою компілятора, що підтримують загальні змінні. L1080 "Неможливо відкрити файл-листинг". Диск або кореневий каталог переповнено. Видаліть або перемістіть файли, щоб звільнити місце. L1081 "Переповнення під час запису виконуваного файлу". Диск, на який записується виконуваний файл.EXE, переповнений Звільніть місце на диску і повторіть компонування. L1083 "Неможливо відкрити файл, що виконується". Диск або кореневий каталог переповнено. Видаліть або перемістіть файли, щоб звільнити місце. L1084 "Неможливо створити тимчасовий файл". Диск або кореневий каталог переповнено. Звільніть місце на диску та повторіть компонування. L1085 "Неможливо відкрити тимчасовий файл". Диск або кореневий каталог переповнено. Видаліть або перемістіть файли, щоб звільнити місце. L1086 "Вистачає тимчасового файлу". Зауважте обставини виникнення цієї ситуації і зв'яжіться з фірмою Microsoft Corporation, скориставшись формою "Product Assitance Request", що знаходиться наприкінці цього посібника. L1087 "Несподіваний кінець тимчасового файлу". Диск з вихідним тимчасовим файлом компонувальника видалено. L1088 "Переповнення під час запису файла-листингу". Під час запису на диск файлу-листинга диск переповнився. Звільніть місце на диску та повторіть компонування. L1089 "filename": неможливо відкрити файл відповідності. Програма LINK не може знайти заданий відповідний файл. Зазвичай, це друкарська помилка при заданні імені файлу. L1090 ​​"Неможливо відкрити файл-листинг" За запитом оригінальний диск не замінено. Повторіть компа- новку. L1091 "Несподіваний кінець файлу в бібліотеці". Диск, що містить бібліотеку, був, ймовірно, видалений. Встановіть диск, що містить бібліотеку, і повторіть компонування. L1093 "filename":об'єктний файл не знайдений. Компанувальник не може знайти заданий об'єктний файл. Введіть правильне ім'я об'єктного файлу і повторіть кампанування. L1101 "Некоректний модуль об'єкта". Один із об'єктних модулів є некоректним. Якщо ця помилка сталася після перекомпіляції, будь ласка, зв'яжіться з фірмою Microsoft Corporation, скориставшись формою "Product Assitance Request", яка додається в кінці цього посібника. L1102 "Несподіваний кінець файлу". Для бібліотеки було виявлено некоректний формат. L1103 "Спроба звернення до даних, що лежать за межами сегмента". Заданий запис в об'єктному модулі продовжено за межі сегмента. Це помилка транслятора. Зауважте, який транслятор (компілятор або асемблер) створив некоректний об'єктний модуль і обставини, в яких він був створений. Будь ласка, повідомте про цю ситуацію фірму Microsoft Corporation, скориставшись формою "Product Assistance Request", що знаходиться в кінці цього посібника. L1104 "filename": некоректна бібліотека. Заданий файл не є коректним файлом бібліотеки. Ця помилка припиняє роботу програми LINK. L1113 "Нерозв'язана COMDEF; системна помилка". Зауважте обставини виникнення цього збою і зв'яжіться з Microsoft Corporation, скориставшись формою Product Assistance Request, що знаходиться в кінці цього посібника. L1114 "Файл не підходить для /EXEPACK; повторіть компонування без опції /EXEPACK". У програмі, що компанується, розмір упакованого завантажуваного образу плюс заголовок більше, ніж невпакований завантажуваний образ. Повторіть кампанування за допомогою опції /EXEPACK. L2001 "Запис fixup без даних". Запис FIXUPP не має безпосередньо попереднього запису даних. Ймовірно, це помилка компілятора. (Подробиці про FIXUPP дивіться у документі "Довідкове керівництво програміста з MS-DOS фірми Microsoft"). L2002 "Переповнення запису fixup при "ближньому" викликі "number" frame seg "segname" target seg "segname" target offset "number"" Цю помилку можуть викликати такі умови: -Програма компілюється в малій моделі пам'яті з опцією /NT. -Група більше 64К. -Програма містить міжсегментні короткі переходи або міжсегментні короткі виклики. -Ім'я елемента даних у програмі не відповідає процедурі з бібліотеки процедур, підключеної до компонування. -Оголошення EXTRN у вихідному файлі на яхі асемблер з'явилося в тілі сегмента, як у наступному прикладі: code SEGMENT public "CODE" EXTRN main:far start PROC "CODE" start PROC far call main start ENDP code ENDS Перепишіть вихідний файл та перебудуйте об'єктний файл. (Докладну інформацію про frame segment та target segment ви знайдете в документі "Довідкове керівництво програміста з MS-DOS фірми Microsoft".) L2003 "Далекий виклик на дані власного сегмента". Далі дзвінки на дані власного сегмента не дозволяються. L2005 Тип fixup не підтримується. Виявилося, що тип fixup не підтримується компанією фірми Microsoft. Ймовірно, це помилка компілятора. Зверніть увагу на обставини цієї помилки та повідомте їх у фірму Microsoft Corporation, скориставшись формою "Product Assistance Request", що знаходиться наприкінці цього посібника. L2012 "name": невідповідність розміру елемента масиву. "Далекий" загальний масив був описаний з двома або більше різними розмірами елементів масиву (наприклад, перший раз масив був описаний як масив символів, а вдруге, як масив дійсних чисел). L2013 "Запис LIDATA занадто великий". Запис LIDATA в об'єктному модулі має розмір понад 512 байт, максимально дозволеного розміру. Це помилка компілятора. Будь ласка, повідомте про умови виникнення цієї помилки у Microsoft, скориставшись формою "Product Assistance Request" наприкінці цього посібника. L2024 "name": ім'я вже визначено". Одне зі спеціальних оверлейних імен, необхідне підтримки оверлеїв, було визначено в об'єктному файлі. L2025 "name": ім'я визначено більше одного разу". Видаліть із об'єктного файлу зайві визначення імен. L2029 "Недозволені зовнішні посилання". В одному або більше модулів одне або більше імен описані як зовнішні, але вони не були визначені як публічні в жодному з модулів або бібліотек. Після повідомлення з'являється список нерозв'язаних зовнішніх посилань, як показано в прикладі: EXIT in file(s): MAIN.OBJ (main.for) OPEN in file(s): MAIN.OBJ (main.for) Ім'я, яке йде перед "in file(s)"-це недозволене зовнішнє ім'я. На наступному рядку є список об'єктних модулів, які мають посилання на це ім'я. Це повідомлення та список записуються також у файл картки розподілу пам'яті, якщо вона існує. L2041 "Стек плюс дані перевищує 64К". Загальний розмір стекового сегмента програми плюс DGROUP перевищує 64К; в результаті програма завантажується неправильно. L2043 "Стартова адреса__ aulstart не знайдена". Якщо ви будуєте бібліотеку Quick з використанням опції /Q, компановщик вимагає ім'я __aulstart, визначене як стартова адреса. L4003 "Недозволений виклик: зміщення offset". Ця помилка може бути викликана компіляцією програми малої моделі пам'яті з опцією /NT. L4012 "Опція /HIGH скасовує /EXEPACK". Опції /HIGH та /EXEPACK не можуть бути використані одночасно. L4015 "Опція /CODEVIEW скасовує /DSALLOCATE". Опції /CODEVIEW та /DSALLOCATE не можна використовувати одночасно. L4016 "Опція /CODEVIEW скасовує /EXEPACK". Опції /CODEVIEW та /EXEPACK не можна використовувати одночасно. L4020 "name": розмір сегмента коду перевищує 65500". Сегмент коду розміром 65501-65536 байтів у довжину може на процесорі Intel 80286 обробити некоректно. L4021 "Немає стекового сегмента". Програма не має стекового сегмента, визначеного з типом STACK. Це повідомлення не виникне при обробці модулів, скомпільованих за допомогою компілятора Microsoft Quick-C, але не за допомогою макроассемблера. Зазвичай кожна програма повинна мати стековий сегмент з типом об'єднання STACK. Якщо у вас є особливі причини не визначати стек або визначити його без типу об'єднання STACK, ви можете проігнорувати це повідомлення. Це повідомлення може бути отримане і при компануванні за допомогою LINK версій 2.40 і молодше, оскільки дані компані переглядають бібліотеки тільки один раз. L4031 "name": сегмент описаний більш, ніж в одній групі. Сегмент був описаний як член двох різних груп. Виправте вихідний файл та перебудуйте об'єктні файли. L4034 "Понад 239 оверлейних сегментів; зайві поміщені в корінь". В оверлеях не може бути оголошено понад 239 кодових сегментів. Всі сегменти над цією межею поміщаються в корінь. L4045 "Ім'я вихідного файлу "name"". Компанувальник висвітлив у запиті "Run file" стандартне вихідне ім'я файлу, але оскільки була використана опція /Q, ім'я вихідного файлу було змінено. L4050 "Надто багато глобальних імен". Для отримання відсортованого списку глобальних імен у файлі розподілу пам'яті була використана опція /MAP, але для сортування занадто багато імен (більше 2048 імен за замовчуванням). Повторіть опцію /MAP:number. Компанувальник видає невідсортований перелік світових імен. L4051 "filename": неможливо знайти бібліотеку. Компанувальник не може знайти заданий файл. Введіть нове ім'я, нову специфікацію маршруту або те й інше. L4053 "VM.TMP: неправильне ім'я файлу; ігнорується". Ім'я VM.TMP з'явилося як об'єктне ім'я файлу. Перейменуйте файл і повторіть компонування. L4054 "filename": неможливо знайти файл. Компанувальник не може знайти заданий файл. Введіть нове ім'я файлу, нову специфікацію маршруту або те й інше.

D.5.Повідомлення про помилки утиліти LIB.

Повідомлення про помилки, згенеровані адміністратором бібліотек, програмою LIB, має один із таких форматів: (filename|LIB): fatal error U1xxx: текст повідомлення (filename|LIB): error U2xxx: текст повідомлення (filename|LIB): warning U4xxx: текст Повідомлення Повідомлення починається ім'ям вхідного файлу (filename), якщо він існує, або ім'ям утиліти. Якщо можливо, програма LIB друкує попередження та продовжує роботу. У деяких випадках помилки невиправні та утиліта LIB припиняє роботу. Утиліта LIB може висвітлити такі повідомлення: Номер Повідомлення про помилки утиліти LIB U1150 "Розмір сторінки занадто малий". Розмір сторінки вхідної бібліотеки занадто малий, що означає неправильний вхідний файл.LIB. U1151 "Синтаксична помилка: неправильна специфікація файлу". Командний оператор, такий як знак мінус(-), був заданий без відповідного імені модуля. U1152 "Синтаксична помилка: найменування опції опущене". Знак опції слеш (/) був заданий без наступної опції. U1153 "Синтаксична помилка: значення опції пропущено". Опцію /PAGESIZE було встановлено без відповідного значення. U1154 "Невідома опція". Була задана невідома опція. На даний момент програма LIB розпізнає лише опції /PAGESIZE. U1155 "Синтаксична помилка: некоректне введення". Ця команда не слідує правильному синтаксису утиліти LIB, описаному в Розділі 10, "Створення бібліотек Quick та автономних бібліотек". U1156 "Синтаксична помилка". Ця команда не слідує правильному синтаксису утиліти LIB, описаному в Розділі 10, "Створення бібліотек Quick та автономних бібліотек". U1157 "Пропущена кома або символ переходу на новий рядок". У командному рядку очікувалося кома або повернення каретки, які не з'явилися. Це може означати ненавмисно поставлену кому, як у наступному рядку: LIB math.lib, -mod1+mod2; Цей рядок повинен мати такий вигляд: LIB math.lib -mod1+mod2; U1158 "Пропущено повернення каретки". Або відповідь на запит "Output library", або останній рядок у файлі відповідності, що використовується для запуску програми LIB, не закінчується поверненням каретки. U1161 "Неможливо перейменувати стару бібліотеку". Програма LIB не може перейменувати стару бібліотеку з розширенням.BAK, оскільки версія.BAK вже існує із захистом "тільки-читання". Змініть захист старої версії. U1162 "Неможливо повторно відкрити бібліотеку". Стару бібліотеку не можна повторно відкрити після того, як вона була перейменована з розширенням. BAK. U1163 "Помилка запису файлу перехресних посилань". Диск чи коренева директорія переповнені. Видаліть або перекомпілюйте файли, щоб звільнити місце. U1170 "Занадто багато імен". У бібліотечному файлі з'явилося понад 4609 імен. U1171 "Не вистачає пам'яті". Програмі LIB не вистачає пам'яті для роботи. Видаліть паралельні та резидентні програми та повторіть спробу або збільшіть пам'ять. U1172 "Не вистачає віртуальної пам'яті". Зверніть увагу на обставини цього збою та повідомите фірму Microsoft Corporation, скориставшись формою "Product Assistance Request", що знаходиться в кінці цього посібника. U1173 "Системний збій". Зверніть увагу на обставини цього збою та повідомите фірму Microsoft Corporation, скориставшись формою "Product Assistance Request", що знаходиться наприкінці цього посібника. U1174 "mark: не розміщено". Зверніть увагу на обставини цього збою та повідомите фірму Microsoft Corporation, скориставшись формою "Product Assistance Request", що знаходиться в кінці цього посібника. U1175 "free: не розміщено". Зауважте обставини цього збою і сповістіть Microsoft Corporation, скориставшись формою "Product Assistance Request", що знаходиться в кінці цього посібника. U1180 "Запис видобутого файлу зазнав невдачі". Диск або кореневий каталог переповнено. Видаліть або перемістіть файли, щоб звільнити місце. U1181 "Запис до бібліотечного файлу зазнав невдачі". Диск або кореневий каталог переповнено. Видаліть або перемістіть файли, щоб звільнити місце. U1182 "filename": неможливо створити файл, що вилучається. Диск або кореневий каталог переповнені, або заданий файл вже існує із захистом "тільки-читання". Звільніть місце на диску або змініть вигляд захисту файлу. U1183 "Неможливо відкрити відповідний файл". Цей файл відповідності не знайдено. U1184 "Несподіваний кінець файлу під час введення команди". У відповідь на запит виявили символ кінця файлу. U1185 "Неможливо створити нову бібліотеку". Диск або кореневий каталог переповнені, або бібліотечний файл вже існує із захистом "тільки-читання". Звільніть місце на диску або змініть атрибути захисту файлів бібліотеки. U1186 "Помилка запису нової бібліотеки". Диск або кореневий каталог переповнено. Видаліть або перемістіть файли, щоб звільнити місце. U1187 "Неможливо відкрити VM.TMP". Диск або кореневий каталог переповнено. U1188 "Неможливо записати в VM". Позначте обставини виникнення даного збою та повідомите фірму Microsoft Corporation, скориставшись бланком "Product Assistance Request", що знаходиться в кінці цього посібника. U1189 "Неможливо прочитати з VM". Зверніть увагу на обставини виникнення цієї помилки і повідомте фірму Microsoft Corporation, скориставшись бланком "Product Assistance Request", що знаходиться в кінці цього посібника. U1190 "Перервано користувачем". Ви закінчили роботу програми LIB до завершення роботи. U1200 ""name": некоректний заголовок бібліотеки". Вхідний файл бібліотеки має неправильний формат. Він або є бібліотечним файлом, або зруйнований. U1203 "name": некоректний об'єктний модуль за ближньою адресою. Модуль, заданий на ім'я "name", є некоректним об'єктним модулем. U2152 "filename": неможливо створити лістинг. Диск або каталог переповнені, або файл перехресних посилань вже існує із захистом "тільки-читання". Звільніть місце на диску або змініть атрибути файлу. U2155 "modulename": модуль не знайдено в бібліотеці; ігнорується. Заданий модуль не знайдено у вхідній бібліотеці U2157 "filename": неможливо отримати доступ до файлу. Програма LIB не могла відкрити цей файл. U2158 "libraryname": неправильний заголовок бібліотеки; файл ігнорується. Вхідна бібліотека має неправильний формат. U2159 "filename": неправильний формат "hexnumber"; файл ігнорується". Розпізнавальний байт слова "hexnumber" цього файлу не має одного з таких типів, що розпізнаються: бібліотека Microsoft, бібліотека Intel, об'єктний файл Micro-soft, архів XENIX. U4150 "modulname": перевизначення модуля ігнорується. Модуль був визначений для додавання до бібліотеки, але модуль з тим іменем вже є в бібліотеці. Або модуль з одним і тим же ім'ям поміщений в бібліотеку двічі. U4151 "symbol (modulename): перевизначення імені ігнорується". Задане ім'я визначено більше, ніж в одному модулі. U4153 "number": розмір сторінки занадто малий; ігнорується". Значення, визначене в опції /PAGESIZE менше 16. U4156 ""libraryname": специфікація вихідної бібліотеки ігнорується". На додаток до нового бібліотечного імена була задана вихідна бібліотека. Наприклад, задавши: LIB new.lib+one.obj, new .lst,new.lib де new.lib ще не існує-ви отримаєте помилку.

D.6. Повідомлення про помилки утиліти MAKE.

Помилки, що висвітлюються в процесі роботи утиліти підтримки програм Microsoft (MAKE), мають один з наступних форматів: (filename|MAKE): fatal error U1xxx: текст повідомлення (filename|MAKE): warning U4xxx: текст повідомлення Повідомлення починаються з імені вхідного файлу (filename) ), якщо вона існує, або з імені утиліти. Якщо можливо, утиліта MAKE друкує попередження та продовжує роботу. У деяких випадках помилки є невиправними та утиліта MAKE припиняє роботу. Повідомлення, що генеруються утилітою MAKE, перелічені у цьому розділі. Номер Повідомлення про помилки утиліти MAKE U1001 "Макровизначення більше ніж number". Було визначено макро, що має значення рядка, довше встановленого числа, що дозволяє максимальну довжину. Спробуйте переписати файл описів утиліти MAKE і розщепити макро на два менші. U1002 "Безкінечно рекурсивне макро". Було визначено циклічний виклик макрокоманд, як у прикладі: A=$(B) B=$(C) C=$(A) U1003 " Вихід межі пам'яті " . Під час обробки файлу описів утиліта MAKE вийшла межі пам'яті. Спробуйте скоротити розмір файлу описів утиліти MAKE шляхом його реорганізації чи розщеплення на менші. U1004 "Синтаксична помилка: пропущено ім'я макрокоманди". Файл описів утиліти MAKE містить макровизначення без лівої частини (тобто рядки, що починається з =). U1005 "Синтаксична помилка: пропущено двокрапку". У рядку, який повинен містити вихідний файл/вхідний файл, не вистачає двокрапки, що розділяє вихідний файл та вхідний файл. Утиліта MAKE вимагає будь-який рядок, за яким слідує порожній рядок, щоб вважати його рядком вихідного/вхідного файлу. U1006 "targetname": макророзширення більше числа "number". Макророзширення плюс довжина будь-якого рядка, з яким воно може бути об'єднане, довше встановленого числа. Спробуйте перезаписати файл описів утиліти MAKE, розшипивши макро на два менші. U1007 "Багато джерел". Правило висновку було визначено більше одного разу. U1008 "name": неможливо знайти файл або каталог. Заданий файл або каталог не можуть бути знайдені. U1009 "command": список аргументів занадто довгий. Командний рядок у файлі описів утиліти MAKE довший за 128 байтів, що максимально дозволено в DOS. Перепишіть команди, щоб зробити список аргументів коротшим. U1010 "filename": відмова доступу. Файл, визначений, як "filename"-має атрибут "тільки-читання. U1011 ""filename": не вистачає пам'яті". Для виконання програми утиліті MAKE не вистачає пам'яті. U1012 "filename": невідома помилка. Зауважте обставини виникнення цієї помилки та повідомте про них фірму Microsoft Corporation, скориставшись бланком "Product Assistance Request", даним наприкінці цього посібника. U1013""command": помилка errcode". Одна із програм або команд, викликана у файлі описів утиліти MAKE, завершилася з ненульовим кодом завершення. U1015 "file": цільовий файл не існує. Зазвичай, це означає помилку. Це повідомлення попереджає користувача, що цільового файлу не існує. Утиліта MAKE виконує будь-які команди, задані в блоці описів, оскільки у більшості випадків вихідний файл створюється останньою командою файлу описів утиліти MAKE. U4000 "filename": не існує. Зазвичай це повідомлення не свідчить про помилку. Воно попереджає користувача про те, що вказаний файл не існує MAKE виконує всі команди, задані в блоці, оскільки в більшості випадків відсутній файл буде створено наступними командами файлу MAKE. U4001 "Залежний файл "filename" не існує; цільовий файл "filena me" не будується". Утиліта MAKE не може продовжувати, оскільки потрібного вхідного файлу не існує. Переконайтеся, що всі імена файлів присутні і всі вони коректно описуються у файлі описів утиліти MAKE. U4013 "command": помилка errcode (ігнорується)". Одна з програм чи команд, викликаних у файлі описів утиліти MAKE, повернула ненульовий код помилки, тоді як утиліта MAKE працювала з опцією /I. Помилки ігноруються та утиліта продовжує роботу. U4014 "Синтаксис: make options file options= Утиліта MAKE була неправильно викликана. Стартуйте утиліту заново, скориставшись синтаксисом, представленим у повідомленні: make опції[ім'я-значення...] file опції= .

У цій статті буде описано кілька способів вирішення проблеми, пов'язаної з програмою AutoCAD.

Йтиметься про помилки, які з'являються при запуску автокаду, при збереженні креслення або навіть при спробі роздрукувати документ на принтері, підключеному по мережі.

А саме про помилку, що призводить до аварійного закриття програми:

Фатальна помилка unhandled e06d7363h exception at fd76bccdh

ФАТАЛЬНА ПОМИЛКА: Unhandled e0434f4dh Exception at 7c81eb33h

Необроблений виняток за адресою 7c81eb33h

Виглядають вони трохи по-різному, але дратують однаково.

Дані повідомлення про помилки вказують на те, що під час встановлення програма була пошкоджена. Наприклад, під час встановлення деякі файли були заблоковані антивірусом, захисником Windows або службою перевірки цифрових підписів. Тому рекомендується відключати антивірус при встановленні програми і закривати всі інші програми, які можуть перешкодити процесу установки.

А тепер перейдемо власне до вирішення проблеми.

Спосіб 1

У першому випадку розглянемо помилку, що виникає під час друку документа на мережевому принтері:

Фатальна помилка unhandled e06d7363hexception at fd76bccdh

Щоб позбутися її можна спробувати видалити папки:

C:\Users\USRNAME\AppData\Roaming\Autodesk та C:\Users\USRNAME\AppData\Local\Autodesk

І перевстановити AutoCAD.

Спосіб 2

Наступне, що може допомогти виправити цю помилку, так це перевстановлення програмного забезпечення:

NetFramework 1.1

А найкраще видалити із системи всі версії NetFramework та повторно запустити установку AutoCAD. Під час встановлення, інсталятор сам перевстановить NetFramework на більш відповідний автокаду.

Спосіб 3

На початку статті вже говорилося про те, що під час встановлення інсталятору може стати на заваді служба перевірки цифрових підписів. Отож треба буде її відключити.

Для цього:

  1. Відкрийте діалогове вікно Виконати, запустити можна або з пуску або натисканням клавіш. WIn+R.
  2. Введіть команду acsignoptта натисніть клавішу Enter.

3. У вікні "Параметри перевірки цифрового підпису" зніміть галочку навпроти напису "Перевіряти цифрові підписи та відображати спеціальні піктограми".

4. Натисніть OK, щоб закрити вікно. Повністю видаліть та перевстановіть AutoCAD.

Перевірте працездатність. Якщо все також з'являється помилка, то переходимо до наступного способу.

Спосіб 4

У четвертому способі потрібно буде змінити пару значень у реєстрі.

  1. Запустіть редактор реєстру.
  2. Перейдіть наступним шляхом: HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R18.0 \ACAD-8000:409\WebServices\CommunicationCenter

Примітка! Шлях може трохи відрізнятися, а саме значення R18.0може бути іншим, залежно від версії автокаду. Наприклад R19.0, в цьому немає нічого страшного, сміливо рухайтеся далі.

4. Змініть значення обох ключів на 00000000 (вісім нулів).

Примітка! Для редагування реєстру Вам потрібні права адміністратора.

При роботі у програмі AutoCAD виникає помилка Unhandled e0434352h Exception – зрозуміти причини появи якої не просто. Помилка виникає при відкритті малюнків, креслень, а також під час роботи в опціях AutoCAD. З англійської помилка перекладається як – «виключення e0434352, яке неможливо обробити». Для її вирішення є кілька варіантів виправлення.

Щоб перевірити чи не заважає роботі програми антивірусне ПЗ – необхідно зайти в налаштування «антивірусника» і вимкнути його на якийсь час, запустивши знову AutoCAD і виконавши ті ж дії, які викликали помилку. При цьому потрібно відключити не тільки антивірусні програми, які ви завантажували окремо, але і вбудоване антивірусне програмне забезпечення.

Наступним кроком потрібно деінсталювати платформу ".NET Framework". Для цього:

  1. У Windows 7 відкрийте меню «Пуск». У ньому виберіть «Панель управління». Потім потрібно відкрити "Встановлення та видалення програм". У списку потрібно видалити всі рядки, що мають у назві «.NET Framework».
  2. Завантажте пакет .NET Framework з офіційного сайту Майкрософт заново та встановіть залежно від версії Windows, встановленого на вашому ПК.
  3. Тут же у списку програм знайдіть AutoCAD і натисніть видалити.
  4. Заново встановіть Автокад.

Причина помилки Unhandled e0434352h Exception у відеоадаптері

Працюючи з програмою AutoCAD комп'ютеру необхідно працювати з 3D графікою, і цього потрібен досить потужний графічний адаптер. Якщо ваш комп'ютер був придбаний кілька років тому, можливо, що він не відповідає параметрам, необхідним для роботи в програмі. Щоб виправити ситуацію, можна спробувати:


Причини появи Unhandled e0434352h Exception у файлі реєстру

Якщо помилка виникла в той момент, коли ви відкриваєте вкладку «Файл» у програмі AutoCAD, причиною цього є проблемний файл у динамічній бібліотеці Майкрософт (dll). Для вирішення цієї проблеми:

  1. Відкриваємо "Редактор реєстру", натиснувши правою кнопкою миші на іконці "Мій комп'ютер".
  2. Далі переходимо до розділу HKEY_CURRENT_USER/Software/Autodesk/AutoCAD/R18.0/ACAD-8000:409/WeServices/CommunicationCenter.
  3. Змінюємо значення ключа LastUpdateTimeHiWord на 8 нулів.
  4. Змінюємо схожий ключ LastUpdateTimeLoWord на таке саме значення.
  5. Перезапустіть комп'ютер.

Недостатньо оперативної пам'яті для роботи AutoCAD

При стандартних налаштуваннях комп'ютера (якщо їх ніхто не змінював) програмі виділено певну кількість оперативної пам'яті для роботи в системі. 2 Гб є загальним обмеженням для ОС із 32-розрядною архітектурою. Якщо цей рубіж перетинається, Windows автоматично завершує роботу запущених програм. Тому, працюючи з програмою, необхідно по можливості не відривати паралельно ніяких програм, які можуть займати велику кількість віртуальної пам'яті.

Причина у неправильній роботі служби цифрового підпису

З'являється помилка Unhandled e0434352h Exception під час запиту цифрового підпису програми. Щоб вимкнути цю функцію для запобігання появі помилки надалі, потрібно:

  1. Перейти в меню "Пуск", далі натисніть "Виконати" і у вікні введіть acsignopt.
  2. У вікні «Параметри перевірки цифрового підпису» потрібно зняти галочку з «Перевіряти цифрові підписи».
  3. Після цього перезавантажте комп'ютер.

Вконтакте

Однією із найскладніших у виправленні є ситуація з появою «FATAL ERROR». Причин виникнення дуже багато, навіть незважаючи на пояснення до неї, виявити відразу ж винний сценарій неймовірно складно. Текст в основному виглядає так: «FATAL ERROR (або російською мовою - ФАТАЛЬНА ПОМИЛКА) Unhandled e0434352h Exception at 00000000», цей текст буде вказувати на код та адресу помилки.

Російською мовою це «Не виключений e0434352h за адресою awe1940dp».

Для вирішення можна використовувати такі рекомендації:

1. Втручання в роботу антивірусів або пошкодження Windows .NET Framework

До антивірусного програмного забезпечення слід віднести не тільки встановлені користувачем програми, але і вбудовані захисники та брандмауери операційної системи.

  1. Вимкніть антивірусне програмне забезпечення.
  2. Проведіть деінсталяцію з наступною переустановкою платформи Windows .NET Framework. Для цього потрібно зробити таке:

  1. Видаліть програмне забезпечення AutoCAD з перезавантаженням комп'ютера.
  2. Встановіть повторно перезавантаження та запустіть від імені адміністратора.

2. Помилка під час відкриття бази даних DWG

«DWG TrueView™» – це програма, яка дозволяє переглядати файл з розширенням «.dwg» і містить модуль «TrueConvert», для їх перетворення для роботи з попередніми версіями «AutoCAD».

Для виправлення ситуації потрібно зробити наступне:

  1. Запустіть цей компонент і відкрийте розділ «Параметри» (Options).
  2. Розгорніть вузол "Шлях доступу до допоміжних файлів" (Support File Search Path) на вкладці "Файли" (Files) і натисніть "Додати" (Add).
  3. Виберіть "Огляд" (Browse) і перейдіть до папки "DBX" для встановлення адаптера об'єктів "Object Enabler".

Помилка з текстом Unhandled e06d7363h Exception

Фатальна помилка в автокаді з цим текстом - одна з найпоширеніших.

Нижче наведено чотири основні способи, що застосовуються для виправлення

1. Наявність неправильної версії файлу в DLL

Якщо під час роботи з програмою при відкритті вкладки «Файл» з'являється помилка і відбувається закриття програми - це саме той випадок, і проблема криється в «Microsoft DLL», а саме в «MFC80U.dll».

2. Недостатньо пам'яті

Справа в тому, що у випадку, якщо будь-яким файлом (в даному програмному забезпеченні це acad.exe) використовується пам'яті більше 2 Гб, система автоматично його закриває.

Тому якщо недостатньо пам'яті в розмірі 2 Гб, слід збільшити обсяг виділеної пам'яті, але враховуючи, що в 32-бітових операційних системах максимальний обсяг пам'яті, що виділяється, не може перевищувати 3 Гб.

Робиться це так:

  1. Для Win Vista/7/8/10:

  1. Для Win XP:

відкрийте «Властивість системи» та перейдіть на вкладку «Додатково».

  • відкрийте розділ «Завантаження операційної системи» та далі «Параметри»;
  • в області "Завантаження операційної системи" виберіть "Змінити";
  • у «boot.ini» (перед зміною збережіть резервну копію) скопіюйте рядок «multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /fastdetect» і помістіть його під вихідний рядок.

ВАЖЛИВО. Текст boot.ini може відрізнятися, тому копіюйте саме з файлу, а не наведений текст у статті.

  • у скопійованому рядку після "Professional" допишіть 3GB і продублюйте ще раз після лапок, закривши з двох сторін слешем "/";
  • збережіть документ у тому самому розширенні, перезавантажте комп'ютер і під час запуску виберіть «3GB».

Якщо недостатньо пам'яті і з 3 Гб, слід перейти на 64-битную операційну систему.

3. Вимкнено службу FNPLicensingService

Ця служба, якщо пояснювати простими словами, відповідає за правомірність запуску виконуваних файлів, перевіряючи їх на ліцензування, і зазвичай входить до складу продукції Adobe.

Якщо службу вимкнено, спробуйте знову запустити її, відкривши розділ "Служби" (команда "services.msc"). У властивостях роботи можна встановити тип запуску в автоматичному режимі.

4. Некоректно працює служба перевірки цифрового підпису

Зазвичай подібна ситуація виникає під час проведення інсталяції, запитуючи підтвердження цифрового підпису, щоб уникнути подібного, слід відключити цей функціонал.

Натисніть "WIN+R" або меню "Пуск" - "Виконати" і введіть "acsignopt".

Відкриється вікно «Параметри перевірки цифрового підпису», де потрібно зняти прапорець з пункту «Перевіряти цифрові підписи та відображати спеціальні піктограми».

Всі ці чотири варіанти можна застосувати і до «unhandled e0434352h exception».

Додаткові причини та варіанти виправлення фатальних помилок

1. Аварійне завершення autocad під час друку документа

Для виправлення, видаліть папки «А:UsersUZVERAppDataRoamingAutodesk» і А:UsersUzverAppDataLocalAutodesk з наступною переустановкою Автокад.

2. Зміна значення ключів у реєстрі

Відкрийте редактор реєстру "Виконати" + команда "regedit".

Пройдіть "HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R0.0\ACAD-8000:409\WebServices\CommunicationCenter", де "R0.0" - це версія вашого програмного забезпечення.

У двох параметрах "LastUpdateTimeHiWord" та "LastUpdateTimeLoWord" змініть значення на 8 нулів.

3. Не сертифіковано відеокарту

Малоймовірна, але можлива причина.

Перевірте наявність актуальності драйверів відеокарти та оновитеся до останньої версії.

Перевірте, чи сертифіковано вашу відеокарту для роботи з продукцією компанії «Autodesk».

Перевірити це можна на офіційному сайті в розділі «Сервіси», де можна завантажити перевірені версії драйверів для певних фірм (AMD або Nvidia) і моделей відеокарт.

4. Збій драйвера дисплея

Викликаний цей збій щільністю або встановленим розміром штрихування, що призводить до некоректної роботи драйвера.

Для початку можна скористатися методом зі способу вище та оновити драйвери програмного забезпечення.

Далі, слід змінити значення змінної HPMAXLINES, яка і регулює максимальну кількість ліній штрихування. За замовчуванням встановлено значення "1 000 000", спробуйте протестувати роботу програми, прибираючи, наприклад, по одному "0".

5. Надмірне значення змінної НАСТРВІД

Системна змінна «НАСТРВІД» регулює зовнішній вигляд дуг, кіл, сплайнів і т. д. І якщо встановлено високий відсоток зумування, це може призвести до гальмування процесу регенерації креслення і до аварійного завершення роботи.

Отже, дані перелічені одинадцять варіантів не є вичерпним списком, деяким користувачам допомагають, на перший погляд, абсолютно банальні рішення, наприклад:

  • перевстановлення ПЗ та запуск з облікового запису адміністратора;
  • видалення оновлень «KB2859537» та «КB2872339»;
  • списання проблем на недостатню потужність комп'ютера (обсяг відеокарти, оперативку) з проведенням апгрейду;
  • запуск у режимі сумісності тощо.

У зв'язку з цим при зіткненні з повідомленням в Autocad "фатальна помилка" не варто панікувати, рішення є, і як можна переконатися з усього вищеописаного, їх безліч.

Принтери