$
C/C++で文字を識別子の一部として使用しても安全ですか? このような、
int $a = 10;
struct $b;
class $c;
void $d();
$
C/C++で文字を識別子の一部として使用しても安全ですか? このような、
int $a = 10;
struct $b;
class $c;
void $d();
いいえ; 一部のコンパイラでは非標準の拡張機能です。
いいえ。C 標準では、またはを使用して指定された大文字と小文字の英字、数字、_
および Unicode コードポイントの使用のみが保証されます(いくつかの例外があります)。特定のコンパイラは、拡張子として他の文字を許可する場合があります。ただし、これは非常に移植性がありません。(ISO/IEC 9899:1999 (E) 6.4.2.1, 6.4.3) さらに、Unicode コードポイント メソッドは、厳密に言えば (C99 で) 許可されているにもかかわらず、識別子では基本的に役に立たないことに注意してください。エディターでリテラルとして。\u (hex-quad)
\U (hex-quad) (hex-quad)
\uXXXX
これは標準ではなく、Microsoft Visual Studio (私が知っている) だけが識別子に「$」文字を使用することさえできます。
したがって、コードを移植可能 (または他の人が読めるようにする) にしたい場合は、ノーと言います。