ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
24 марта
1506544 Топик полностью
Eddy_Em (17.03.2025 15:09, просмотров: 198) ответил Dingo на Приколюха. DeepSeek попался.
Вот, я его попросил, и он мне такую портянку накатал: 
#include <stdint.h>

// MAX functions for each type
static inline int16_t max_i16(int16_t a, int16_t b) { return a > b ? a : b; }
static inline int32_t max_i32(int32_t a, int32_t b) { return a > b ? a : b; }
static inline int64_t max_i64(int64_t a, int64_t b) { return a > b ? a : b; }
static inline float max_float(float a, float b) { return a > b ? a : b; }
static inline double max_double(double a, double b) { return a > b ? a : b; }

#define MAX(x, y) _Generic((x), \
    int16_t: max_i16, \
    int32_t: max_i32, \
    int64_t: max_i64, \
    float: max_float, \
    double: max_double \
)((x), (y))

// MIN functions for each type
static inline int16_t min_i16(int16_t a, int16_t b) { return a < b ? a : b; }
static inline int32_t min_i32(int32_t a, int32_t b) { return a < b ? a : b; }
static inline int64_t min_i64(int64_t a, int64_t b) { return a < b ? a : b; }
static inline float min_float(float a, float b) { return a < b ? a : b; }
static inline double min_double(double a, double b) { return a < b ? a : b; }

#define MIN(x, y) _Generic((x), \
    int16_t: min_i16, \
    int32_t: min_i32, \
    int64_t: min_i64, \
    float: min_float, \
    double: min_double \
)((x), (y))


Я просил:

Is it possible to make common functions MAX and MIN in C language using C-generics? The data types are: int16_t, int32_t, int64_t, float and double.

eddy-em.livejournal.com github.com/eddyem