2011-01-22 4 views
2

$文字をC/C++の識別子の一部として使用しても安全ですか? このように、

int $a = 10; 
struct $b; 
class $c; 

void $d(); 

答えて

4

いいえC標準は、大文字と小文字の英字、数字、_の使用を保証し、およびUnicodeコードポイントは、(いくつかの例外を除いて)\u (hex-quad)又は\U (hex-quad) (hex-quad)を使用して指定しました。特定のコンパイラは、他の文字を拡張子として許可することがあります。しかし、これは非常に移植性がありません。 Unicodeコードポイント方法は、厳密に言えば(C99では)まだ表示されているにもかかわらず、識別子では基本的に役に立たないことに注意してください(ISO/IEC 9899:1999(E)6.4.2.1、6.4.3)あなたのエディタにリテラル\uXXXXとして。

+0

ちょうど不思議なことですが、この部分はC++でも保証されていますか? – Mehrdad

+0

@Mehrdad、C++ 98標準では、実装定義の文字とUnicodeコードポイントが許可されていない点を除いて、基本的に同じ定義を指定しています - したがって、事実上より限定的です – bdonlan

+0

ああ、大丈夫です! :) – Mehrdad

5

いいえ。いくつかのコンパイラでは非標準拡張です。

1

これは標準ではなく、Microsoft Visual Studio(私が知っている)だけでも識別子に '$'文字を使用することさえできます。

コードをポータブル(または他の人が読むことができる)にしたい場合は、いいえと言います。

+1

gcc(プラットフォームによってデフォルトで有効または無効)、VMS用Digital Cコンパイラ(VMSではシステムライブラリにアクセスする必要があります)。 – AProgrammer

関連する問題