Содержание

Как оформлять модули

Скачать в PDF-формате

Виктор Тимофеев, июль, 2010 osa@pic24.ru

Вступление

Для некоторых программистов, привыкших писать текст программы одним файлом (или включать в Си-файл другие Си-файлы директивой #include), вызывает трудность оформление и подключение независимых модулей, которые были бы изолированны от основной программы и легко переносились бы в другие проекты. Здесь я опишу, как это делается.

Итак, создается пара файлов с одинаковыми именами и с расширениями .c и .h (одинаковые имена - необязательное условие, но его нарушение приведет к путанице), например new_module.c и new_module.h. Формат и содержание их описан ниже.

Содержание основного файла (.c)

//******************************************************************************
//  Секция include: здесь подключается заголовочный файл к модулю
//******************************************************************************
 
#include "new_module.h"      // Включаем файл заголовка для нашего модуля
 
//******************************************************************************
//  Секция определения переменных, используемых в модуле
//******************************************************************************
 
//------------------------------------------------------------------------------
// Глобальные
//------------------------------------------------------------------------------
 
char GlobalVar1;
char GlobalVar2;
...
 
//------------------------------------------------------------------------------
// Локальные
//------------------------------------------------------------------------------
 
static char LocalVar1;
static char LocalVar2;
...
 
//******************************************************************************
//  Секция прототипов локальных функций
//******************************************************************************
 
void local_func1 (void);
void local_func2 (void);
...
 
//******************************************************************************
//  Секция описания функций (сначала глобальных, потом локальных)
//******************************************************************************
 
void global_func1 (void)
{
    ...;
}
 
void global_func1 (void)
{
    ...;
}
 
...
 
void local_func1 (void)
{
    ...;
}
 
void local_func1 (void)
{
    ...;
}
 
...
 
 
//******************************************************************************
//  ENF OF FILE
//******************************************************************************

Описание секций

Содержание заголовочного файла (.h)

#ifndef _NEW_MODULE_H        // Блокируем повторное включение этого модуля
#define _NEW_MODULE_H
 
//******************************************************************************
//  Секция include: здесь подключаются заголовочные файлы используемых модулей
//******************************************************************************
 
#include <math.h>
#include <stdio.h>
...
 
 
//******************************************************************************
//  Секция определения констант
//******************************************************************************
 
#define MY_CONST1            1
#define MY_CONST2            2
#define ...
 
//******************************************************************************
//  Секция определения типов
//******************************************************************************
 
typedef struct
{
    ...
} T_STRUCT;
 
typedef ...
 
//******************************************************************************
//  Секция определения глобальных переменных
//******************************************************************************
 
extern char GlobalVar1;
extern char GlobalVar2;
extern ...
 
//******************************************************************************
//  Секция прототипов глобальных функций
//******************************************************************************
 
void global_func1 (void);
void global_func2 (void);
...
 
//******************************************************************************
//  Секция определения макросов
//******************************************************************************
 
#define MACRO1    ...
#define MACRO2    ...
#define ...
 
#endif                       // Закрывающий #endif к блокировке повторного включения
 
//******************************************************************************
//  ENF OF FILE
//******************************************************************************

Описание секций

Подключение к проекту

Чтобы включить созданные файлы в свой проект нужно:

  1. В интегрированной среде добавить в проект оба файла (new_module.c и new_module.h). Можно ограничиться только си-файлом, но для удобства работы с рабочей областью (workspace) лучше добавлять оба. (Например, в MPLAB добавление файлов делается через меню: Project/Add Files to Project).
  2. Во всех файлах проекта, в которых предполагается использование функций, типов, переменных, констант или макросов из новых файлов, вставить строчку:
#include "new_module.h"

Примечания

Примечание 1

Примечание 2

Примечание 3

Примечание 4