Я читаю лекцию по истории C и хотел бы показать некоторые идиомы, которые раньше были невозможны, но сейчас есть (в частности, определение переменных в середине блока). Я хотел бы показать, что старые компиляторы C не будут компилировать его.
gcc
имеет опцию -std=
для установки стандарта языка. К сожалению, установка его для -std=c89
не приводит к ошибкам компиляции при определении переменных в середине блока.
Я надеялся на более точную стандартную версию (т. Е. - -std=knr
), но я не мог найти такую возможность.
Я что-то упустил? Это ошибка в GCC?
gcc (Ubuntu 8.2.0-7ubuntu1) 8.2.0
Код, который ошибочно компилируется:
#include <stdio.h>
int main(argc, argv)
int argc;
char *argv[];
{
printf("Hello, world\n");
int a;
return 0;
}