От bruce eckel - «хотя u всегда должен объявлять функции, включая заголовочный файл, объявления функций не являются« важными в c ». Его возможно в c, но не cpp для вызова функции u havent объявлен. Это опасная практика, потому что c-компилятор может предположить, что функция, вызываемая с помощью целочисленного аргумента, имеет список аргументов, содержащий целое число, даже если оно может содержать float. Это может привести к ошибкам «мой вопрос в том, что даже если функция не объявлена, во время ее определения мы должны упомянуть тип данных аргументов [VOID FUNC (INT A)], поэтому как компилятор может считать, что float является целым числом?Необходимость объявления функции в c и cpp
-2
A
ответ
1
Компилятор делает допущение о поставляемых параметрах, если функция не объявлена или не определена до того, как должно быть сделано предположение. Попробуйте следующий код и проверьте результат (проверено с помощью gcc):
#include <stdio.h>
int main (int argc, char * argv[])
{
x(1);
x(1.);
x(1);
return 0;
}
void x(double y)
{
printf ("%f\n", y);
}
Предположим, что компилятор видит 'foo (8)'. Следует ли предположить, что foo принимает целое число или float? Если вы ожидаете, что все авторы программного обеспечения будут достаточно осторожны, чтобы написать 'foo (8.0)', у вас будет грубое пробуждение. –