#include <stdio.h>
#include <stdlib.h>
typedef struct stack Stack;
Stack
{
int a;
int b;
};
int main()
{
Stack s;
system("PAUSE");
return 0;
}
não é assim q se usa o typedef?
o q está errado?
#include <stdio.h>
#include <stdlib.h>
typedef struct stack Stack;
Stack
{
int a;
int b;
};
int main()
{
Stack s;
system("PAUSE");
return 0;
}
não é assim q se usa o typedef?
o q está errado?
typedef struct Stack {
int a;
int b;
}
[]´s
typedef struct Stack { int a; int b; }
esse tb tá errado...
explicações, por favor =]
typedef struct {
int a;
int b;
} Stack;
O C permite a declaração de structs da seguinte forma:
struct <nome> {
<dados>
};
E typedefs na seguinte forma:
typedef <tipo> <novo-nome>;
Você também pode criar uma struct anônima. Basta não forcener um nome:
//Cria a variável ponto de uma struct sem nome.
struct {
int x;
int y;
} ponto;
//Cria o typedef Ponto para a struct anônima
typedef struct {
int x;
int y;
} Ponto;
//Cria a struct de nome Ponto
struct Ponto {
int x;
int y;
};
//Com typedef
Ponto ponto;
//Sem typedef
struct Ponto ponto;
Em C++, não é necessário escrever o nome struct na hora de criar variáveis, por isso, não se recomenda por lá a construção com typedef.
typedef struct { int a; int b; } Stack;
ok.. mas pq não posso usar o typedef antes?
se eu uso:
typedef struct stack Stack
não quer dizer que a partir de então posso usar só Stack no lugar de struct stack?
e o na forma normal é:
struct stack
{
int a;
int b;
};
se eu já usei o typedef, o q me impede de montar a estrutura assim?
typedef struct stack Stack;
Stack
{
int a;
int b;
};
O typedef não é um define. Ele não faz substituição léxica pura e simples.
Ele é um apelido para um tipo. E o tipo deve existir.
Você pode fazer isso aqui:
struct stack {
int a;
int b;
};
//Cria o typedef Stack para a struct stack;
typedef struct stack Stack;
#define Stack struct stack;
muito esclarecedor!
vlw man! ;]