#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. Я думаю, вы путаетесь между объявлениями и определениями.