如何引用尚未声明的数据类型? [英] How do I reference a datatype that hasn't yet been declared?

查看:137
本文介绍了如何引用尚未声明的数据类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有以下C代码:

  struct  A { struct  B * element;} 
struct B { struct A *元素;}
main(){}



如果在声明类型的变量元素时如何编译它struct B *这个类型还没有定义?



如果我在不同的文件中定义了这两个结构,我将如何制作makefile和头文件? :



fileA.h:

  #ifndef _FILEA_H_ 
#define _FILEA_H_
#include fileB.h
struct A { struct B * element;}
#endif





fileB.h:

  #ifndef _FILEB_H_ 
#define _FILEB_H_
#include fileA .h
struct B { struct A *元素;}
#endif





MAKEFILE:

 CC = gcc 
CFLAGS = -Wall -g
LDFLAGS = -lm

all:example

program.o:program.c

fileA.o:fileA.c fileA.h

fileB.o:fileB.c fileB.h

例如:principal.o fileA.o fileB.o
$(CC)$(CFLAGS)-o $ @ $ ^ $(LDFLAGS)





你能帮助我吗?在这两种情况下,编译器都不识别结构中的类型,因为它只是稍后定义的。

解决方案

(CC)


< blockquote>(CFLAGS)-o


@


If I have the following C code:

struct A{struct B* element;}
struct B{struct A* element;}
main(){}


How do I compile it if when I declare the variable element of type "struct B*" this type wasn't defined yet?

And how would I make the makefile and the header files if I had those 2 structs defined in diferent files:

fileA.h:

#ifndef _FILEA_H_
#define _FILEA_H_
#include "fileB.h"
struct A{struct B* element;}
#endif



fileB.h:

#ifndef _FILEB_H_
#define _FILEB_H_
#include "fileA.h"
struct B{struct A* element;}
#endif



MAKEFILE:

CC = gcc
CFLAGS = -Wall -g
LDFLAGS = -lm

all: example

program.o: program.c

fileA.o: fileA.c fileA.h

fileB.o: fileB.c fileB.h

example: principal.o fileA.o fileB.o
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)



Can you guys help me? In both cases the compiler doesn't recognize the type inside the struct because it is only defined later.

解决方案

(CC)


(CFLAGS) -o


@


这篇关于如何引用尚未声明的数据类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆