Рабюотает она очень просто.
Немного оффтопик, но надеюсь меня простят.
Предположим у нас есть несколько общих переменных, которые надо использовать в нескольких файлах:
[cpp]
char Buffer[255];
int MyConst = 10;
bool TrueFlag = false;
...
[/cpp]
Вместо того, чтобы прописывать эти переменные в жадом файле, выносив в отдельный, например vars.h
После чего в sample001.c Пишем
[cpp]
#include "vars.h"
...
int main(int argc, char * argv[])
{
.....
retrun 0;
}
[/cpp]
Препроцессор, обрабатывая sample001.c приводит его к такому виду:
[cpp]
char Buffer[255];
int MyConst = 10;
bool TrueFlag = false;
...
...
int main(int argc, char * argv[])
{
.....
retrun 0;
}
[/cpp]
То есть делает замену строки #include "vars.h" на содержимое файла vars.h.
Вот собсно и все.