Статические функции в Си - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Читаю Кернигана и Ричи, и походу возник вопрос о статических функциях Есть 2 файла main.c:
#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;
 
}
и файл global.h
static int funct(int x, int y)
{
    int s;
 
    s = x - y;
    return s;
}
По идеи область видимости funct должна ограничиваться файлом, но программа компилируется и выводит правильный результат, почему?

Решение задачи: «Статические функции в Си»

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();
}

Объяснение кода листинга программы

  1. В файле foobar.h объявлена функция DoBigJob().
  2. В файле foobar.c определены три статические функции DoPart1(), DoPart2(), DoPart3().
  3. В функции DoBigJob() происходит вызов функций DoPart1(), DoPart2(), DoPart3() и возвращается их сумма.
  4. В файле main.c присутствует функция main(), в которой происходит возврат функции DoBigJob().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы