Code Bye

C++关键字and 跨平台问题

今天发现在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则不行

50

#include <ciso646>

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++关键字and 跨平台问题