C扩展名:<;?以及>;?操作员

C扩展名:<;?以及>;?操作员,c,gcc,max,min,C,Gcc,Max,Min,我注意到,在某一点上有一本最近的手册: G++最小值和最大值运算符(“早期的G++(不是C编译器)使用这些运算符来为您提供最小值或最大值,但它们长期以来一直被弃用,取而代之的是std::min和std::max 基本上,它们等同于(但不可能对a或b进行双重评估): 或使用std::min的等效程序 我不太喜欢使用C/C++“扩展”(特别是那些已经被弃用和/或删除的扩展),因为它们将我与该语言的特定实现联系在一起 你永远不应该使用非标准的扩展,因为有一个完全合适的标准方法可用。注意,这个问题是针对

我注意到,在某一点上有一本
最近的手册:


G++最小值和最大值运算符(“
早期的
G++
(不是C编译器)使用这些运算符来为您提供最小值或最大值,但它们长期以来一直被弃用,取而代之的是
std::min
std::max

基本上,它们等同于(但不可能对
a
b
进行双重评估):

或使用
std::min
的等效程序

我不太喜欢使用C/C++“扩展”(特别是那些已经被弃用和/或删除的扩展),因为它们将我与该语言的特定实现联系在一起


你永远不应该使用非标准的扩展,因为有一个完全合适的标准方法可用。

注意,这个问题是针对C的。这个问题的所有乐趣来自哪里?谢谢!巧合的是,它与PHP short-form tags@smci相似,不,它是
“注意,这个问题是针对C的。”--请注意,它实际上是针对G++……如果你能提供一个链接,我想给+1。@Matt Joiner,SRSLY?谷歌怎么样?这里:这并不令人难过,因为如果你不知道gnu扩展,你可能会花很长时间试图理解这段代码到底在做什么。@CarlNorum:你应该在第一篇文章中引用一个链接e、 @AlexisWilke但我必须承认,这看起来确实是一个很酷的技巧,如果它没有被替换/弃用的话,我肯定会用它来达到与OP相同的目的。
Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token
a <? b       -->       (a < b) ? a : b
a >? b       -->       (a > b) ? a : b
Offset block_count = cpfs->geo.block_size - block_offset;
if (block_count > count) block_count = count;