2009-10-19 4 views
5

Có phải '@' được sử dụng trong C++ không? Trong số yacc file, thẻ này được liệt kê dưới dạng mã thông báo. Và tôi chắc chắn tôi không thể sử dụng @ như là một phần của một tên biến. @ Được sử dụng trong C++? và làm thế nào tôi có thể sử dụng nó?Có phải '@' được sử dụng trong C++ không?

+0

Nó được liệt kê dưới dạng mã thông báo nhưng nó không thực sự được sử dụng ở bất kỳ đâu trong ngữ pháp đó. –

Trả lời

8

Không, nó không được sử dụng trong C++. Nó không xuất hiện ở bất kỳ đâu trong tiêu chuẩn. Đặc biệt, nó không xuất hiện trong tập hợp các ký tự C++ hợp pháp [lex.charset].

+1

Một số trình biên dịch sử dụng '@' mặc dù cho tên định danh sau khi mang tên. Xem http://en.wikipedia.org/wiki/Name_mangling#How_different_compilers_mangle_the_same_functions chẳng hạn. – Joey

+2

@Johannes: đúng nhưng điều này hoàn toàn không liên quan đến cú pháp C++ và do đó cho một thông số kỹ thuật lexer. Trong tệp 'yacc', sự hiện diện của biểu tượng' @ 'là một sai lầm. Hơn nữa, biểu tượng không được sử dụng ở bất kỳ nơi nào khác trong tệp 'yacc'. –

+1

Một ký tự nguồn không phải nằm trong bộ ký tự nguồn _basic_ (vì vậy '@' không nhất thiết không được phép), nhưng nó phải được xử lý như thể nó xuất hiện như một \ uXXXX thoát ký tự phổ quát. Vì vậy, các ký tự nguồn không cơ bản không thể xuất hiện trong bất kỳ mã định danh hoặc mã thông báo ngôn ngữ nào, nhưng chúng có thể xuất hiện trong các ký tự chuỗi ký tự và chuỗi ký tự. –

1

Như các câu trả lời ở trên đã đề cập, '@' không phải là một phần tiêu chuẩn C++; tuy nhiên, nó xuất hiện trong Objective-C, và do đó trong Objective-C++, và do đó, trong mã thực tế, chẳng hạn như WebKit.