Enviado em 06/10/2014 - 16:45h
Boa tarde,
Nos ultimos 2 dias li bastante sobre macros inclusive na própria página do gcc e em outros sites, mas o assunto é ainda confuso para mim e eu estou apanhando muito.
A questão é a seguinte:
Precisava criar um tipo de variável que recebesse o tipo de dado (isso mesmo somente o int, float ...), tentei de vários modos, onde pude concluir que a única saída seria apelar para as macros.
para avançar em meu código preciso de uma coisa que receba o tipo o que eu já fiz, e fazer com que de alguma maneira esse tipo receba quantos * eu quiser, de forma manual isso funciona normalmente, ex.:
eu tentei da seguinte forma:
por que ele não reconhece o for? já que teóricamente era para reconhecer.
caso saibam, como fazer?
Nos ultimos 2 dias li bastante sobre macros inclusive na própria página do gcc e em outros sites, mas o assunto é ainda confuso para mim e eu estou apanhando muito.
A questão é a seguinte:
Precisava criar um tipo de variável que recebesse o tipo de dado (isso mesmo somente o int, float ...), tentei de vários modos, onde pude concluir que a única saída seria apelar para as macros.
para avançar em meu código preciso de uma coisa que receba o tipo o que eu já fiz, e fazer com que de alguma maneira esse tipo receba quantos * eu quiser, de forma manual isso funciona normalmente, ex.:
se fizer assim também funciona
#include <stdio.h>
#define x *
#define tipo(type) type x
int main(void)
{
tipo(int) a; //equivalente a declarar um ponteiro int *a;
return 0;
}
acontece que eu preciso concatenar o "*" de forma dinâmica mas não como string.
#include <stdio.h>
#define x *
#define tipo(type) type x x
int main(void)
{
tipo(int) a; //equivalente a declarar um ponteiro int **a;
return 0;
}
eu tentei da seguinte forma:
o que eu estou fazendo de errado?
#include <stdio.h>
#define x *
#define tipo(type,a) (for(int i=0;i<a;i++) type+=x; return type;)
int main(void)
{
tipo(int,3) a; //equivalente a declarar um ponteiro int ***a( se funcionasse);
return 0;
}
por que ele não reconhece o for? já que teóricamente era para reconhecer.
caso saibam, como fazer?