Dobrý den, mám menší problém v C. Ve svém programu používám následující vlastní datové typy - struktury: typedef struct atrib {
char *att_name;
char *att_value;
int name_len;
int value_len;
struct atrib *next_atrib;
} ATRIB;
typedef struct tag {
int type;
char *p_name;
int name_len;
ATRIB *atributes;
struct tag *next_tag;
} TAG;
Problém mám s tím, že tyto datové typy občas předávám jako parametry funkce. A ty musím mít v hlavičkovém souboru - využívá je více modulů. Bohužel ale překladač nejsem schopen přinutit aby pochopil že v parametru v .h souboru je můj datový typ a ne nějaká blbost. Logicky připlácnu do hlavičkového souboru ty definice, tzn. to bude vypadat následovně: typedef struct atrib {
char *att_name;
char *att_value;
int name_len;
int value_len;
struct atrib *next_atrib;
} ATRIB;
typedef struct tag {
int type;
char *p_name;
int name_len;
ATRIB *atributes;
struct tag *next_tag;
} TAG;
extern void push(TAG *new_tag);
extern TAG *pop();
extern TAG *look();
extern int is_empty();
a pak to funguje...ale jen pro tenhle jeden modul, v jiném hlavičkovém souboru - kde jsou zase funkce s mými datovými typy v parametru/návr. hodnotě - to zase nefunguje. A fígl s připlácnutím toho typedef před to už nemůžu použít, protože redefinuji již definované, což se překladači nelíbí. Výsledek je pak podle očekávání stack.h:5: error: expected ‘)’ before ‘*’ token
stack.h:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
stack.h:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
Nevíte někdo jak se to dělá správně?