Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯЗЫК СИ_РУКОВОДСТВО ПРОГРАММИСТА.doc
Скачиваний:
12
Добавлен:
18.08.2019
Размер:
438.27 Кб
Скачать

9. Краткое описание компилятора си фирмы dec.

Составлено в пожарном порядке Яковлевым С.С.

Компилятор разгуливает на свободе в следующих вариантах:

CC или CCDCUS длина 101 блок AS или ASDCUS длина 46 блоков CCC или CCPDEC длина 89 блоков ASC или ASPDEC длина 42 блока

Второй от первого отличается только тем, что он обработан программой PRESS.

От более распространенного компилятора длиной 227 блоков он отличается очень существенно:

1. Несколько другой интерфейс командных строк, приближенный к РТ11.

2. Отсутствие оптимизатора. Однако код, который он формирует, довольно экономен (экономнее формируемого 227-блочным с выключенным оптимизатором - на том это иногда приходится делать из-за ошибок в алгоритме оптимизации).

3. Значительно меньший обьем, позволяющий собрать на одну системную дискету одинарной плотности и компилятор, и ассемблер, и библиотеки.

4. Отсутствие поддержки плавающей запятой. Это самая гнусная его особенность, позволяющая работать только с целой арифметикой.

5. Отсутствие вложенных #include

6. Отсутствие условного опреатора "?".

7. Отсутствие инициализации неглобальных переменных.

8. Возможность запуска при не только выключенном свопинге, но и при расположении файла SWAP.SYS за пределами дискеты.

9. Меньшая скорость трансляции (несмотря на отсутствие

оптимизатора) и более длительная компоновка. Процесс компоновки

можно ускорить, переписав на электронный диск модуль исполняющей

системы SUPORT.OBJ.

10. Отсутствие библиотек-затычек на нефайловый ввод/вывод и на запуск программы без эмуляции входной строки ОС UNIX. Это приводит к размеру программы в загрузочном виде не менее 8 блоков.

11. Меньшие количества запихиваемой в стек информации. Благодаря этому не нужен ключ /BOTTOM:2000 при компоновке.

12. Наличие в библиотеке разнообразных модулей преобразований целых чисел в строки и обратно.

10. Перечень ошибок

(Warning only) - (C0)

предыдущее сообщение было предупреждением, а не ошибкой. 0-Length row: name - (C0)

объект имеет длину 0. (*)

?CC-F-Bad input filename "filnam" - (CC)

недопустимое имя входного файла.

?CC-F-Bad output filename "filnam" - (CC)

недопустимое имя выходного файла.

?CC-F-Can't open input file "filnam": errmes - (CC)

не удается открыть входной файл: причина.

?CC-F-No input file - (CC)

нет имени входного файла.

?CC-F-No output file name - (CC)

Нет имени выходного файла (хотя задан ключ 'O').

?CC-F-Too many input files - (CC)

более одного имени входного файла.

?CC-F-Too many output files - (CC)

более одного ключа 'O'.

?CC-F-Unknown switch 'X' - (CC)

недопустимый ключ 'X' ('X' - этот ключ).

?CC-I-I'm do nothing as you like - (CC)

были совместно заданы ключи 'M', 'C' и 'S', нет ни одной

активной стадии.

?XX-F-Can't close output file "filnam": errmes - (CC)

ошибка на стадии "XX" при закрытии выходного файла "filnam":

причина.

?XX-F-Can't close tof "filnam": errmes - (CC)

ошибка на стадии "XX" при закрытии промежуточного файла

"filnam": причина.

?XX-F-Can't open tif "filnam": errmes - (CC)

ошибка на стадии "XX" при открытии промежуточного входного

файла "filnam": причина.

?XX-F-Can't open tof "filnam": errmes - (CC)

ошибка на стадии "XX" при открытии промежуточного выходного

файла "filnam": причина.

Bad formal: "name" - (CPP)

недопустимый формальный параметр "NAME" при определении

макроса с аргументами.

Bad func. storage class - (C0)

недопустимый класс памяти (auto) при описании функции.

Bad include syntax - (CPP)

ошибка в операторе #include - аргумент имеет вид не "file" и

не <file>.

Bad structure/union/enum name - (C0)

недопустимое имя для структуры, объединения или перечисления. Bad type for field - (C0)

Недопустимый (не int или unsigned) тип для битового поля. Binary expression botch - (C1),

Botch in outcode - (C0)

сбой или ошибка в компиляторе.

Break/continue error - (C0)

использование оператора "break" или "continue" в неподходящем

контексте - вне тела цикла для "continue" и вне тела цикла

или переключателя для "break".

C error: const - (C1)

в константном выражении применена нереализованная операция

(при выполнении такой операции с переменными вы получите "No

code table for...").

C optimizer: out of space - (C2)

оптимизатору не хватило памяти. разбейте программу на более

мелкие функции (разбиение файла на части необязательно).

C2: Sorry, input line too long - (C2)

слишком длинная входная строка для оптимизатора.

Call of non-function - (C0)

обрашение как к функции к об'екту (переменной), который

функцией не является, например обращение к элементу массива

как к foo(1), а не как foo[1].

Can't find include file "filnam" - (CPP)

не найден файл "filnam", указанный в операторе #include.

Case not in switch - (C0)

конструкция "case" употреблена не в теле переключателя. Compiler botch: call - (C1),

Compiler error (length) - (C1),

Compiler error: pname - (C1)

сбой или ошибка в компиляторе.

Compound statement required - (C0)

телом функции должен быть составной оператор (группа

операторов в фигурных скобках): после определения функции

нет открывающейся фигурной скобки в надлежащем месте. Conflict in storage class - (C0)

несовместимые классы памяти при описании (например extern

register).

Constant required - (C0)

в данном контексте (например при инициализации или в

конструкции "case") необходима константа или константное

выражение.

Declaration syntax - (C0)

неверный синтаксис при описании.

Default not in switch - (C0)

кострукция "default" употреблена не в теле переключателя Disallowed conversion - (C0)

недопустимое преобразование типа.

Divide check - (C0, C1)

деление на константу 0.

Duplicate case (swval) - (C1)

в теле переключателя присутствуют более одной конструкции

"case" с одинаковыми значениями "swval".

Excessive -I file (dev) ignored - (CPP)

слишком много дополнительных устройств для поиска файлов

описаний, задаваемых при помощи ключей 'I'. Устройство "dev"

игнорируется.

Expression input botch - (C1)

сбой или ошибка в компиляторе.

Expression overflow - (C0)

слишком сложное выражение - переполнение внутреннего стека

при разборе. Упростите выражение, явно используя

промежуточные переменные.

Expression syntax - (C0)

ошибочный синтаксис в выражении. Ошибка, как правило, в

указанной строке.

External definition syntax - (C0)

ошибочный синтаксис при определении внешних данных. Ошибка

часто появляется при наличии лишних закрывающих фигурных

скобок.

Field too long - (C0)

битовое поле имеет слишком большую длину.

Floating % not defined - (C1)

для операндов типа float и double операция '%' неопределена. If-less else - (CPP)

оператор #else, для которого отсутствует предшествующее #if

или #ifdef.

If-less endif - (CPP) аналогично #endif

Illegal # - (C0)

недопустимая строка, начинающаяся с '#', попала на вход

стадии компилятора. Обычно - # не в первой позиции.

Illegal conditional - (C0)

недопустимый оператор '?' - после него отсутствует ':'.

Illegal conversion - (C0)

недопустимое преобразование типа.

Illegal enum constant for "name" - (C0)

при определении перечисления для компонента "name"

используется недопустимый инициализатор (не константа или

константа не типа int).

Illegal enumeration "name" - (C0) недопустимое перечисление "name".

Illegal indirection - (C0, C1)

недопустимая косвенная адресация - попытка использовать

(оператором '*') как указатель переменную, которая

указателем не является.

Illegal initialization - (C1) недопустимая инициализация.

Illegal lvalue - (C0)

недопустимое l-значение: попытка взять (оператором '&') адрес

конструкции, не имеющей адреса, например выражения или

константы.

Illegal macro name - (CPP)

недопустимое имя для макроопределения.

Illegal operation on structure - (C1)

попытка выполнить над структурами неопределенную операцию.

(*)

Illegal storage class - (C0)

недопустимый класс памяти (использование классов памяти

"auto" и "register" при внешнем определении).

Illegal structure operation - (C1)

недопустимая операция со структурой (при возврате из функции

структуры по значению). (*)

Illegal structure ref - (C0)

недопустимая ссылка на элемент структуры.

Illegal type of operand - (C0)

недопустимый тип операнда (операндов) для данной операции

(например в операции "a <<= d", где 'd' имеет тип "float"). Illegal use of register - (C1)

недопустимое использование регистровой переменной (например,

взятие адреса).

Illegal use of type - (C0)

недопустимое использование типа.

Illegal use of type name - (C0)

недопустимое использование имени типа.

Inappropriate 'else' - (C0)

обнаружен "else", для которого отсутствует "if".

Inappropriate parameters - (C0)

несоответствующие параметры при вызове функции. (*)

Incompatible structures - (C0)

несовпадающие структуры (например при присваивании или

возврате из функции структуры по значению).

Intermediate file error - (C1)

ошибка записи в промежуточный файл.

Long character constant - (C0)

слишком длинная (более двух символов) символьная константа. Lvalue required - (C0)

требуется l-значение: использование указателя в контексте,

где это очевидно бессмысленно, и где, скорее всего,

требуется об'ект, на который указывает этот указатель,

например: p++ = c; вместо *p++ = c;

Misplaced 'long' - (C0)

тип "long" использован некорректно (например "long double"). Misplaced 'unsigned' - (C0)

тип "unsigned" использован некорректно (например "unsigned

float").

Missing '