Skip to content

Use _Generic()'s for API with different types? #15

@skirpichev

Description

@skirpichev

E.g. zz_add() for zz_add(const zz_t *, const zz_t *, zz_t *) and zz_add_i32(const zz_t *, int32_t, zz_t *). It's since C11, but CPython does require C11-conformant compiler.

Details
#include <math.h>
#include <stdio.h>

double mysin(double x)
{
    return sin(x);
}

#define mysin(X) _Generic((X),           \
                          double: mysin, \
                          float: sinf)(X)

int main(void)
{
    double x = 8.0;
    const float y = 3.375;
    printf("sin(8.0) = %f\n", mysin(x));
    printf("sinf(3.375) = %f\n", mysin(y));
//  following not works:
//  printf("sinl(3.375) = %f\n", mysin((long double)y));
    return 0;
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions