Lỗi chính tả 1 ký tự tạo ra hầu hết các thông báo lỗi từ quá trình biên dịch C ++


51

Dường như các thay đổi đơn giản đối với tệp C ++, đặc biệt là với các mẫu, có thể tạo ra các trang lỗi. Cuộc thi này là để xem "bang of the buck" lớn nhất là gì, đó là đầu ra lỗi dài dòng hơn với thay đổi nhỏ nhất đối với mã nguồn (thêm 1 ký tự).

Bởi vì các ngôn ngữ khác lành mạnh hơn, điều này sẽ bị giới hạn ở C ++ và gcc phiên bản 4.x.

Quy tắc

  1. Tệp nguồn gốc phải biên dịch với gcc 4.9.2 thành mã đối tượng mà không gặp lỗi.

  2. Một ký tự ASCII được thêm vào mã nguồn để tạo lỗi chính tả, tăng kích thước tệp thêm 1 byte.

  3. Trình biên dịch được chạy với các tùy chọn mặc định. Các tùy chọn cần thiết như -c-std=c++11được cho phép, các tùy chọn như -Wallkhông.

  4. Số liệu là

        number of bytes of generated error messages
        -----------------------------------------------------------------------
        (bytes of source code with typo) (length of filename passed to compiler)
    
  5. Câu trả lời sẽ được xác thực bằng http://ideone.com/ C ++ 4.9.2.

Thí dụ:

Tên tệp là a.cpp, dài 5 byte.

int foo();

Biên soạn làm việc

 gcc -c a.cpp

Mã nguồn bị hỏng:

in t foo();

Không biên dịch

$ 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

Điểm: 64/12/5 = 1.0666

Cố gắng tốt hơn: Chèn {giữa các parens củafoo()

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

Điểm mới: 497/12/5 = 8.283

Chúc may mắn!

CẬP NHẬT

Tôi khuyến khích mọi người bỏ qua việc thực hiện đệ quy. Điều đó về mặt kỹ thuật chiến thắng nhưng không phải trong tinh thần của cuộc thi.

CẬP NHẬT 2

Như nhiều người đã lưu ý, cuộc thi có lẽ sẽ thú vị hơn nếu bộ xử lý trước C không được phép. Vì vậy, tôi muốn khuyến khích mọi người đăng các giải pháp hoàn toàn không sử dụng các lệnh tiền xử lý. Điều đó ngụ ý không sử dụng bất kỳ tệp tiêu đề nào, vì #includekhông được phép!

Theo như sử dụng IDEONE để xác thực, bạn được phép sử dụng trực tiếp đầu ra IDEONE (và tên nguồn là prog.cpp) hoặc bạn có thể chạy đầu ra IDEONE thông qua tìm kiếm toàn cầu và thay thế ( s/prog.cpp/a.cc/ví dụ) và giả vờ rằng bạn có thể đặt tên tập tin trực tiếp

CẬP NHẬT 3

Như mọi người đã chỉ ra, Ideone hơi quá hạn chế, đòi hỏi phải liên kết không chỉ tạo tệp đối tượng. Vì cuộc thi này hoàn toàn dưới danh nghĩa của niềm vui, xin hãy trung thực và chỉ định những gì bạn đã sử dụng để có được điểm số của bạn. Hoặc sử dụng ideone hoặc sử dụng bản dựng vanilla nhất (tất cả mặc định) của gcc 4.9.2 khi bạn có thể tập hợp. Cuộc thi nhằm mục đích mang lại nhận thức về sự khủng khiếp của các thông báo lỗi C ++.


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện . Ngoài ra, để thảo luận về những gì nên hoặc không nên tính là trùng lặp, vui lòng đưa cuộc thảo luận lên meta .
Martin Ender

Ba vấn đề với việc sử dụng ideone để xác thực: Nó buộc tên tệp nguồn thành "prog.cpp", nó cắt đầu ra lỗi trình biên dịch thành 64kB và liên kết, thêm lỗi. Vì vậy, nó sẽ không phải là một công cụ xác nhận tốt.
Jason C

Tôi đã sử dụng GCC 4.9.2 từ repo Ubuntu thử nghiệm toolchain.
nneonneo

Tùy chọn mặc địnhgì? Theo tôi biết, bạn có thể định cấu hình các tùy chọn mặc định của gcc tại thời điểm biên dịch.
FUZxxl

2
Mang lại những ký ức: từ khoảng năm 1975, giáo viên vật lý của chúng tôi đã tổ chức một cuộc thi "hầu hết các lỗi từ 10 (bài)

Câu trả lời:


45

gcc 4.5.2, Điểm: 8579.15 (hoặc 14367,49 cho tên tệp "aC", có thể cập nhật sau)

Tệp gốc, 29 byte, biên dịch sạch (a.cpp):

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

Tệp đã sửa đổi, 30 byte:

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

Lỗi:

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

Ghi bàn:

1286873 / (30 * 5) = 8579,15

Đầu và đuôi của đầu ra lỗi:

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

Lưu ý:
- Nếu .Ckết thúc đủ điều kiện là một phần mở rộng hợp lệ thì điểm số là 1.206.869 / (28 * 3) = 14.367,49.
- Nếu số thứ hai được đề xuất của Dennis được thêm vào, tên tệp "a.cpp", điểm sẽ là 80,797,292,934 / (46 * 5) = 351,292,578,97


2
Câu hỏi nói để thêm một ký tự, không thay thế nó.
Dennis

3
@Dennis Ôi trời. Tôi hiểu rồi. Xem chỉnh sửa thứ hai này. Nhận xét của bạn là một phước lành trong ngụy trang.
Jason C

1
@JasonC Tôi không thể nâng cấp đủ số lần này.
isaacg

9
Tôi nghĩ bạn có thể yêu cầu một số điểm vô hạn nếu bạn thêm một giây #include"a.cpp".
Dennis

3
@Dennis Whoa, tốt đẹp! Tôi sẽ để lại câu trả lời vì tôi không nghĩ sẽ tự mình thêm một giây #include. Đối với nó là vô hạn ... nếu nó vẫn chạy khi tôi thức dậy vào sáng mai, nó là vô hạn đối với tôi. Sẽ giữ cho bạn được đăng, ha (mặc dù, hiện tại nó đang hoạt động 5,1 MB / giây wc, vì vậy nếu wcsử dụng bộ đếm 32 bit, theo tính toán của tôi, điều gì đó kỳ lạ có thể xảy ra trong khoảng 13 phút.)
Jason C

31

gcc 4.9.2, điểm: 222.898.664 663.393.783

Điều này chủ yếu dựa trên câu trả lời của @ JasonC , nhưng anh ấy nói anh ấy không muốn nhận tín dụng cho sự cải thiện này.

Đầu ra lỗi của mã dưới đây dài 126.044.818.789 byte. Điểm số sẽ cao hơn nhiều về mặt lý thuyết (và có xu hướng vô cùng khi số lượng câu lệnh bao gồm tăng), nhưng nó giảm trong thực tế bằng cách thêm nhiều câu lệnh bao gồm.

Tệp gốc (37 byte)

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

Tệp đã sửa đổi (38 byte)

/
*#
#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.

6
Điều này về mặt kỹ thuật sẽ không tạo ra đầu ra vô hạn , mặc dù, với công nghệ máy tính hiện tại (hoặc có thể thấy trước), bạn sẽ không sống đủ lâu để thấy nó dừng lại. Về cơ bản, GCC có #includegiới hạn lồng nhau là 200 cấp, do đó, đệ quy của bạn #includethực sự trở thành bộ đếm nhị phân 200 bit.
Ilmari Karonen

3
Chỉ cần thêm nhiều dòng bao gồm để có được một số điểm vô hạn. Kích thước đầu ra tăng nhanh hơn mã.
jimmy23013


2
đã kết thúc sáng nay, với một số lượng lớn bắt đầu bằng số 8 và tôi vô tình đóng cửa sổ trước khi sao chép số , vì tôi thật tuyệt vời. Tôi đang chạy lại nó.
Jason C

3
@JasonC Tôi cũng chạy nó và nhận được đầu ra 77.877.399.160 byte. Điều đó ít vô hạn hơn tôi mong đợi, vì vậy tôi sẽ chạy lại với tên tệp ngắn hơn.
Dennis

25

gcc, 4.9.2, Điểm: 22.2

Tệp gốc: 0 byte (a.cpp)

Biên dịch sạch:

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

Tập tin đã sửa đổi:

(

Lỗi:

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

Ghi bàn

111/1/5 = 22.2


4
Bạn đã vũ phu thế này chưa? Ý tôi là, đây có phải là điểm số cao nhất cho tệp bắt đầu 0 byte không?
Thomas Weller

Không, tôi đã không vũ phu điều này. Tôi chỉ thử 3 hoặc 4 nhân vật khác nhau. Đây chỉ là một câu trả lời hạt giống để khiến mọi người quan tâm đến cuộc thi :)
Mark Lakata

23

11,126.95 9,105.44 2,359.37 1,645.94 266,88 điểm

Lạm dụng tiền xử lý nhiều hơn! Lần này, chúng tôi đang làm cho thư viện chuẩn khóc.

Không có lỗi đánh máy:

#define typedf
#include<fstream>

Với lỗi đánh máy:

#define typedef
#include<fstream>

Lỗi:

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;
  ^

Trên máy Ubuntu của tôi, g++-4.9 -std=c++11 -c a.Ctạo ra 1.101.568 byte lỗi tuyệt vời, với số điểm là 1101568/33/3 = 11.126,95.


7
Bạn nên viết một chương trình để phân tích tất cả các tiêu đề tiêu chuẩn và xác định cái nào #definemang lại cho bạn nhiều điểm nhất.
Jason C

1
Bạn có thể làm nó tồi tệ hơn bằng cách thay thế typedefbằng t;. Giờ đây, bạn không chỉ phá vỡ mọi hoạt động sử dụng typedefmà còn nhận được rất nhiều lỗi "không đặt tên loại". Hoặc %;để tạo "id không đủ tiêu chuẩn dự kiến ​​trước% mã thông báo".
MSalters

1
#define typename *#define int class stddường như tạo ra nhiều lỗi hơn.
jimmy23013

11

62,93 điểm

Chỉ cần một số ma thuật đen meta C ++, được biên dịch với 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;

Ung dung:

#include <memory>

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

template<>
class B<0> {};

B<-1>x;

G ++ có giới hạn đệ quy là 900, do đó, việc thay đổi B<1>thành B<-1>phạm vi 31 bit có ... hiệu ứng thú vị.

  • 96 byte mã (không tính phần cuối của \nmột số trình soạn thảo văn bản sẽ tự động thêm vào vim).
  • Tên tệp 4 chữ cái, a.cc
  • 24165 byte thông báo lỗi và bị cắt ngắn. Thông báo lỗi đầy đủ có 1235889 byte nội dung. Nó sẽ yêu cầu -ftemplate-backtrace-limit=0chuyển đổi. Nó cũng có nghĩa là 3185 điểm đối với tôi!

std::unique_ptr chỉ là lớp mẫu quản lý để phát ra thông báo lỗi dài nhất, được tìm thấy bởi bản dùng thử và lỗi và kiến ​​thức về STL và mèo và các thứ.


2
Nhưng ... làm thế nào tôi có thể thoát khỏi 6 khoảng trắng khi tôi chỉ có 3 mã, @JasonC!
Stefano Sanfilippo

7

Điểm 7.865

Nói đúng ra, Trả lời 0 byte là KHÔNG chính xác, vì ideone.com sẽ từ chối biên dịch tệp mà không gặp lỗi. Điều tương tự cũng đúng với ví dụ int foo();- nó sẽ không được biên dịch trên ideone.com (Tôi không thể nhận xét vì thiếu danh tiếng ...)

Vì vậy, chương trình nhỏ nhất có thể biên dịch mà không có bất kỳ #includeslà:

int main(){}

Nếu bạn thay đổi mã này thành mã sau, nó sẽ thất bại với 409 byte mã lỗi (sau khi đổi tên prog.cpp thành a.cc từ đầu ra ideone.com):

int main(){[}

409 / (13 * 4) = 7.865

Vui lòng cập nhật câu hỏi tương ứng, vì các ví dụ đưa ra không tôn trọng các quy tắc đã cho ...


1
Toàn bộ điều ideone là tất cả các loại ngớ ngẩn.
Jason C

Tôi đồng ý, tôi đã giải quyết quy tắc về ý tưởng sau khi câu hỏi được đăng và câu trả lời đầu tiên được đưa ra. Cat là loại ra khỏi túi bây giờ.
Đánh dấu Lakata

1

C, được đặt tên là .cc

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

Mã lỗi:

.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);}

Xin chào lần nữa! Chương trình ban đầu không có lỗi là gì? (Tôi cho là vậy main(){}, nhưng tôi không chắc) Ngoài ra, đây có phải chỉ là một sự cải tiến của câu trả lời ở trên không? Mặc dù bạn chắc chắn có thể giữ câu trả lời này, nhưng nếu nó được lấy cảm hứng từ câu trả lời của @ StefanM, bạn nên đề cập đến câu trả lời đó. Cuối cùng, bây giờ bạn có 50 đại diện, bạn có thể bình luận ở bất cứ đâu.
NoOneIsHãy

Tôi nghĩ rằng điều này quá gần với câu trả lời của Stefan M .; Tôi sẽ đăng bài này như là một cải tiến được đề nghị cho giải pháp đó. Điều đó đang được nói, câu trả lời trùng lặp được cho phép. Vui lòng đặt bản gốc ở đây và đề cập đến bất kỳ nguồn cảm hứng nào (mặc dù có thể bạn cũng đã nghĩ ra điều này một cách độc lập)
HyperNeutrino

1

Điểm 12.xx (lỗi bằng cách XÓA một ký tự)

Xin vui lòng tha thứ cho việc phá vỡ Quy tắc 2 (IMHO thêm HOẶC xóa một ký tự sẽ theo tinh thần của quy tắc), nhưng điều này đã vô tình xảy ra với tôi (do đó không sử dụng bất kỳ thủ thuật lạm dụng 'cố ý' nào) trong khi viết Mã thực (TM) - cả mã làm việc và mã gây lỗi đều (hoặc nhìn) đơn giản và dễ hiểu, vì vậy tôi nghĩ rằng nó đủ gọn gàng để đưa vào đây. Mã gốc

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

Mã tạo ra lỗi (lần cuối '<' đã bị xóa để nó trông giống như một so sánh ít hơn, nhưng không quá ...)

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

Đó là 'chỉ' 8241 byte thông báo lỗi trình biên dịch trong ideone.com g ++ 4.3.2.


1
Ngay cả khi nó dường như nằm trong tinh thần của thử thách (vì tiêu đề nói "một lỗi chính tả"), điều này không tuân theo quy tắc 2 nói rằng bạn chỉ có thể thêm một ký tự, không xóa hoặc thay đổi.
Jo King
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.