Вопрос объявления аргумента функции из программирования на C, Стивен Кочан - PullRequest
1 голос
/ 02 августа 2010

Я сталкивался с этим кодом в книге Стивена Г. Кочана «Программирование в ц.Возможно ли это?

float absolute_value(x)
float x;
{
   -----
   -----
}

Итак, как вы можете видеть, аргумент x объявляется после того, как он используется в качестве аргументов метода.Это приводит к явной ошибке компиляции в G ++.

Итак, какой компилятор C поддерживает это?

Ответы [ 2 ]

3 голосов
/ 02 августа 2010

Это старый стиль K & R формата. На самом деле это не объявление аргумента x, а определение его типа. По умолчанию все было int, если не указано иное.

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

О да, и сойди с моего газона: -)

1 голос
/ 02 августа 2010

Это оригинальный способ объявления типов параметров функции в C. Любой правильно работающий компилятор C должен принять его. Однако это не разрешено в C ++, поэтому каждый правильно работающий компилятор C ++ должен отклонять его (хотя в обоих случаях обратите внимание, что для достижения правильной функции может потребоваться определенная комбинация флагов компилятора). Когда-то давно компиляторы C only принимали этот стиль и отклоняли код вроде: float absolute_value(float x) {}. Это было добавлено (вместе с прототипами функций) во время стандартизации C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...