Are dollar-signs allowed in identifiers in C++03?, tanımlayıcılardaki dolar işaretlerine C++ 03'te izin verilmez. GCC, C extension olarak sağlar ve C++ 03 modunda doğru bir teşhis verir. Ancak, C++ 11'de int $ = 0
, uyarı vermeden derlenecektir.C++ 11, tanımlayıcılardaki dolar işaretlerine izin veriyor mu?
hiçbir tanısal uygulama tanımlı tanımlayıcılar için gereklidir çünkü $
izin verilebileceğini Bu answer nedenleri:
The answer here is "Maybe": According to §2.11, identifiers may consist of digits and identifier-nondigits, starting with one of the latter. identifier-nondigits are the usual
a-z
,A-Z
and underscore, in addition since C++11 they include universal-character-names (e.g.\uBEAF
,\UC0FFEE32
), and other implementation-defined characters. So it is implementation defined if using$
in an identifier is allowed. VC10 and up supports that, maybe earlier versions, too. It even supports identifiers likeこんばんわ
.But: I wouldn't use them. Make identifiers as readable and portable as possible.
$
is implementation defined and thus not portable.
Bu dil de C++ 03 standardına mevcuttur, bu yüzden bu bulmuyorum çok inandırıcı bir argüman olmak.
§2.10/2
In addition, some identifiers are reserved for use by C++ implementations and standard libraries (17.6.4.3.2) and shall not be used otherwise; no diagnostic is required.
standardında ne değişiklik bir kimlik adı olarak kullanılmak üzere $
verir?
Clang bu konuda uyardı. –
@Shafik Bu [yanıt] (http://stackoverflow.com/a/14595459/3920237), C++ 'nun tanımlayıcılarda "$" olduğunu açıkça söyleyen eski gcc belgelerine bağlanmasıyla yeterince kafa karıştırıcı. Bunu [önişlemci seçenekleri] 'ne taşıdılar (https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html # Preprocessor-Options) tek tanımla 'accept‘ $ 'identifiers.' –
Tarihsel olarak DEC, tüm sistem işlevlerini ve kütüphane işlev adlarını tüm dahili işlevlerinde $$ ile birlikte $ olarak kullandı. Tüm DEC derleyicileri ya $ sembol isimleri ya da haritalama için pragmalar sağlayan uzantılar (ADA ile olduğu gibi). – user3344003