pax*_*blo 32
从C++ 11标准来看,2.6/ Alternative tokens
:
表2 - 替代代币
alternative primary | alternative primary | alternative primary
--------------------+---------------------+--------------------
<% { | and && | and_eq &=
%> } | bitor | | or_eq |=
<: [ | or || | xor_eq ^=
:> ] | xor ^ | not !
%: # | compl ~ | not_eq !=
%:%: ## | bitand & |
Run Code Online (Sandbox Code Playgroud)
Mic*_*urr 23
仅当您使用/Za
禁用扩展的选项时,MSVC才支持它们作为关键字; 这至少从VC7.1(VS2003)开始.
您可以通过包含来支持它们作为宏iso646.h
.
我的猜测是他们认为默认情况下将它们设为关键字会破坏现有代码(如果它们是正确的话我也不会感到惊讶).
几个星期前在这里的一个问题上讨论了这个问题,但是我无法通过SO的搜索或谷歌找到该死的东西.
请参阅 C++ 标准。委员会草案#2 可在以下网址免费获得ftp://ftp.research.att.com/dist/c++std/WP/CD2/body.pdf,虽然它是非权威的、过时的,并且在一些地方部分不正确。具体来说,在第 2.5 节“替代令牌”中,定义了以下内容:
替代小学 <%{ %> } <: [ :>] %:# %:%:## 和 && 比特| 或 || 异或^ 补~ 位元& and_eq &= or_eq |= xor_eq ^= 不是 ! not_eq !=
尽管老实说,除了and
、or
、 和之外,我从未见过它们中的任何一个not
,即使如此,这些也很少见。请注意,默认情况下,这些在普通 C 代码中是不允许的,仅在 C++ 中是允许的。如果您想在 C 中使用它们,您必须#define
自己将它们作为宏,或者#include
header <iso646.h>
,它定义了上述所有内容,除了<%
>%
<:
:>
%:
%:%:
作为宏(参见 C99 标准的第 7.9 节)。
归档时间: |
|
查看次数: |
6484 次 |
最近记录: |