今天发现在vs2013编译器是不支持关键字and的,这样的话,以下程序在vs2013编译报错:
#include <iostream> int main(int argc, char *argv[]) { int x = 1; int y = 2; if (x == 1 and y == 2) std::cout << x << y << std::endl; else std::cout << "...." << std::endl; return 0; }
但是在gcc下,必然没有问题。
那么,假如修改以上代码,使得可以跨平台编译。例如,定义一个宏:#define and &&,但是这样的话,gcc又不能不过编译,怎么样解决该问题?
解决方案
100
and虽然不是C++的保留关键字,但是C++的保留替代标记。
相似的还有如下这些:
and and_eq bitand bitor compl not
not_eq or or_eq xor xor_eq
and是为了那些欧、非、拉非英语国家的没有&键的键盘,保留的关键字
VC对此C++标准不兼容,原因是windows中英文版本要求必须是101以上兼容键盘,都有&键。在VC里面你可以用and作为变量名,GCC则不行
相似的还有如下这些:
and and_eq bitand bitor compl not
not_eq or or_eq xor xor_eq
and是为了那些欧、非、拉非英语国家的没有&键的键盘,保留的关键字
VC对此C++标准不兼容,原因是windows中英文版本要求必须是101以上兼容键盘,都有&键。在VC里面你可以用and作为变量名,GCC则不行
50
#include <ciso646>