How to declare a function argument that can accept any type in C

2 Answers

0 votes
#include <stdio.h>
 
void AcceptAnyType(void *x, char type) {
    switch (type) {
        case 'i':
            printf("int: %d\n", *(int*)x);
            break;
        case 'c':
            printf("char: %c\n", *(char*)x);
            break;            
        case 'f':
            printf("float: %f\n", *(float*)x);
            break;
        case 's':
            printf("string: %s\n", (char*)x);
            break;
        default:
            printf("Unknown type\n");
    }
}
 
int main() {
    int i = 35681;
    char c = 'a';
    float f = 3.14f;
    char *str = "ABCD";
 
    AcceptAnyType(&i, 'i');
    AcceptAnyType(&c, 'c');
    AcceptAnyType(&f, 'f');
    AcceptAnyType(str, 's');
}
 
 
 
/*
run:
 
int: 35681
char: a
float: 3.140000
string: ABCD
 
*/

 



answered Jul 31, 2025 by avibootz
edited Jul 31, 2025 by avibootz
0 votes
#include <stdio.h>

typedef enum {
    TYPE_INT,
    TYPE_CHAR,
    TYPE_FLOAT,
    TYPE_STRING
} ValueType;

typedef union {
    int i;
    char c;
    float f;
    char *s;
} Variable;

void AcceptAnyType(Variable v, ValueType t) {
    switch (t) {
        case TYPE_INT:
            printf("int: %d\n", v.i);
            break;
        case TYPE_CHAR:
            printf("char: %c\n", v.c);
            break;
        case TYPE_FLOAT:
            printf("float: %f\n", v.f);
            break;
        case TYPE_STRING:
            printf("string: %s\n", v.s);
            break;
        default:
            printf("Unknown type\n");
    }
}

int main() {
    Variable var;

    var.i = 35681;
    AcceptAnyType(var, TYPE_INT);

    var.c = 'a';
    AcceptAnyType(var, TYPE_CHAR);

    var.f = 3.14f;
    AcceptAnyType(var, TYPE_FLOAT);

    var.s = "ABCD";
    AcceptAnyType(var, TYPE_STRING);

    return 0;
}



/*
run:

int: 35681
char: a
float: 3.140000
string: ABCD

*/

 



answered Jul 31, 2025 by avibootz
...