C++保留字

内容目录

先上ANSI C规定的C++保留字

auto
break
case
char
char
const
continue
default
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while

在VS2008中调试通过。提交到USACO竟然是编译错误!

仔细检查,最后将嫌疑锁定在叫xor的变量上。改掉变量名,一切正常~

我们都知道,C++中异或运算的运算符是^,ANSI国际标准也没有规定xor这个保留字。但是,各种编译器(如USACO用的GCC)因平台原因,通常会添加一些自己的保留字。xor应该就是其一。

为了避免这种问题,我找到另一张列表,这里是扩充过的C++保留字,尽管一些在国际标准中没有,但作为一种编程习惯,我们应避免将它们作为自己的标识符。

and                                  and_eq                          asm                                auto
bitand                              bitor                              bool                                break
case                                catch                              char                                class
compl                              const                             const_cast                      continue
default                            delete                              do                                 double
dynamic_cast                  else                                 enum                             explicit
export                            extern                             false                               float
for                                 friend                               goto                              if
inline                              int                                   long                               mutable
namespace                      new                                not                                 not_eq
operator                         or                                  or_eq                               private
protected                        public                             register                           signed
reinterpret_cast               return                            short                              struct
sizeof                             static                              static_cast                      throw
switch                            template                         this                                 typeid
true                               try                                 typedef                            using
typename                       union                              unsigned                         wchar_t
virtual                             void                              volatile                              while
xor                               xor_eq