Статические функции в Си - C (СИ)
Формулировка задачи:
Читаю Кернигана и Ричи, и походу возник вопрос о статических функциях
Есть 2 файла main.c:
и файл global.h
По идеи область видимости funct должна ограничиваться файлом, но программа компилируется и выводит правильный результат, почему?
#include <iostream>
#include "global.h"
int main(int argc, char *argv[])
{
int x = 5, y = 6, z;
z = funct(x, y);
std::cout << z;
return 0;
}static int funct(int x, int y)
{
int s;
s = x - y;
return s;
}Решение задачи: «Статические функции в Си»
textual
Листинг программы
// file foobar.h
int DoBigJob();
// file foobar.c
static int DoPart1() { ... }
static int DoPart2() { ... }
static int DoPart3() { ... }
int DoBigJob()
{
return DoPart1() + DoPart2() + DoPart3();
}
// file main.c
#include "foobar.h"
int main()
{
return DoBigJob();
}
Объяснение кода листинга программы
- В файле foobar.h объявлена функция DoBigJob().
- В файле foobar.c определены три статические функции DoPart1(), DoPart2(), DoPart3().
- В функции DoBigJob() происходит вызов функций DoPart1(), DoPart2(), DoPart3() и возвращается их сумма.
- В файле main.c присутствует функция main(), в которой происходит возврат функции DoBigJob().