Программирование >>  Структурное программирование 

1 ... 311 312 313 [ 314 ] 315 316 317 ... 342


Функция realloc имеет два аргумента: указатель на объект (ptr) и новый размер объекта (size). Если значение ptr ровно NULL, то realloc работает тождественно функции malloc. Если значение size равно О, а значение ptr не NULL, то занимаемая объектом память освобождается. В случае, когда значение ptr не NULL и значение size больше нуля, функция realloc будет пытаться выделить новый блок памяти для объекта. Если память не может быть выделена, то объект, на который указывает ptr, не изменяется. Функция realloc возвращает или указатель на выделенную область памяти, или NULL.

В результате выполнения оператора goto происходит изменение в потоке управления программы: управление передается первому оператору после метки, определенной в операторе goto.

Метка - это идентификатор, за которым следует двоеточие. Метка должна находиться в пределах той же самой функции, что и оператор goto, который на нее ссылается.

Объединение - это производный тип данных, элементы которого совместно используют одну и ту же область памяти. Элементы могут быть любого типа.

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

Объединения объявляются при помощи ключевого слова union в том же формате, что и структуры.

Объединение может быть инициализировано только значением типа первого элемента объединения.

Программист на С-Ы- имеет возможность воспользоваться спецификациями связывания и запретить компилятору С-Ы- кодировать имя функции, если эта функция компилировалась компилятором С.

Для того, чтобы сообщить компилятору, что одна или несколько функций компилировались компилятором С, их прототипы должны быть объявлены следующим образом:

extern С прототип функции II одна функция

extern С несколько функций

прототипы функций

Эти объявления сообщают компилятору, что перечисленные функции компилировались не компилятором С-Ы- и поэтому их имена кодировать не нужно. После компиляции программы на С-Ы- указанные функции могут быть успешно с ней связаны.

Системы программирования на С++ обычно включают в себя перекомпилированные стандартные библиотеки языка С; в этом случае использование спецификаций связывания для вызова таких функций не требуется.



Терминология

argc

argv

atexit

calloc

const

exit

EXIT FAILURE

EXIT SUCCESS

make

makefile

raise

realloc

signal

signal.h

stdarg.h

union

va arg

va end

va list

va start

volatile

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

внешнее связывание внутреннее связывание динамические массивы знак добавления вывода знак конвейера

знак переназначения ввода < знак переназначения вывода > конвейер

недопустимая команда объединение оператор goto

ошибка обращения к памяти

(сегментации) ошибка операции с вещественными

числами

переназначение ввода-вывода

перехват

прерывание

событие

спецификатор класса памяти extern спецификатор класса памяти static список параметров переменной длины

суффикс константы типа float (f or F)

суффикс константы типа long double (I or L)

суффикс целочисленной константы

типа long ( 1 or L) суффикс целочисленной константы

типа unsigned (u or U) суффикс целочисленной константы

типа unsigned long (ul or UL)

Типичные ошибки программирования

18.1. Размещение многоточия в середине списка параметров функции. Многоточие может располагаться только в конце списка параметров.

18.2. Результат обращения не к тому элементу объединения, который был последним размещен в памяти, не определен.

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

18.4 Инициализация объединения при его объявлении значением или выражением, тип которого отличается от типа первого элемента объединения.

Советы по повышению эффективности

18.1. Глобальные переменные улучшают показатели производительности программы, потому что к ним можно обращаться непосредственно из любой функции. При этом исключаются затраты на передачу данных в функцию.



18.2. Глобальные переменные улучшают показатели производительности программы, потому что к ним можно обращаться непосредственно из любой функции. При этом исключаются затраты на передачу данных в функцию.

18.3. Объединения помогают экономить память. Замечания по мобильности

18.1. Некоторые системы не поддерживают имена глобальных переменных и функций длиной более шести символов. Этот факт следует учитывать при написании программ, которые будут переноситься на другие платформы.

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

18.3. Объем памяти, выделяемый объединению, зависит от реализации системы.

18.4. Некоторые объединения не могут быть легко перенесены на другие компьютерные платформы. Перенесется ли объединение, или нет часто зависит от соглашений о выравнивании в памяти типов данных элементов объединения.

Замечания по технике программирования

18.1. Если эффективность прикладной программы не является критическим параметром, то следует избегать употребления глобальных переменных, потому что они нарушают принцип минимума привилегий и затрудняют поддержку программ.

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

18.3. Оператор goto должен использоваться только в приложениях, ориентированных на эффективную работу. Оператор goto не является инструментом структзфного программирования и программы, в которых он используется, труднее отлаживать, поддерживать и модифицировать.

18.4. Как и при объявлении структур и классов при помощи ключевых слов struct и class, объявление объединения с помощью ключевого слова union создает новый тип, а не объект. Объявление структуры или объединения вне определения какой-либо функции не создает глобального объекта.



1 ... 311 312 313 [ 314 ] 315 316 317 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика