替代令牌是有效的 c ++ 关键字,但在Visual Studio 2013中,以下内容会发出编译错误(未声明的标识符):
int main(int argc, const char* argv[])
{
int k(1), l(2);
if (k and l) cout << "both non zero\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
既然and or not有很长一段时间了,有没有理由不实施它们?
Ben*_*igt 24
你问的理由是什么.这是一个可能的原因,不一定是影响Visual C++团队的最重要原因:
/permissive-或/Za最大限度地遵守,这将导致这些被视为关键字./Ze通过包含头文件将它们视为关键字的解决方法既简单又便携.(G ++的解决方法-fno-operator-names也不错,但是将选项放在源代码而不是构建系统中会更好一些.)AnT*_*AnT 14
形式上,这些关键字是实现的,并且由编译器内在支持,不包括任何头.但是,为此,您必须在该C++编译器的"更标准"模式下编译源代码,这意味着使用该/Za选项.
根据意图,该/Za选项应该"禁用编译器扩展".当然,不支持在兼容的编译器中应该存在的东西不能被正式限定为"编译器扩展".然而,就目前的情况而言.
Bri*_*ian 12
VS是不合格的.这是个老消息.
要使用替代令牌,请包含<ciso646>标题.根据标准,包括这个头在C++中应该没有效果.但是,你确实需要在VS. 因此,只要有可能您正在使用VS进行编译,就可以随时包含它.
| 归档时间: |
|
| 查看次数: |
5459 次 |
| 最近记录: |