Кажется, что простые изменения в файле 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.cpp
5 байтов.
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 ++.