Два на самом деле совершенно разные.
Функция следует шаблону:
return-type function([argument1, argument2... argumentN]) // arguments optional
{
[statement-block]
}
С другой стороны, else-if, то, как вы написали его в стиле C, является особым случаем одного блока else оператора. Точно так же, как вы можете иметь одно утверждение под другим, когда фигурные скобки опущены:
if (boolean-condition)
// ...
else
single-statement;
Допускается также использование одного оператора if-else:
if (boolean-condition)
// ...
else
if (boolean-condition)
{
// ...
}
чаще пишется так, как вы (else if (...)
).
Кроме того, нет списка параметров, только обязательное логическое условие, и в else if
нет типа возврата. Итак, одно из определений подпрограммы, а другое - это два условных блока, соединенных вместе - между ними нет ничего особенного. Это хороший пример того, почему регулярное выражение нельзя использовать для разбора C ++ / HTML / XML / чего-либо со сложной грамматикой.