[ANSI C] Proszę o pomoc - uniwersalna funkcja porównując

0

Chciałbym napisać uniwersalną (tj. działającą dla standardowych typów danych float, char oraz int) funkcję następującej postaci:

 int porownaj(const void *a, const void *b) 

która zwracałaby następujące wartości:
-1 jeżeli a<b
0 jeżeli a=b
1 jeżeli a>b

Chodzi mi o to, aby przy użyciu jednej funkcji porównywać zarówno np. dwie liczby f1, f2 typu float, jak i c1 oraz c2 typu char.

Implementacja w czystym C.

0

w c++ powiedzialbym uzyj szablonu ale szczerze mowiac to nie wiem czy w ANSI C sa szablony :). Swoja droga ciekawe pytanie. To sa czy nie ??

// nie ma [mf]

0

W czystym C tego nie zrobisz. Nawet w funkcji bibliotecznej qsort musisz napisać funkcje zwrotną operującą na konkretnych typach. Ewentualnie możesz pokombinować z #define

0

Naprawdę nie da się tego zrobić?? Bo ja potrzebuję takiej funkcyjki, żeby zrobić uniwersalne sortowanie (wzorując się na qsort)...

0

wiesz co, cos mi sie o glowe obija ze mozna zrobic qsorta poprzez makra, ale primo do konca nie jestem tego pewien, secundo naprawde nie wiem jak to mialo by wygladac
i po trzecie to nie mam pojecia czy ANSI c by to przelknal :(

0

C to język bardzo prosty, można by rzec średniowieczny. Nie jest zaprojektowany by robić rzeczy na takim poziomie abstrakcji. Natomiast jeśli pokombinujesz z preprocesorem to na pewno uda się coś sklecić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1