1-stelliger Tippfehler, der die meisten Fehlermeldungen aus der C ++ - Kompilierung generiert

51

Es scheint, dass einfache Änderungen an einer C ++ - Datei, insbesondere bei Vorlagen, zu Fehlerseiten führen können. Bei diesem Wettbewerb geht es darum zu sehen, was der größte "Knall des Bocks" ist, dh die ausführlichere Fehlerausgabe mit der geringsten Änderung des Quellcodes (Hinzufügen von 1 Zeichen).

Da andere Sprachen vernünftiger sind, ist dies auf C ++ und gcc Version 4.x beschränkt.

Regeln

  1. Die ursprüngliche Quelldatei muss mit gcc 4.9.2 kompiliert werden, um fehlerfreien Objektcode zu erhalten.

  2. Ein ASCII-Zeichen wird dem Quellcode hinzugefügt, um einen Tippfehler zu erzeugen, wobei die Dateigröße um 1 Byte erhöht wird.

  3. Der Compiler wird mit Standardoptionen ausgeführt. Notwendige Optionen mögen -cund -std=c++11sind erlaubt, Optionen mögen -Wallnicht.

  4. Metrisch ist

        number of bytes of generated error messages
        -----------------------------------------------------------------------
        (bytes of source code with typo) (length of filename passed to compiler)
    
  5. Die Antworten werden mit http://ideone.com/ C ++ 4.9.2 validiert .

Beispiel:

Der Dateiname ist a.cpp5 Byte lang.

int foo();

Arbeitszusammenstellung

 gcc -c a.cpp

Beschädigter Quellcode:

in t foo();

Fehlgeschlagene Kompilierung

$ 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

Ergebnis: 64/12/5 = 1.0666

Besserer Versuch: {Zwischen Parens von einfügenfoo()

$ gcc -c a.cpp |& wc -c
497

Neue Punktzahl: 497/12/5 = 8,283

Viel Glück!

AKTUALISIEREN

Ich ermutige die Leute, die rekursive Implementierung zu ignorieren. Das gewinnt technisch, ist aber nicht im Sinne des Wettbewerbs.

UPDATE 2

Wie viele Leute bemerkt haben, wäre der Wettbewerb wahrscheinlich interessanter gewesen, wenn der C-Pre-Prozessor nicht zugelassen worden wäre. Daher möchte ich die Leute ermutigen, Lösungen zu veröffentlichen, die überhaupt keine Präprozessor-Befehle verwenden. Das bedeutet, dass überhaupt keine Header-Dateien verwendet werden, da dies #includenicht zulässig ist!

Soweit Sie IDEONE zur Validierung verwenden, können Sie entweder die IDEONE-Ausgabe direkt verwenden (und den Quellennamen als prog.cpp), oder Sie können die IDEONE-Ausgabe über ein globales Suchen und Ersetzen ausführen ( s/prog.cpp/a.cc/zum Beispiel) und so tun, als ob Sie dies könnten Legen Sie den Dateinamen direkt fest.

UPDATE 3

Wie bereits erwähnt, ist Ideone etwas zu restriktiv und erfordert nicht nur die Erstellung von Objektdateien, sondern auch die Verknüpfung. Da dieser Wettbewerb nur zum Spaß dient, seien Sie bitte ehrlich und geben Sie an, mit was Sie Ihre Punktzahl erzielt haben. Verwenden Sie entweder ideone oder die meisten Vanille-Builds (alle Standardeinstellungen) von gcc 4.9.2, wie Sie sie aufbringen können. Der Wettbewerb soll auf die Schrecklichkeit von C ++ - Fehlermeldungen aufmerksam machen.

Mark Lakata
quelle
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben . Alternativ können Sie für Diskussionen darüber, was als Duplikat gelten soll oder nicht , die Diskussion zu Meta weiterleiten .
Martin Ender
Drei Probleme bei der Verwendung von ideone zur Validierung: Der Name der Quelldatei wird auf "prog.cpp" festgelegt, die Compiler-Fehlerausgabe wird auf 64 KB gekürzt und es werden Verknüpfungen erstellt, wodurch zusätzliche Fehler hinzugefügt werden. Es wird also kein gutes Validierungswerkzeug sein.
Jason C
Ich habe GCC 4.9.2 aus dem Toolchain-Test Ubuntu Repo verwendet.
Nneonneo
Was sind Standardoptionen? Soweit ich weiß, können Sie die Standardoptionen von gcc zur Kompilierungszeit konfigurieren.
FUZxxl
2
Erinnerungen
wecken

Antworten:

45

gcc 4.5.2, Score: 8579.15 (oder 14367.49 für Dateiname "aC", wird möglicherweise später aktualisiert)

Originaldatei, 29 Bytes, kompiliert sauber (a.cpp):

#if 0
#include"a.cpp"
#endif

Geänderte Datei, 30 Bytes:

#iff 0
#include"a.cpp"
#endif

Fehler:

$ gcc -c a.cpp 2>&1 | wc -c
1286873

Ergebnis:

1286873 / (30 * 5) = 8579,15

Anfang und Ende der Fehlerausgabe:

a.cpp:1:2: error: invalid preprocessing directive #iff
In file included from a.cpp:2:0:
a.cpp:1:2: error: invalid preprocessing directive #iff
In file included from a.cpp:2:0,
                 from a.cpp:2:
a.cpp:1:2: error: invalid preprocessing directive #iff
In file included from a.cpp:2:0,
                 from a.cpp:2,
                 from a.cpp:2:
a.cpp:1:2: error: invalid preprocessing directive #iff
In file included from a.cpp:2:0,
                 from a.cpp:2,
                 from a.cpp:2,
                 from a.cpp:2:
a.cpp:1:2: error: invalid preprocessing directive #iff
In file included from a.cpp:2:0,
                 from a.cpp:2,
                 from a.cpp:2,
                 from a.cpp:2,
                 from a.cpp:2:
a.cpp:1:2: error: invalid preprocessing directive #iff
In file included from a.cpp:2:0,
                 from a.cpp:2,
                 from a.cpp:2,
                 from a.cpp:2,
                 from a.cpp:2,
                 from a.cpp:2:

... And so on, backing out with second error after max include depth:

a.cpp:3:2: error: #endif without #if
In file included from a.cpp:2:0,
                 from a.cpp:2,
                 from a.cpp:2,
                 from a.cpp:2,
                 from a.cpp:2:
a.cpp:3:2: error: #endif without #if
In file included from a.cpp:2:0,
                 from a.cpp:2,
                 from a.cpp:2,
                 from a.cpp:2:
a.cpp:3:2: error: #endif without #if
In file included from a.cpp:2:0,
                 from a.cpp:2,
                 from a.cpp:2:
a.cpp:3:2: error: #endif without #if
In file included from a.cpp:2:0,
                 from a.cpp:2:
a.cpp:3:2: error: #endif without #if
In file included from a.cpp:2:0:
a.cpp:3:2: error: #endif without #if
a.cpp:3:2: error: #endif without #if

Hinweis:
- Wenn Sie .Csich als gültige Erweiterung qualifizieren , beträgt die Punktzahl 1.206.869 / (28 * 3) = 14.367,49.
- Wenn Dennis 'empfohlenes zweites #include hinzugefügt wird, lautet der Dateiname "a.cpp" und der Score 80.797.292.934 / (46 * 5) = 351.292.578,97

Jason C
quelle
2
Die Frage besagt, dass ein Charakter hinzugefügt und nicht ersetzt werden soll.
Dennis
3
@ Tennis Oh Mann. Ich habe das verstanden. Sehen Sie sich diese zweite Bearbeitung an. Ihr Kommentar war ein Segen in der Verkleidung.
Jason C
1
@JasonC Ich kann das nicht oft genug unterstützen.
Isaacg
9
Ich denke, Sie können eine unendliche Punktzahl beanspruchen, wenn Sie eine Sekunde hinzufügen #include"a.cpp".
Dennis,
3
@ Tennis Whoa, schön! Ich werde die Antwort so lassen, wie sie ist, da ich nicht daran gedacht habe, selbst eine Sekunde hinzuzufügen #include. Es ist unendlich ... Wenn es noch läuft, wenn ich morgen früh aufwache, ist es unendlich genug für mich. Werden Sie auf dem Laufenden halten, ha (obwohl es derzeit 5,1 MB / s leitet wc, wenn wcalso ein 32-Bit-Zähler verwendet wird, kann nach meinen Berechnungen etwas Seltsames in etwa 13 Minuten passieren.)
Jason C
31

gcc 4.9.2, Score: 222.898.664, 663.393.783

Dies basiert stark auf der Antwort von @ JasonC , aber er sagte, er wolle diese Verbesserung nicht würdigen .

Die Fehlerausgabe des folgenden Codes ist 126.044.818.789 Byte lang. Theoretisch sollte der Score viel höher sein (und mit zunehmender Anzahl von include-Anweisungen gegen unendlich gehen), in der Praxis nimmt er jedoch ab, indem mehr include-Anweisungen hinzugefügt werden.

Originaldatei (37 Byte)

/*#
#include"w.cpp"
#include"w.cpp"*/
$ gcc -c w.cpp
$

Geänderte Datei (38 Bytes)

/
*#
#include"w.cpp"
#include"w.cpp"*/
$ gcc -c w.cpp
w.cpp:2:2: error: stray ‘#’ in program
 *#
  ^
In file included from w.cpp:3:0:
w.cpp:2:2: error: stray ‘#’ in program
 *#
  ^
In file included from w.cpp:3:0,
                 from w.cpp:3:
w.cpp:2:2: error: stray ‘#’ in program
 *#
  ^
In file included from w.cpp:3:0,
                 from w.cpp:3,
                 from w.cpp:3:
w.cpp:2:2: error: stray ‘#’ in program
 *#
  ^
In file included from w.cpp:3:0,
                 from w.cpp:3,
                 from w.cpp:3,
                 from w.cpp:3:
⋮
w.cpp:2:2: error: stray ‘#’ in program
 *#
  ^
w.cpp:3:0: error: #include nested too deeply
 #include"w.cpp"
 ^
w.cpp:4:0: warning: extra tokens at end of #include directive
 #include"w.cpp"*/
 ^
w.cpp:4:0: error: #include nested too deeply
w.cpp:2: confused by earlier errors, bailing out
The bug is not reproducible, so it is likely a hardware or OS problem.
Dennis
quelle
6
Dies führt technisch gesehen nicht zu einer unendlichen Ausgabe , obwohl Sie mit der aktuellen (oder vorhersehbaren) Computertechnologie nicht lange genug leben, um zu sehen, wie sie stoppt. Grundsätzlich hat GCC eine #includeVerschachtelungsbeschränkung von 200 Ebenen, sodass Ihre rekursiven Werte #includeeffektiv zu einem 200-Bit-Binärzähler werden.
Ilmari Karonen,
3
Fügen Sie einfach weitere Include-Zeilen hinzu, um eine unendliche Punktzahl zu erhalten. Die Ausgabegröße wächst schneller als der Code.
Jimmy23013
Es hätte auch auf einer der Antworten einer früheren Frage basieren können .
Peter Taylor
2
Es endete heute Morgen mit einer riesigen Zahl, die mit einer 8 begann, und ich schloss versehentlich das Fenster, bevor ich die Zahl kopierte , weil ich großartig bin. Ich leite es wieder.
Jason C
3
@JasonC Ich habe es auch ausgeführt und eine Ausgabe von 77.877.399.160 Bytes erhalten. Das ist viel weniger unendlich als ich erwartet hatte, also werde ich es wieder mit einem kürzeren Dateinamen ausführen.
Dennis
25

gcc, 4.9.2, Score: 22.2

Originaldatei: 0 Bytes (a.cpp)

Kompiliert sauber:

$ gcc -c a.cpp |& wc -c
0

Geänderte Datei:

(

Fehler:

$ gcc -c a.cpp |& wc -c
111

Ergebnis

111/1/5 = 22,2

Mark Lakata
quelle
4
Hast du das schon brute-force gemacht? Ich meine, ist das die höchste Punktzahl für eine 0-Byte-Startdatei?
Thomas Weller
Nein, ich habe dies nicht brutal erzwungen. Ich habe gerade 3 oder 4 verschiedene Charaktere ausprobiert. Dies war nur eine Samenantwort, um die Leute für den Wettbewerb zu interessieren :)
Mark Lakata
23

11.126,95 9.105,44 2.359,37 1.645,94 266,88 Punkte

Mehr Präprozessor-Missbrauch! Dieses Mal bringen wir die Standardbibliothek zum Weinen.

Ohne Tippfehler:

#define typedf
#include<fstream>

Mit Tippfehler:

#define typedef
#include<fstream>

Fehler:

In file included from /usr/include/c++/4.9/iosfwd:39:0,
                 from /usr/include/c++/4.9/ios:38,
                 from /usr/include/c++/4.9/istream:38,
                 from /usr/include/c++/4.9/fstream:38,
                 from a.C:2:
/usr/include/c++/4.9/bits/stringfwd.h:62:33: error: aggregate ‘std::basic_string<char> std::string’ has incomplete type and cannot be defined
   typedef basic_string<char>    string;   
                                 ^
/usr/include/c++/4.9/bits/stringfwd.h:68:33: error: aggregate ‘std::basic_string<wchar_t> std::wstring’ has incomplete type and cannot be defined
   typedef basic_string<wchar_t> wstring;   
                                 ^
/usr/include/c++/4.9/bits/stringfwd.h:78:34: error: aggregate ‘std::basic_string<char16_t> std::u16string’ has incomplete type and cannot be defined
   typedef basic_string<char16_t> u16string; 
                                  ^
/usr/include/c++/4.9/bits/stringfwd.h:81:34: error: aggregate ‘std::basic_string<char32_t> std::u32string’ has incomplete type and cannot be defined
   typedef basic_string<char32_t> u32string; 
                                  ^
In file included from /usr/include/wchar.h:36:0,
                 from /usr/include/c++/4.9/cwchar:44,
                 from /usr/include/c++/4.9/bits/postypes.h:40,
                 from /usr/include/c++/4.9/iosfwd:40,
                 from /usr/include/c++/4.9/ios:38,
                 from /usr/include/c++/4.9/istream:38,
                 from /usr/include/c++/4.9/fstream:38,
                 from a.C:2:
/usr/include/stdio.h:48:25: error: aggregate ‘_IO_FILE FILE’ has incomplete type and cannot be defined
 typedef struct _IO_FILE FILE;
                         ^
/usr/include/stdio.h:64:25: error: aggregate ‘_IO_FILE __FILE’ has incomplete type and cannot be defined
 typedef struct _IO_FILE __FILE;
                         ^
In file included from /usr/include/c++/4.9/cwchar:44:0,
                 from /usr/include/c++/4.9/bits/postypes.h:40,
                 from /usr/include/c++/4.9/iosfwd:40,
                 from /usr/include/c++/4.9/ios:38,
                 from /usr/include/c++/4.9/istream:38,
                 from /usr/include/c++/4.9/fstream:38,
                 from a.C:2:
/usr/include/wchar.h:106:9: error: ‘__mbstate_t’ does not name a type
 typedef __mbstate_t mbstate_t;
         ^
/usr/include/wchar.h:151:38: error: ‘size_t’ is not a type
     const wchar_t *__restrict __src, size_t __n)
                                      ^
/usr/include/wchar.h:159:38: error: ‘size_t’ is not a type
     const wchar_t *__restrict __src, size_t __n)
                                      ^
/usr/include/wchar.h:166:63: error: ‘size_t’ is not a type
 extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
                                                               ^
/usr/include/wchar.h:176:4: error: ‘size_t’ is not a type
    size_t __n) __THROW;
    ^
In file included from /usr/include/wchar.h:180:0,
                 from /usr/include/c++/4.9/cwchar:44,
                 from /usr/include/c++/4.9/bits/postypes.h:40,
                 from /usr/include/c++/4.9/iosfwd:40,
                 from /usr/include/c++/4.9/ios:38,
                 from /usr/include/c++/4.9/istream:38,
                 from /usr/include/c++/4.9/fstream:38,
                 from a.C:2:
/usr/include/xlocale.h:42:9: error: ‘__locale_t’ does not name a type
 typedef __locale_t locale_t;
         ^
In file included from /usr/include/c++/4.9/cwchar:44:0,
                 from /usr/include/c++/4.9/bits/postypes.h:40,
                 from /usr/include/c++/4.9/iosfwd:40,
                 from /usr/include/c++/4.9/ios:38,
                 from /usr/include/c++/4.9/istream:38,
                 from /usr/include/c++/4.9/fstream:38,
                 from a.C:2:
/usr/include/wchar.h:183:5: error: ‘__locale_t’ is not a type
     __locale_t __loc) __THROW;
     ^
/usr/include/wchar.h:186:6: error: ‘size_t’ is not a type
      size_t __n, __locale_t __loc) __THROW;
      ^
/usr/include/wchar.h:186:18: error: ‘__locale_t’ is not a type
      size_t __n, __locale_t __loc) __THROW;
                  ^
/usr/include/wchar.h:196:8: error: ‘size_t’ does not name a type
 extern size_t wcsxfrm (wchar_t *__restrict __s1,
        ^
/usr/include/wchar.h:207:9: error: ‘__locale_t’ is not a type
         __locale_t __loc) __THROW;
         ^
/usr/include/wchar.h:212:8: error: ‘size_t’ does not name a type
 extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2,
        ^
/usr/include/wchar.h:252:8: error: ‘size_t’ does not name a type
 extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject)
        ^
/usr/include/wchar.h:256:8: error: ‘size_t’ does not name a type
 extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept)
        ^
/usr/include/wchar.h:287:8: error: ‘size_t’ does not name a type
 extern size_t wcslen (const wchar_t *__s) __THROW __attribute_pure__;
        ^
/usr/include/wchar.h:306:8: error: ‘size_t’ does not name a type
 extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen)
        ^

[SNIP]

/usr/include/c++/4.9/bits/fstream.tcc:934:35: error: ‘cur’ is not a member of ‘std::ios_base’
    __testvalid = this->seekoff(0, ios_base::cur, _M_mode)
                                   ^
/usr/include/c++/4.9/bits/fstream.tcc:934:50: error: ‘_M_mode’ was not declared in this scope
    __testvalid = this->seekoff(0, ios_base::cur, _M_mode)
                                                  ^
/usr/include/c++/4.9/bits/fstream.tcc:941:25: error: ‘_M_state_last’ was not declared in this scope
    + _M_codecvt->length(_M_state_last, _M_ext_buf,
                         ^
/usr/include/c++/4.9/bits/fstream.tcc:944:15: error: ‘streamsize’ does not name a type
         const streamsize __remainder = _M_ext_end - _M_ext_next;
               ^
/usr/include/c++/4.9/bits/fstream.tcc:945:13: error: ‘__remainder’ was not declared in this scope
         if (__remainder)
             ^
/usr/include/c++/4.9/bits/fstream.tcc:949:35: error: ‘__remainder’ was not declared in this scope
         _M_ext_end = _M_ext_buf + __remainder;
                                   ^
/usr/include/c++/4.9/bits/fstream.tcc:951:25: error: ‘_M_state_cur’ was not declared in this scope
         _M_state_last = _M_state_cur = _M_state_beg;
                         ^
/usr/include/c++/4.9/bits/fstream.tcc:951:40: error: ‘_M_state_beg’ was not declared in this scope
         _M_state_last = _M_state_cur = _M_state_beg;
                                        ^
/usr/include/c++/4.9/bits/fstream.tcc:960:2: error: ‘_M_codecvt’ was not declared in this scope
  _M_codecvt = _M_codecvt_tmp;
  ^
/usr/include/c++/4.9/bits/fstream.tcc:960:15: error: ‘_M_codecvt_tmp’ was not declared in this scope
  _M_codecvt = _M_codecvt_tmp;
               ^
/usr/include/c++/4.9/bits/fstream.tcc:962:2: error: ‘_M_codecvt’ was not declared in this scope
  _M_codecvt = 0;
  ^

g++-4.9 -std=c++11 -c a.CErzeugt auf meinem Ubuntu-Rechner 1.101.568 großartige Fehlerbytes mit einer Punktzahl von 1101568/33/3 = 11.126,95.

nneonneo
quelle
7
Sie sollten ein Programm schreiben, um alle Standardüberschriften zu analysieren und festzustellen, welche #definedie meisten Punkte für Sie ergeben.
Jason C
1
Sie können es weiter durch den Austausch verschlechtern typedefdurch t;. Jetzt brechen Sie nicht nur jede Verwendung von ab, typedefsondern Sie erhalten auch eine Tonne von "t nennt keinen Typ" -Fehlern. Oder %;um "erwartete unqualifizierte ID vor% Token" zu erzeugen.
MSalters
1
#define typename *und #define int class stdschien viel mehr Fehler zu erzeugen.
Jimmy23013
11

62,93 Punkte

Nur ein paar C ++ Meta Black Magic, kompiliert mit g++-4.8 -c -std=c++11 a.cc:

#include<memory>
template<int n>class B:std::unique_ptr<B<n-1>>{};template<>class B<0>{};B<-1>x;

Ungolfed:

#include <memory>

template<int n>
class B: std::unique_ptr<B<n-1>> {};

template<>
class B<0> {};

B<-1>x;

G ++ hat ein Rekursionslimit von 900, so dass ein Wechsel B<1>in B<-1>einen 31-Bit-Bereich einen ... interessanten Effekt hat.

  • 96 Byte Code ( \neinige Texteditoren fügen das letzte nicht automatisch hinzu, vimaber nicht).
  • Dateiname mit 4 Buchstaben, a.cc
  • 24165 Bytes Fehlermeldung, und es ist abgeschnitten. Die vollständige Fehlermeldung enthält satte 1235889 Byte Inhalt. Es würde den -ftemplate-backtrace-limit=0Schalter erfordern . Das würde für mich auch 3185 Punkte bedeuten!

std::unique_ptr ist nur die Template-Klasse, die es schafft, die längste Fehlermeldung auszugeben, die durch Ausprobieren und Wissen über die STL und Katzen und so weiter gefunden wurde.

Stefano Sanfilippo
quelle
2
Aber ... wie kann ich 6 Leerzeichen loswerden, wenn ich nur 3 im Code habe, @JasonC!
Stefano Sanfilippo
7

Ergebnis 7.865

Streng genommen ist die 0-Byte-Antwort NICHT korrekt, da ideone.com die Kompilierung der Datei ohne Fehler ablehnt. Das gleiche gilt für das Beispiel int foo();- es wird nicht auf ideone.com kompiliert (ich kann wegen fehlender Reputation keinen Kommentar abgeben ...)

Das kleinstmögliche Programm zum Kompilieren #includesist also:

int main(){}

Wenn Sie diesen in den folgenden Code ändern, schlägt der Fehler mit 409 Byte Fehlercode fehl (nach dem Umbenennen von prog.cpp in a.cc aus der ideone.com-Ausgabe):

int main(){[}

409 / (13 * 4) = 7,865

Bitte aktualisieren Sie die Frage entsprechend, da die angegebenen Beispiele nicht den angegebenen Regeln entsprechen ...

Stefan M
quelle
1
Die ganze ideone Sache ist alle Arten von doof.
Jason C
Ich bin damit einverstanden, dass ich mich nach dem Posten der Frage und den ersten Antworten mit der Ideone-Regel befasst habe . Katze ist jetzt irgendwie aus dem Sack.
Mark Lakata
1

C, benannt als .cc

main(){constexprs a(){*(int*)0=f;}a(0)}

Fehlercode:

.code.tio.cpp: In function ‘int main()’:
.code.tio.cpp:1:8: error: ‘constexprs’ was not declared in this scope
 main(){constexprs int a(f){*(int*)0=f;}a(0);}
        ^~~~~~~~~~
.code.tio.cpp:1:8: note: suggested alternative: ‘__cpp_constexpr’
 main(){constexprs int a(f){*(int*)0=f;}a(0);}
        ^~~~~~~~~~
        __cpp_constexpr
.code.tio.cpp:1:40: error: ‘a’ was not declared in this scope
 main(){constexprs int a(f){*(int*)0=f;}a(0);}
user75200
quelle
Hallo wieder! Was ist das Originalprogramm, das keinen Fehler macht? (Ich nehme an, das ist es main(){}, aber ich bin nicht sicher) Ist das nicht auch nur eine Verbesserung der obigen Antwort? Sie können diese Antwort zwar auf jeden Fall behalten, aber wenn sie von der Antwort von @ StefanM inspiriert wurde, sollten Sie dies erwähnen. Nachdem Sie nun 50 Wiederholungen haben, können Sie überall Kommentare abgeben.
NoOneIsHere
Ich denke, das ist zu nahe an der Antwort von Stefan M.; Ich würde dies als empfohlene Verbesserung für diese Lösung veröffentlichen. Davon abgesehen sind doppelte Antworten zulässig. Bitte legen Sie das Original hier und erwähnen Sie etwaige Inspirationen (obwohl es möglich ist, dass Sie dies auch unabhängig
erfunden haben
1

Punktzahl 12.xx (Fehler beim LÖSCHEN eines Zeichens)

Bitte verzeihen Sie die Verletzung von Regel 2 (IMHO das Hinzufügen ODER Löschen eines Zeichens wäre im Sinne der Regel), aber das ist mir aus Versehen passiert (daher werden beim Schreiben von Real Code (TM) keine "absichtlich" missbräuchlichen Tricks angewendet). - Sowohl der funktionierende als auch der fehlerverursachende Code sind (oder sehen) einfach und unkompliziert aus, daher dachte ich, dass er ordentlich genug ist, um hier aufgenommen zu werden. Originalcode

#include <iostream>
using namespace std;
int main ()
{
cout<<"test"<<endl;
}

Code, der den Fehler erzeugt (das letzte '<' wurde gelöscht, so dass es wie ein kleiner Vergleich aussieht, aber noooooooooooo ...)

#include <iostream>
using namespace std;
int main ()
{
cout<<"test"<endl;
}

Es sind "nur" 8241 Byte Compiler-Fehlermeldungen in ideone.com g ++ 4.3.2.

user7291
quelle
1
Selbst wenn es im Geiste der Herausforderung zu sein scheint (da der Titel "Ein-Zeichen-Tippfehler" lautet), folgt dies nicht der Regel 2, wonach Sie nur ein Zeichen hinzufügen , nicht löschen oder ändern können.
Jo King