Lối \u000d
thoát chấm dứt một nhận xét vì các \u
lối thoát được chuyển đổi thống nhất thành các ký tự Unicode tương ứng trước khi chương trình được mã hóa. Bạn có thể sử dụng như nhau \u0057\u0057
thay vì //
để bắt đầu một bình luận.
Đây là một lỗi trong IDE của bạn, cần đánh dấu cú pháp dòng để làm rõ rằng \u000d
kết thúc bình luận.
Đây cũng là một lỗi thiết kế trong ngôn ngữ. Nó không thể được sửa chữa ngay bây giờ, vì điều đó sẽ phá vỡ các chương trình phụ thuộc vào nó. \u
các lối thoát nên được chuyển đổi thành ký tự Unicode tương ứng bởi trình biên dịch chỉ trong các ngữ cảnh trong đó "có nghĩa" (chuỗi ký tự và mã định danh, và có lẽ không ở đâu khác) hoặc chúng đã bị cấm tạo các ký tự trong phạm vi U + 0000 , hoặc cả hai. Một trong những ngữ nghĩa đó sẽ ngăn không cho bình luận bị chấm dứt bởi \u000d
lối thoát, mà không can thiệp vào các trường hợp \u
thoát là lưu ý hữu ích mà bao gồm sử dụng các \u
lối thoát bên trong các bình luận như một cách để mã hóa các bình luận trong một tập lệnh không phải là tiếng Latinh, bởi vì soạn thảo văn bản có thể có một cái nhìn rộng hơn về nơi\u
thoát là đáng kể hơn trình biên dịch nào. (Tuy nhiên, tôi không biết bất kỳ trình soạn thảo hoặc IDE nào sẽ hiển thị \u
thoát như các ký tự tương ứng trong bất kỳ ngữ cảnh nào .)
Có một lỗi thiết kế tương tự trong họ C, 1 trong đó backslash-newline được xử lý trước khi xác định ranh giới nhận xét, ví dụ:
// this is a comment \
this is still in the comment!
Tôi đưa ra điều này để minh họa rằng nó rất dễ gây ra lỗi thiết kế đặc biệt này và không nhận ra rằng đó là lỗi cho đến khi quá muộn để sửa nó, nếu bạn đã quen nghĩ về token hóa và phân tích cú pháp theo cách mà các lập trình viên nghĩ về mã thông báo và phân tích cú pháp. Về cơ bản, nếu bạn đã xác định ngữ pháp chính thức của mình và sau đó ai đó đưa ra một trường hợp đặc biệt cú pháp - tricles, backslash-newline, mã hóa các ký tự Unicode tùy ý trong các tệp nguồn giới hạn ở ASCII, bất cứ điều gì - cần được thêm vào, thì dễ dàng hơn thêm một vượt qua chuyển đổi trước mã thông báo hơn là xác định lại mã thông báo để chú ý đến nơi sử dụng trường hợp đặc biệt đó.
1 Đối với trẻ em: Tôi biết rằng khía cạnh này của C là có chủ ý 100%, với lý do - tôi không làm điều này - rằng nó sẽ cho phép bạn sử dụng mã phù hợp về mặt cơ học với các dòng dài tùy ý vào các thẻ đục lỗ. Đó vẫn là một quyết định thiết kế không chính xác.