Мне очень любопытно узнать, почему именно компиляторы C89 будут сбрасывать вас, когда вы пытаетесь смешать объявления переменных и код, например, вот так:
rutski@imac:~$ cat test.c
#include <stdio.h>
int
main(void)
{
printf("Hello World!\n");
int x = 7;
printf("%d!\n", x);
return 0;
}
rutski@imac:~$ gcc -std=c89 -pedantic test.c
test.c: In function ‘main’:
test.c:7: warning: ISO C90 forbids mixed declarations and code
rutski@imac:~$
Да, вы можете избежать подобных вещей, оставаясь подальше от -педантичный. Но тогда ваш код больше не соответствует стандартам. И как любой, кто может ответить на этот пост, вероятно, уже знает, это не просто теоретическая проблема. Платформы, такие как компилятор C от Microsoft, обеспечивают эту скорость в стандарте при любых и любых обстоятельствах.
Учитывая, насколько древний C, я могу предположить, что эта функция связана с некоторой исторической проблемой, восходящей к экстраординарным аппаратным ограничениям 70-х годов, но Я не знаю подробностей. Или я совершенно не прав?