C Переменные объявления после заголовки функции в определении [дубликат

StackOverflow https://stackoverflow.com/questions/2633776

Вопрос

При чтении некоторого исходного кода 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`
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top