Кажется, что простые изменения в файле C ++, особенно с шаблонами, могут генерировать страницы ошибок. Этот конкурс состоит в том, чтобы увидеть, какой самый большой «удар доллара», то есть более подробный вывод ошибок с наименьшим изменением исходного кода (добавление 1 символа).
Поскольку другие языки более разумны, это будет ограничено C ++ и gcc версии 4.x.
правила
Исходный исходный файл должен компилироваться с gcc 4.9.2 в объектный код без ошибок.
Один символ ASCII добавляется в исходный код для создания опечатки, увеличивая размер файла на 1 байт.
Компилятор запускается с параметрами по умолчанию. Необходимые опции как
-cи-std=c++11разрешены, опции как-Wallнет.Метрика есть
number of bytes of generated error messages ----------------------------------------------------------------------- (bytes of source code with typo) (length of filename passed to compiler)Ответы будут проверены с http://ideone.com/ C ++ 4.9.2.
Пример:
Имя файла составляет a.cpp5 байтов.
int foo();
Рабочая подборка
gcc -c a.cpp
Поврежденный исходный код:
in t foo();
Неудачная компиляция
$ gcc -c a.cpp
a.cpp:1:1: error: ‘in’ does not name a type
in t foo();
^
$ gcc -c a.cpp |& -c wc
64
$ wc -c a.cpp
12 a.cpp
Оценка: 64/12/5 = 1,0666
Лучшая попытка: вставить {между скобкамиfoo()
$ gcc -c a.cpp |& wc -c
497
Новый счет: 497/12/5 = 8,283
Удачи!
ОБНОВИТЬ
Я призываю людей игнорировать рекурсивную реализацию. Это технически выигрывает, но не в духе конкурса.
ОБНОВЛЕНИЕ 2
Как отмечали многие, конкурс, вероятно, был бы более интересным, если бы не был допущен препроцессор Си. Поэтому я хотел бы призвать людей публиковать решения, которые вообще не используют команды препроцессора. Это подразумевает, что никакие заголовочные файлы вообще не используются, поскольку #includeэто запрещено!
Что касается использования IDEONE для проверки, вам разрешено либо использовать выход IDEONE напрямую (и имя источника как prog.cpp), либо вы можете запустить вывод IDEONE через глобальный поиск и замену ( s/prog.cpp/a.cc/например) и притворяться, что вы смогли установить имя файла напрямую.
ОБНОВЛЕНИЕ 3
Как отмечали люди, Ideone слишком ограничен и требует связывания, а не просто создания объектного файла. Поскольку этот конкурс проводится исключительно во имя веселья, пожалуйста, будьте честны и укажите, что вы использовали, чтобы получить свой счет. Либо используйте ideone, либо используйте самую ванильную сборку (все значения по умолчанию) из gcc 4.9.2, которую вы можете собрать. Конкурс призван привлечь внимание к ужасным сообщениям об ошибках C ++.