Директивы препроцессора

Функции

Объявляются следующим образом:

возвращаемый_тип имя_функции(список_формальных_параметров)

{

ТЕЛО ФУНКЦИИ

}

список формальных параметров представляет собой перечисление через запятую пар «тип данного» – «имя переменной» (имя переменной может отсутствовать).

Для функции, которая не возвращает значения (процедура в Паскале), предусмотрен тип данных void.

Функции, возвращающие значение, должны обязательно содержать оператор "return возвращаемые_данные". На данном операторе происходит возврат из функции независимо от того, есть ли дальше другие операторы.

Пример.

int sum(int x, int y)

{

return x+y;

}

Для функций типа void можно использовать return без аргументов для явного выхода из функции в требуемом месте.

Описание функции обязательно должно быть раньше (выше) в тексте программы, чем любой её вызов. Функция может быть описана без реализации (упреждающее описание). В этом случае тело функции не записывают, а после описания её заголовка ставят «;». Также при упреждающем описании могут не указываться имена переменных.

Пример:

void myfunc(int, int);

// здесь продолжение кода с вызовом myfunc

void myfunc(int x, int y) {…}

Допустимо явно не указывать параметры функции, для этого используется многоточие в конце списка параметров. В этом случае компилятор контролирует только явно указанные аргументы. Никаких специальных средств по работе с неявно указанными параметрами функции языки «С» и «С++» не предоставляют, но известно, что переданные фактические параметры располагаются в памяти последовательно после явно указанных.

Языки «С» и «С++» разрешают использование рекурсии, то есть вызова функцией самой себя.

Пример (функция вычисления факториала):

long fact(int k)

{

if (k<0) return 0;

if (k==0) return 1;

return k*fact(k-1);

}

Язык «С++» предоставляет дополнительные возможности:

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

– параметры по умолчанию;

– подставляемые (inline) функции.

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

#include <имя_файла> - добавить в данное место содержимое файла, файл содержится в специальном каталоге подключаемых файлов;

#include "имя_файла" - тоже, но для файла из текущей папки.

Стандартные заголовочные файлы (аналоги библиотек в других ЯВУ):

stdio.h – стандартный ввод-вывод;

string.h – работа со строками;

math.h – математические операции;

limits.h – константы предельных значений;

Следующие заголовочные файлы определены только для ОС Ms Dos и консольных приложений Ms Windows

conio.h – консольный ввод-вывод;

mem.h – функции работы с памятью;

dos.h – команды ОС Ms Dos.

#define идентификатор строка_замещения - заменяет все идентификаторы от директивы до конца файла на строку замещения.

#define WIDTH 80#define LENGTH (WIDTH + 10)#define test(f1, f2) (f1 * f2)

#undef идентификатор - отменяет директиву define, после данной директивы замен не производится.

#if, #elif, #else, #endif – организуют ветвление.

#ifdef, #ifndef – далее следующий код будет откомпилирован только если определена / неопределенна макроподстановка.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: