Рассмотрим эту программу C:
int main()
{
puts("Hello world!");
return 0;
}
Это компилируется и работает нормально и, насколько я понимаю, является законным C89. Однако я не уверен на 100% в этом. Компиляция в режиме C99 с clang сообщает мне, что implicit declaration of function 'puts' is invalid in C99
(что заставляет меня думать, что стандарт C должен был измениться в C99, чтобы сделать объявление неявной функции незаконным, что я и пытаюсь подтвердить).
Законно ли объявление неявной функции в C89? (даже если это плохая идея (если только вы не участвуете в запутанном коде C))