2017-07-11 13 views
5

C++の命名規則に関する文書を読んだことがありますが、それらは使用可能な名前のようです。私はなどiteryesnooutiError、のような名前の変数/列挙型を作成しようとしたときに変数/列挙型の名前として "yes"、 "no"、 "i"、 "out"を使用するのは安全ですか?

しかし、実際には、Visual Studioは、妙に彼らのためにイタリックフォントを使用します。

enter image description here

私は、彼らが特別なもののために予約されていることを推測し、IDE(例えばリファクタリング/名前変更プロセス)私はそのような名前を使用する場合は妙に行動するかもしれないことができます。

これらの名前を実際に使用するのは安全ですか?私はあまりにも恐慌ですか?

あまりにも初心者や不適切な質問の場合は申し訳ありません。
私はそれについて数週間疑うが、あまりにも恐れて尋ねる。

+0

これらの名前は、あなたが使用することは合法です。 'iter'と' i'は 'for'ループの範囲に限定するときによく使われます。彼らは意味がないので、特に*良い*名前ではないことを覚えておいて、コードを理解するのを助けません。 – BoBTFish

+0

@BoBTFishありがとう!あなたは "はい"、 "いいえ"についても知っていますか?私はそれらを使用すべきではありませんか?常にこの方法であれば、イタリック体は悪い習慣であると仮定し、コンパイラの警告のように扱います。 – cppBeginner

+1

@cppBeginner - それは非常に主観的です。 1つのスコープでは、それらの名前は、その使用を理解するために必要なすべての意味を持ちます。別の方法では、悲惨なことに不十分な場合があります。私たちが与えることができる客観的な答えはありません。 – StoryTeller

答えて

4

これらの名前は有効で、任意の「害」を引き起こすことはありません、標準は言う:

  • 2つのアンダースコア(_ _)が含まれているかに続いてアンダースコアで始まり、それぞれの名前大文字(2.11)は、任意の用途のために 実装に予約されています。

  • アンダースコアで始まるそれぞれの名前

  • は、グローバル名前空間の名前として使用するための実装に予約されています。

すべてのあなたの名前は、ユーザー・コード内で使用する微であることを意味します。 Visual Studioでは、通常、ループで使用されるのはiiterなので、これらの名前の場合があります。

+0

Visual Studio固有の症状ですか?ありがとうございました – cppBeginner

+0

@cppBeginnerはい。 –

1

これらの名前は、Rick Astley氏が説明したように、標準C++では予約されていません。実装では、C++/CLIでの拡張子ref classなど)を提供する追加の予約語​​を受け入れることを選択できます。このようrefコンテンツキーワードあるref class、のようにいくつかのケースでは、これらの拡張機能は拡張された言語の範囲でよく形成さそう悪い形成されたプログラムを作ります。他の場合には、整形式のプログラムは、その意味を変えたり、悪い形になることがあります。前者の場合、すべての必須診断を発行する限り、実装はまだC++標準に準拠しています。後者の場合、それは確かに適合していません。

後者の種類の拡張子をとすることが推奨されます。などです。コマンドラインオプションを使用して、実装には完全に標準に準拠したモードがあります。私の当面の推測では、実際にはVC++を使用して、標準(実装のバグにもかかわらず)によって要求されるように動作しますyesnoiiterを含む整形式のプログラムを書くことができないということです。

IDEは別の獣ですが、それはC++標準の範囲外であると考えられ、完璧に整形されたコードを書くことを妨げたり、停止さえするかもしれません。それは、依然として実装の問題の品質、または顧客満足の問題になります。

関連する問題