операции с переменнымиaam писал(а):Короче, я так понял. Переменные я вс-таки должен объявлять ("unsigned char a;") именно в соответствующем сишнике (RC5.c). Тогда те из переменных, которые я хочу использовать другими модулями (файлами) проги, я должен дополнительно описать ("extern unsigned char a;") в h-файле. Те, которые сугубо личные и юзаются только внутри библиотеки - соответственно не описываю. Так?
- объявление - указываем имя переменной и ее тип
- определение - выделяем для переменной память
переменная может иметь
- внешние связи - доступны из любой части программы(глобальные переменные)
- внутренние связи - доступны только внутри файла(глобальная со словом static)
- нет связей - локальная(видима только внутри функции и исчезающия при выходе из нее)
Код: Выделить всё
//main.c (или projectname.c, кому как нравится)
...
#include "module.h"
...
//объявление и определение глобальной переменной
//указываем имя и тип и выделяем память
//может использоваться другими файлами(имеет внешние связи)
int a;
//объявление и определение глобальной переменной
//указываем имя и тип и выделяем память
//не может использоваться другими файлами(имеет внутренние связи)
static int b;
int main()
{
//объявление и определение локальной переменной
//указываем имя и тип и выделяем память
//доступна только в main() (не имеет связей)
int c;
c = blabla();
}Код: Выделить всё
//module.h
#ifndef MODULE_H
#define MODULE_H
int blabla();
#endif
Код: Выделить всё
//module.c
//объявление(но не определение) глобальной переменной
//память для нее уже выделена в другом файле
//нужна чтобы получить доступ к переменной, определенной в другом файле
//а также чтоб не возникало ошибок при раздельной компиляции
extern int a;
...
int blabla()
{
//объявление и определение локальной переменной
//указываем имя и тип и выделяем память
//доступна только в blabla() (не имеет связей)
int d;
...
return d;
}


