#c
#c
Вопрос:
int main()
{
int res;
funcAdd(10,20);
}
int funcAdd(int a,int b)
{
return a b;
}
В приведенной выше программе main не распознает функцию funcAdd(), поскольку она определена после main и в начале нет объявления. Если компилятор C выполнил 2 прохода программы, то это не должно быть проблемой, поскольку он будет знать, что функция funcAdd() будет определена на втором проходе. Означает ли это, что C является компилятором с одним проходом? Пожалуйста, проясните мои сомнения.
Комментарии:
1. это не имеет никакого отношения к действительности программы
2. Ошибочность подтверждения следствия. То, что однопроходный компилятор не может распознать funcAdd в точке вызова, не означает, что компилятор, который не распознает funcAdd в точке вызова, является однопроходным.
Ответ №1:
Язык C не определяет, сколько проходов должен выполнить компилятор. Однако в нем / указано /, что функции должны быть объявлены до их использования. Следовательно, ваш код недействителен, независимо от того, сколько проходов делает компилятор.
Ответ №2:
Ваши рассуждения неверны. Компилятор C может выполнить столько проходов, сколько захочет, но в этом случае он все равно должен возвращать ошибку, потому что так гласит стандарт.