将主要定义的类型传递给C中的标题

所以,正如标题所说,我应该在主文件中定义一个类型,并以某种方式将其传递给标题。 我试图以任何方式做到这一点,但我没有想法。

我这样定义:“typedef int DATA;” 并在标头中将其用作数据类型。

我尝试在包含标题之前插入typedef,但仍然无法识别。

有任何想法吗? 或者甚至不可能以这种方式做到这一点?

#include  #include  typedef int DATA; #include "PriorityQueue.h" int main(){ int priority; DATA value; 

这是我的主要开始

 #ifndef PRIORITY_QUEUE_H_ #define PRIORITY_QUEUE_H_ struct priorityQueue{ int priority; DATA value; struct priorityQueue *next; }; typedef struct priorityQueue LINK; void createEmpty(LINK **head); void add(LINK **head, int p, DATA v); void deleteElement(LINK **head, int *p, DATA *v); //void print(LINK *head); void checkIfEmpty(LINK *head); void destroy(LINK *head); #endif 

 ||=== Build: Release in PriorityQueue (compiler: GNU GCC Compiler) ===| ~\PriorityQueue\PriorityQueue.h|6|error: unknown type name 'DATA'| ~\PriorityQueue\PriorityQueue.h|11|error: unknown type name 'DATA'| ~\PriorityQueue\PriorityQueue.h|12|error: unknown type name 'DATA'| ~\PriorityQueue\PriorityQueue.c|10|error: unknown type name 'DATA'| ~\PriorityQueue\PriorityQueue.c|44|error: unknown type name 'DATA'| ||=== Build failed: 5 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===| Used ~ instead of my destination 

typedef int DATA;放在typedef int DATA;struct priorityQueue之前的struct priorityQueue ,并确保PriorityQueue.h包含在PriorityQueue.c中。

通常你不应该这样做,但假设你有充分的理由去做,如果你把typedef放在包含之前就行了。 我不知道你是如何测试它的,但这对我来说没问题。

$ cat header.h

 typedef struct { MYDATA a; MYDATA b; } MYSTRUCT; 

$ cat main.c

 typedef int MYDATA; #include "header.h" int main (int argc, char **argv) { MYSTRUCT s = {0, 1}; sa = 1; s.b++; return 0; } 

它在没有警告的情况下编译并使用gdb执行它我看到正确定义的类型。