Контакти

Фатальна помилка значення. Фатальна помилка в Автокаді Unhandled e0434352h Exception - способи вирішення. Передісторія: що є додатковим

При роботі у програмі 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. Після цього перезавантажте комп'ютер.

Фатальна помилка може виникнути під час запуску Автокада. Вона блокує початок роботи, і ви не можете скористатися програмою для створення креслень.

У цій статті розберемося з причинами її виникнення та запропонуємо способи усунення цієї помилки.

Фатальна помилка доступу

Якщо під час запуску Автокада ви бачите таке вікно, як показано на скріншоті, вам потрібно запустити програму від імені адміністратора, якщо ви працюєте під обліком користувача без прав адміністратора.

Клацніть по ярлику програми правою кнопкою миші натисніть кнопку «Запустити від імені адміністратора».

Фатальна помилка під час блокування системних файлів

Фатальна помилка може бути інакше.

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

Є кілька способів вирішення цієї проблеми.

1. Видаліть папки за адресою: C:\Users\USRNAME\AppData\Roaming\Autodesk та C:\Users\USRNAME\AppData\Local\Autodesk. Після цього виконайте повторну інсталяцію програми.

2. Натисніть Win+R і наберіть у командному рядку acsignopt. У вікні приберіть галочку в чекбоксі «Перевіряти цифрові підписи та відображати спеціальні значки». Справа в тому, що служба цифрових підписів може блокувати інсталяцію програми.

3. Натисніть Win+R та наберіть у командному рядку «regedit».

Знайдіть гілку HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R21.0\ACAD-0001:419\WebServices\CommunicationCenter.

Назви папок «R21.0» та «ACAD-0001:419» можуть відрізнятися у вашій версії. Принципової різниці у змісті немає, вибирайте ту папку, яка відображається у вашому реєстрі (наприклад, R19.0, а не R21.0).

Виберіть файл «LastUpdateTimeHiWord» і натисніть «Змінити», натиснувши контекстне меню.

У полі "значення" введіть вісім нулів (як на скріншоті).

Зробіть те саме для файлу «LastUpdateTimeLoWord».

Інші помилки AutoCAD та їх усунення

На нашому сайті ви можете ознайомитися з вирішенням інших поширених помилок, пов'язаних з роботою в Автокаді.

Помилка 1606 у AutoCAD

Помилка 1606 виникає під час встановлення програми. Її усунення пов'язане із внесенням змін до Реєстру.

Помилка 1406 у AutoCAD

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

Помилка копіювання в буфер AutoCAD

У деяких випадках Автокад не може копіювати об'єкти. Вирішення цієї проблеми описано у статті.

Ми розглянули усунення фатальної помилки в Автокаді. У вас є свій спосіб лікування подібного головного болю? Поділіться, будь ласка, ними у коментарях.

У цій статті буде описано кілька способів вирішення проблеми, пов'язаної з програмою 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 (вісім нулів).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Компонент Розділ Компілятор Microsoft Quick-C Розділ D.1, "Повідомлення про помилки компілятора. Командний рядок, що використовується Розділ D.2, "Повідомлення про помилки для виклику компілятора Quick-C командного рядка". Бібліотеки виконуючої системи Розділ D.3, " Повідомлення про помилки Microsoft C та інші ситуації періоду виконання". періоду виконання. компановщика". Диспетчер бібліотек фірми Розділ 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 "Перевищені межі "ближньої" динамічної області". При розміщенні елементів даних у "ближній" динамічній області (стандартний сегмент даних), компілятор вийшов за допустимі межі. При розміщенні елементів даних у "далекій" динамічній області компілятор вийшов за допустимі межі пам'яті.Зазвичай дана помилка відбувається у вбудованих в пам'ять програмах, тому що таблиця імен містить занадто багато імен. виконати компіляцію з вимкненою опцією Debug, або спробуйте підключити менше файлів, що включаються. Якщо такий спосіб не рятує ситуацію, виконайте компіляцію програми за допомогою команди QCL. глибоке вкладення блоків. Вкладеність блоків у даній прогамі перевищує можливості компілятора. Для виправлення цієї ситуації перепишіть програму так, щоб вкладеність блоків була меншою. 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 "". "вимагає ім'я структури або суміші". Вираз перед оператором вибору структури або суміші (.) є покажчиком на структуру або суміш, а не структурою або сумішшю, як вимагається. ключові слова 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 не константний". Вирази випадку повинні бути цілими константами. C2052 "Вираз 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. Це повідомлення може з'явитися, якщо пропущена потрібна закриваюча фігурна дужка ()), права дужка ()) або точка з комою (;). C2144 "Синтаксична помилка: немає лексем "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 з'являється більш ніж однієї прагми 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"". Була спроба передати аргумент, що не є вказівником, функції, що потребує вказівник. Ця помилка може статися у викликах, що повертають вказівник на функцію Перший номер вказує, який аргумент спричинив помилку, другий номер показує, який список аргументів містить невірний аргумент. спроба передати аргумент типу void функції Формальні параметри та аргументи функції не можуть мати тип void, однак вони можуть мати тип void* (покажчик на void) Ця помилка відбувається у викликах, що повертають покажчик на функцію. р показує, який аргумент спричинив помилку; Другий номер показує, який список аргументів містить неправильний аргумент. C2175 "function": невирішене зовнішнє посилання. Ця функція не визначена у вихідному файлі, або вбудована в середовище програмування QUICK-C, або знаходиться в бібліотеці QUICK, якщо вона завантажена. Ця помилка виникає лише в одномодульних, вбудованих у середу Quick-C програмах. Щоб вирішити цю проблему, або визначте функцію у вихідному файлі, або завантажте бібліотеку QUICK, що містить цю функцію, або (якщо функція міститься в стандартній бібліотеці СІ-функцій), створіть програмний список. C2177 "Константа занадто велика". Інформація була втрачена, оскільки константа дуже велика, щоб замінити тип, якому вона присвоюється. (1)

D1.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_sta 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-символ був використаний в даному символьному рядку.

D1.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: текст повідомлення Фатальна помилка) командного рядка 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 "Вихід за нижню межу стека". Програма завершується з кодом 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.

D3.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 висвічує повідомлення: Error during link phase No .EXE file produced (Помилка в процесі компонування виконуваного файлу не створюється). Щоб переглянути помилки компанівника, натисніть ENTER, або позначте "мишкою" командну кнопку OK. Помилки останнього проходу компонувальника зберігаються у файлі з ім'ям LINK.ERR. У цьому списку наведено помилки, які виникають під час кампанування об'єктних файлів за допомогою Microsoft Overlay Linker, LINK. Номер Повідомлення про помилку компанувальника L1001 "option": ім'я опції неясно". Після індикатора опції (/) не з'явилося унікальне ім'я опції. Наприклад, команда Link/N main; згенерує помилку, оскільки програма 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 Quick або іншими компіляторами, що підтримують загальні змінні (TYPDEF-це термін операційної системи DOS. Він пояснюється в документі "Довідкове керівництво програміста з операційної системи MS-DOS фірми Microsoft" або інших довідкових книг за DOS.) L1046 "Занадто багато зовнішніх імен в одному модулі". В об'єктному модулі визначено більше 1023 зовнішніх імен. Розбийте модуль на менші частини. L1047 "Занадто багато імен груп, сегментів, класів в одному модулі". Програма містить занадто багато імен груп, сегментів, класів. Скоротіть число груп, сегментів або класів і перебудуйте об'єктний файл L1048 "Надто багато сегментів в одному модулі". вулик має понад 255 сегментів. Розщепіть модуль або об'єднайте сегменти. 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, що знаходиться в кінці даного посібника. компіляцію та компонування у великій моделі пам'яті 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 "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 опції= .

Сподобалась стаття? Поділіться їй