質問

私はこの 素敵な作品 からReddit.

いち andor ている"代替のトークン"を &&||

私に気づかされます。もちろん、みなさんが、 ジ-グラフトのグラフ, ものの、 andor?いつからですか?ここ最近の規格とは何ですか?

私は確認でVisual C++2008年ということ以外のものの構文エラーになります。かがでしょうか。

役に立ちましたか?

解決

MSVCを使用すると、拡張機能を無効にする/Zaオプションを使用する場合のみ、キーワードとして、それらをサポートしています。これは、少なくともVC7.1(VS2003)から真です。

あなたはそれらはiso646.hを含めることでマクロとしてサポートすることができます。

私の推測では、彼らは、デフォルトではそれらのキーワード作ることはあまりにも多くの既存のコードを壊す(と彼らが正しい場合、私は驚かないだろう)と信じている。

このはSOのどこかに、ここ数週間前の質問で説明しましたが、私はこいつを見つけるためのSOの検索やGoogleを取得することはできません。

他のヒント

から、C++11標準 2.6/ Alternative tokens:

  1. 代替のトークンの表現は一部の事業者とpunctuators.
  2. すべての言語、各代替のトークンの動作と同じるとともに、それぞれ次のトークンを除き、そのスペル.セットのトークンが定義されたテーブル2.

表2-代替のトークン

alternative primary | alternative primary | alternative primary
--------------------+---------------------+--------------------
   <%          {    |    and         &&   |    and_eq      &=
   %>          }    |    bitor       |    |    or_eq       |=
   <:          [    |    or          ||   |    xor_eq      ^=
   :>          ]    |    xor         ^    |    not         !
   %:          #    |    compl       ~    |    not_eq      !=
   %:%:        ##   |    bitand      &    |

実際の質問に答えるために:

これは最初のC ++標準で定義されていました。

C ++標準を参照してください。委員会のドラフト#2は、 のftp://ftp.research.att .COM / DIST / C ++のstd / WP / CD2 / body.pdf に、それは非権威だが、時代遅れの、およびいくつかの場所では部分的に正しくありません。具体的には、セクション2.5で、の代替トークンは、以下が定義されている

Alternative Primary
<%          {
%>          }
<:          [
:>          ]
%:          #
%:%:        ##
and         &&
bitor       |
or          ||
xor         ^
compl       ~
bitand      &
and_eq      &=
or_eq       |=
xor_eq      ^=
not         !
not_eq      !=

正直けれども、私が今までandor、およびnot以外の使用にそれらのいずれかを見たことがない、とさえ、その後、それらはまれです。これらは唯一のC ++で、プレーンなCのコードでは、デフォルトで許可されていないことに注意してください。あなたがCでそれらを使用する場合は、マクロとして自分で#define、またはマクロは(C99のセクション7.9を参照してくださいとして#include <iso646.h> <% >% <: :>を除く上記のすべてを定義するヘッダ%:を、%:%:するか必要があります標準)。

あなたはそれらの残りの部分について学ぶために驚くかもしれ

and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq

C ++キーワードのから一覧ます。

私はGCCの最近のバージョンは、これらのキーワードをサポートすると信じています。

この問題は古いですが、思いの提供いただくようお願いしていた。全回答:代替のトークンがすでに現在の取C++98(ISO/IEC14882:1998年, だと思い、初のISO標準C++).な証明のように自んし、自分のコピーのISO c++98), こちらのリンク-参照C++です。

としてのその他の回答、MSVCのコンパイラの違反 [lex.digraph] 部標準時 /座 フラグが指定されません。

それらを持っ++

GNUコンパイラグラム、私はMS VC ++のことは知りません。

あなたはあなたのコードファイルの先頭にこれを置くことによって、同じ機能を得ることができます。

#define and &&
#define bitor |
#define or ||
#define xor ^
#define compl ~
#define bitand &
#define and_eq &=
#define or_eq ^=
#define xor_eq ^=
#define not !
#define not_eq !=

これはちょっとハックですが、それが動作するはずです。

彼らは、14ページの、新しいC ++標準のためのワーキングペーパーでは、次のとおりです。 C ++標準

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top