Объявление функции в программировании на c

#c #function #declaration

#c #функция #объявление

Вопрос:

Если прототип функции (скажем, a()) объявлен внутри функции (скажем, main()), означает ли это, что его нельзя использовать в функциях, отличных от функции main()?

Ответ №1:

Нет, это не значит, что. Если другие функции тоже объявляют ее, то функция также может использоваться этими другими функциями.

 int main(void) {
  void f(void); 
  f();
}

void g(void) {
  void f(void);
  f();
}
  

В этом примере main функция объявлена f локально и вызвана. Но g делает то же самое. Оба объявления ссылаются на одну и ту же функцию.

Комментарии:

1. Ну, вы также можете объявить ее во внешней области видимости, если собираетесь это сделать!

2. Я имею в виду, что вы говорите правильно, но я не могу избавиться от ощущения, что это не совсем то, к чему вел вопрос, но опять же, я могу ошибаться….

Ответ №2:

Да, это правильно. Это верно для всех объявлений в определенной области. Они доступны только в пределах области определения.

Конечно, вы можете объявить ту же функцию в другой области, но я не думаю, что это то, что вы имели в виду.

Ответ №3:

В общем, вещи, которые вы можете объявить внутри функции (например, переменные), используются только для этой функции.

Комментарии:

1. Я думаю, вы путаетесь между объявлениями и определениями.