C Переменные объявления после заголовки функции в определении [дубликат
Вопрос
Этот вопрос уже имеет ответ здесь:
При чтении некоторого исходного кода FreeBSD (см.: radix.h. Линии 158-173), я нашел переменные объявления, которые следовали за «заголовком функции» в определении.
Это действительно в ISO C (C99)? Когда это должно быть сделано в производственном коде, а не просто объявление переменных в «заголовке функций?» Почему это делается здесь?
Я ссылаюсь на функцию, направляющую строку, которая выглядит так: int someFunction(int i, int b) {
Решение
Это выглядит как k & r (pre-ansi) стиль. Я не думаю, что это действительно C99, но они используют C99? Joel
Другие советы
Я думаю, что вы имеете в виду «старомодный» Pre-Ansi способ объявления параметров в C. Это выглядело что-то подобное:
int foo(a, b)
int a,
int b
{
/* ... */
}
Это может все еще действовать в C99 и будет принято компиляторами по соображениям обратной совместимости, но его следует считать устаревшим / архаичным.
Эр. Может быть, я неправильно понимаю твой вопрос, но i
и b
В этом фрагменте являются параметрами к функции. Это не какой-то компактный способ декларирования переменных в рамках функции, например:
int someFunction() {
int i, b;
Когда вы называете someFunction
, Вы передаете это эти аргументы:
someFunction(1, 2); // `i` will be `1` and `b` `2` within `someFunction`