用C语言编写比较器

时间:2013-11-24 21:09:10

标签: c struct comparator

有没有办法在C中重载比较器,以便我们可以使用>=<

来比较结构

例如:

struct point {
    int x, y;
}

struct point pt1 = make_point(2, 4);
struct point pt2 = make_point(2, 3);

我们可以在y值(或结构的某个任意成员)上进行比较。

if (pt1 > pt2)
{
printf("Point 1 is greater than Point 2\n");
}

它会打印出来,Point 1 is greater than Point 2自4&gt; 3。

4 个答案:

答案 0 :(得分:3)

不,你不能在C中重载运算符。你甚至无法在C中重载普通的函数

答案 1 :(得分:2)

不,这是不可能的。这是一个C ++功能。

你应该写一些函数,这样做并使用它:if( is_greater( pt1, ptr2 ) )这样的东西。

答案 2 :(得分:1)

不,C不支持运营商重载。您可以拥有的最好的是编写比较器函数。

答案 3 :(得分:1)

正如其他人所说,C不支持运营商重载。这种编程范例通常通过使用函数指针传递比较器操作在C中完成。例如,请参阅标准库中的qsort