Soft-v3.ru - все для Android, iOS, Windows. Новые игры на Андроид каждый день. 

Программирование на языке C. Распространенные ошибки в функциях

Автор: soft-v3

PDFПечатьE-mail    date: 06.05.2013

Статьи - Программирование


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

No return (нет оператора return). Компилятор делает подобное предупреждение относительно любой возвращающей значение функции (т.е. отличной от типа void), не содержащей оператора return. Если подобная функция завершается без выполнения return, она возвращает непредсказуемое значение, которое может вызвать серьезные неприятности.

Skipped return (невыполнимый оператор return). Компилятор предупреждает о функциях, которые не смогут выполнить оператор return ни при каких условиях. Обратите особое внимание на функции, имеющие операторы if, и убедитесь, что оператор return выполняется для каждого возможного случая выхода.

No prototype (нет прототипа). Считается, что функции, у которых нет прототипа, имеют тип int, даже если они определены как возвращающие значения другого типа. Не следует полагаться на это правило, лучше явно объявлять прототипы для всех функций.

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

Первые два типа перечисленных выше ошибок, отсутствие и обход оператора return, легко устраняются при внимательном отношении к предупреждениям компилятора. Следующая запись иллюстрирует самую распространенную ошибку:

int. AnylntFn (void)
{
if (условие) {
оператор1;
return 0;
} else
оператор2; /* ??? */
}

Эта функция выполняет оператор return, только если условие истинно. Если же условие ложно, оператор2 выполнится нормально, но функция завершится без выполнения оператора return.
Третья из представленного выше списка распространенных ошибок (отсутствие прототипа) восходит к старым С-программам. Функции без прототипов рассматриваются как имеющие тип int. Таким образом, вы могли бы без отрицательных последствий убрать прототипы, но делать это не рекомендуется.

Замечание. Функция main(), обычно записываемая без явного задания возвращаемого типа, однако она возвращает значение int. и, следовательно, ее можно объявить как int main(). Этим объясняется, почему функция main() должна выполнять оператор return, чтобы избежать предупреждения компилятора.

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


 

Раскрутить группу Вконтакте - это совсем не трудно. Друзья, лайки, подписчики в группы и паблики и многое другое.

Раскрутить вашу страничку в twitter можно очень просто и совершенно легально. Программа Twitter Follower

ViKing Group Builder - поиск и публикация нужного вам контента в группе вконтакте. Cкидка 250 рублей.

 

Программы Windows

CD-DVD

E-Mail

Web разработчику

Аудио, Звук

Безопасность

Видео

Графика и дизайн

Деловые программы

Диски и файлы

Интернет

Мобильные телефоны

Навигация, GPS

Рабочий стол, десктоп

Разработчику

Серверы

Сети

Система

Текст

Хобби, увлечения

Игры для ПК

Реклама На Сайте

Похожие материалы