- •1 Переменные
- •1.1 Базовые типы данных
- •1.1.1 Целочисленные типы
- •1.1.2 Способы записи целых чисел
- •1.1.3 Логический тип
- •1.1.4 Вещественные типы
- •1.1.5 Специальный тип void
- •1.2 Оператор sizeof
- •1.3 Константы
- •1.4 Определение и описание переменных
- •1.5 Классы памяти переменных
- •2 Функции
- •2.1 Объявления и определения функций
- •2.2 Функция main
- •3.1 Разыменование указателя и получение адреса
- •3.1.1 Операции разыменования указателя и получение адреса переменной
- •3.1.2 Инициализация и присваивание указателей
- •3.1.3 Указатели и область действия (время существования) переменных
- •4 Массивы
- •4.1 Основные сведения
- •4.2 Указатель на первый элемент массива
- •4.3 Работа с указателями как с массивами
- •4.4 Арифметика указателей
- •4.5 Разноразмерные массивы
- •5 Структуры
- •6 Логические операции
- •7 Условия
- •8 Операторы сравнения
- •9 Сдвиги
- •10 Циклы
- •10.1 Цикл с предусловием
- •10.2 Цикл с постусловием
- •10.3 Цикл со счётчиком
- •11 Оптимизация и её запрет, ключевое слово volatile
- •12.1.2 Директива #include
- •12.2 Условная компиляция
Объявления типов и функций размещаются отдельно от их определений в так называемых заголовочных файлах (обычно имеют расширение «.h») и встраиваются с использованием директивы #include везде, где это необходимо.
Так, в листинге 12 происходит встраивание заголовочного файла, поставляемого производителем микроконтроллеров, в котором определены используемые типы данных и макроопределения.
12.2 Условная компиляция
Условная компиляция – это функция препроцессора, позволяющая включать или исключать фрагменты исходного кода программы в зависимости от некоторых условий (которые, как правило, формируются из макроопределений).
//Встраивание заголовочного файла, содержащего параметры
//сборки программы
# include "config.h" unsigned short getAdcCode()
{
//Если объявлено макроопределение EMULATION, означающее,
//что включён режим эмуляции, то не используем реальный АЦП и
//всегда возвращаем ноль.
#ifdef EMULATION return 0;
// Иначе (если эмуляция не включена), работаем с реальным АЦП #else
return getAdcCodeByChannel(i); #endif
}
38
Содержание
1 |
Переменные................................................................................................................... |
3 |
|
|
1.1 |
Базовые типы данных............................................................................................ |
3 |
|
1.1.1 Целочисленные типы...................................................................................... |
3 |
|
|
1.1.2 Способы записи целых чисел........................................................................ |
3 |
|
|
1.1.3 Логический тип............................................................................................... |
4 |
|
|
1.1.4 Вещественные типы....................................................................................... |
4 |
|
|
1.1.5 Специальный тип void.................................................................................... |
4 |
|
|
1.2 |
Оператор sizeof....................................................................................................... |
5 |
|
1.3 |
Константы............................................................................................................... |
5 |
|
1.4 |
Определение и описание переменных.................................................................. |
6 |
|
1.5 |
Классы памяти переменных.................................................................................. |
6 |
2 |
Функции......................................................................................................................... |
9 |
|
|
2.1 |
Объявления и определения функций.................................................................... |
9 |
|
2.2 |
Функция main....................................................................................................... |
11 |
3 |
Указатели...................................................................................................................... |
13 |
|
|
3.1 |
Разыменование указателя и получение адреса.................................................. |
13 |
|
3.1.1 Операции разыменования указателя и получение адреса переменной.... |
13 |
|
|
3.1.2 Инициализация и присваивание указателей............................................... |
14 |
|
|
3.1.3 Указатели и область действия (время существования) переменных......... |
14 |
|
4 |
Массивы....................................................................................................................... |
17 |
|
|
4.1 |
Основные сведения.............................................................................................. |
17 |
|
4.2 |
Указатель на первый элемент массива................................................................ |
19 |
|
4.3 |
Работа с указателями как с массивами............................................................... |
20 |
|
4.4 |
Арифметика указателей....................................................................................... |
20 |
|
4.5 |
Разноразмерные массивы.................................................................................... |
20 |
5 |
Структуры.................................................................................................................... |
22 |
|
|
5.1 |
Работа с регистрами ввода-вывода через структуры данных........................... |
23 |
6 |
Логические операции.................................................................................................. |
25 |
|
7 |
Условия......................................................................................................................... |
28 |
|
8 |
Операторы сравнения.................................................................................................. |
30 |
|
9 |
Сдвиги.......................................................................................................................... |
31 |
|
10 Циклы......................................................................................................................... |
32 |
||
|
10.1 Цикл с предусловием......................................................................................... |
32 |
|
|
10.2 Цикл с постусловием......................................................................................... |
32 |
|
|
10.3 Цикл со счётчиком............................................................................................. |
33 |
|
11 Оптимизация и её запрет, ключевое слово volatile.................................................. |
35 |
||
12 Препроцессор............................................................................................................ |
36 |
||
|
12.1 Текстовые подстановки..................................................................................... |
36 |
|
|
12.1.1 Макросы...................................................................................................... |
36 |
|
|
12.1.2 Директива #include...................................................................................... |
37 |
|
|
12.2 Условная компиляция......................................................................................... |
38 |
39
Редактор
Подписано в печать |
Формат 60 84 1/16. Бумага офсетная. |
|
Печать офсетная. Печ. л. 2.0. |
|
Тираж 30 экз. Заказ |
Издательство СПбГЭТУ "ЛЭТИ" 197376, С.-Петербург, ул. Проф. Попова, 5
40