0

strcmp数値を比較するためのようなインターフェイスを作成したい。たとえば、 C (C++ ではない) でint if 、if 、ifncmp(x, y)を返す。> 0x > y0x = y< 0x < y

必ずしも型を制約したくはありませんが、私の主な関心はsigned long ints とdoubles を比較することです。「インターフェース」は、のようにマクロにtgmath.hすることも、関数 (のセット) にすることもできます。と のすべてのペアが機能するようsigned long intdoubleします。たとえば(signed long int, double)、動作するはずです。(double, double)

私が現在使用しているのは、次のマクロです。

#define ncmp(x, y) ((x) > (y)) - ((x) < (y))

この単純なマクロには落とし穴がありますか? 数値を比較するためのより優れた堅牢なソリューションはありますか?

どんな助けでも大歓迎です!

4

2 に答える 2