Olá pessoal, tenho tentado usar o typeof e o typedef no C para simular templates (C++), ou seja, variáveis que possam receber qualquer tipo na inicialização:
Fiz o seguinte código:
#include <stdio.h>
#include <stdlib.h>
typedef T;
T ret(T value)
{
T x = value;
return x;
}
int main(int argc, char** argv)
{
T x = 9.345;
typeof (x) var;
var = 'z';
string str = "abc";
printf("%s", str);
printf("\n\n%c\n",ret('c')); //linha 1
printf("\n\n%d\n",ret(5)); //linha 2
printf("\n\n%f\n",ret(x)); //linha 3
int num = ret(5) + ret(8);
printf("%d", num);
return 0;
}
O problema é que a função ret retorna corretamente um inteiro e um char nas linhas 1 e 2 mas na linha 3 não. Ao invés de retornar o float 9.8 ou qualquer outro que eu passar, ele retorna 0.00000. Por quê?