【问题标题】:why >?= and <?= don't work in VC++?为什么 >?= 和 <?= 在 VC++ 中不起作用?
【发布时间】:2009-08-05 15:48:21
【问题描述】:

为什么 &gt;?=&lt;?= 在 VC++ 中不起作用? 但它们在 gcc/g++ 中工作正常 喜欢:a&gt;?=b; 它们的用法正确吗?

【问题讨论】:

  • 它在 gcc 中有什么作用?以前从未见过。
  • 如果像 bdonlan 所说的那样不推荐使用这些,我希望 g++ 在您使用它们时会打印一个警告。我建议使用“-Wall”进行编译(警告所有,即显示所有警告)并尝试编写不产生警告的代码。当您使用这些运算符时,有人可以确认 g++ 确实会打印警告吗?
  • a>?=b a=MIN(a,b) 我将 vim 与 g++ 一起使用并使用“-Wall”进行编译,但从未看到警告。

标签: c++


【解决方案1】:

这些运算符是非标准的,在 GCC 中已被弃用。 G++ 甚至不再支持它们。您应该改用 std::min 和 std::max 。请务必将与他们冲突的disable the window-specific macros#define NOMINMAX。

【讨论】:

    【解决方案2】:

    因为这些是旧的GC++-specific extensions 最小值和最大值。

    来自6. Extensions to the C++ Language

    GNU 编译器为 C++ 语言提供了这些扩展(您也可以在 C++ 程序中使用大多数 C 语言扩展)。如果您想编写检查这些功能是否可用的代码,您可以像测试 C 程序一样测试 GNU 编译器:检查预定义的宏 __GNUC__。您还可以使用__GNUG__ 专门针对 GNU C++ 进行测试(请参阅GNU C 预处理器中的“预定义宏”部分)。

    您应该使用std::minstd::max

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多