[code]#include <stdio.h>
#include <stdlib.h>
typedef struct stack Stack;
Stack
{
int a;
int b;
};
int main()
{
Stack s;
system(“PAUSE”);
return 0;
}[/code]
não é assim q se usa o typedef?
o q está errado?
[code]#include <stdio.h>
#include <stdlib.h>
typedef struct stack Stack;
Stack
{
int a;
int b;
};
int main()
{
Stack s;
system(“PAUSE”);
return 0;
}[/code]
não é assim q se usa o typedef?
o q está errado?
[code]typedef struct Stack {
int a;
int b;
}
[/code]
[]´s
[quote][code]typedef struct Stack {
int a;
int b;
} [/code][/quote]
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:
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;
Agora, vc também pode fazer um typedef de uma struct anônima:
//Cria o typedef Ponto para a struct anônima
typedef struct {
int x;
int y;
} Ponto;
O que na prática, é equivalente a fazer isso aqui:
//Cria a struct de nome Ponto
struct Ponto {
int x;
int y;
};
O typedef fica mais simples na hora de declarar variáveis, pois não exige a palavra struct.
E por isso ele se popularizou:
[code]
//Com typedef
Ponto ponto;
//Sem typedef
struct Ponto ponto;[/code]
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.
[quote]typedef struct {
int a;
int b;
} Stack;
[/quote]
ok… mas pq não posso usar o typedef antes?
se eu uso:
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?
[code]typedef struct stack Stack;
Stack
{
int a;
int b;
}; [/code]
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:
[code]struct stack {
int a;
int b;
};
//Cria o typedef Stack para a struct stack;
typedef struct stack Stack;[/code]
Mas não isso que vc quer fazer. Se quiser só substituir palavras, sem nenhum significado semântico, use o define (o que é fortemente desaconselhado)
muito esclarecedor!
vlw man! ;]