c++ - 是否可以在 gcc 中关闭对 "and"/"or" boolean 运算符使用的支持?

标签 c++ gcc compiler-construction syntax boolean

GCC 似乎允许使用“and”/“or”代替“&&”/“||”在 C++ 代码中;然而,如我所料,许多编译器(尤其是 MSVC 7)不支持这一点。 GCC 允许这样做的事实给我们带来了一些烦恼,因为我们有不同的开发人员在多个平台上使用相同的代码库,偶尔,当人们在 Python 和 C++ 开发之间来回切换时,这些“错误”会出现。

理想情况下,我们都会记得使用适当的语法,但对于那些我们偶尔会搞砸的情况,如果 GCC 不让它溜走,那就太好了。有人对此有任何想法吗?

如果“and”和“or”只是#defines,那么在使用 GCC 时我可以使用#undef,但我担心它更有可能在更基础的层面上内置到编译器中。

谢谢。

最佳答案

它们是 C++ 标准的一部分,例如参见 this StackOverflow answer (其中引用了标准的相关部分)。

同一个问题的另一个答案提到了如何做相反的事情:让它们在 MSVC 中工作。

要在 GCC 中禁用它们,请使用 -fno-operator-names .请注意,通过这样做,您实际上正在切换到 C++ 的非标准方言,并且存在您最终编写的代码可能无法在符合标准的编译器上正确编译的风险(例如,如果您声明具有通常会保留的名称的变量)。

关于c++ - 是否可以在 gcc 中关闭对 "and"/"or" boolean 运算符使用的支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1069352/

相关文章:

c++ - 为什么这个模板函数不能编译 C++

c++ - 使用动态库 qpOASES 和 CMakeList.txt 时出现 undefined reference to qpOASES 错误

c - mingW 中的标准 C 库

gcc - 如何在不使用 Unix 中的 ./a.out 命令的情况下执行 a.out 文件

c# - 具体来说,编译器如何积极优化生成的字节码?

compiler-construction - 缺少 Visual Studio 2010 : COBOL in VS 2010,?

c++ - 在 Linux 上链接 Zeromq 库的 Makefile 问题

c++ - 无法在派生类的子命名空间中实现方法

c - gcc -O2 与没有导致错误

compiler-construction - 软件管道有什么好处?