我的设置是这样的:
src/
dir1/
header.h
dir11
(several files, every including header.h)
dir2/
(and so on)
但链接器告诉我undefined reference to (the function which is defined in the subdir "dir11")
。标题如下所示:
#ifndef header_h
#define header_h
/* some includes, all protected via ifndef-define-endif */
/* function prototypes for all functions in the 'dir11' subdir */
#endif // header_h
生成文件:
# some variables are defined before...
TARGET=mytarget
SOURCES= ${shell find ${SRC} -type f -name '*.c'}
OBJECTS=${foreach x, $(basename $(SOURCES)), $(x).o}
compile: ${OBJECTS}
%.o: %.c
${CC} -c ${CFLAGS} ${HEADERS} $^ -o $@
link:
${LD} ${OBJECTS} -o ${TARGET}
如何解决这个问题?为子文件中的每个文件写标题是我想要的最后一种方式,因为它中有大约50个文件!
编辑: 也许这很有用:header.h也包括在内,以便调用函数!在包含else吗?
时,我是否必须将此函数声明为extern
答案 0 :(得分:0)
你所有的包含守卫都定义不同吗?如果不是,您将获得未定义的参考警告/错误,具体取决于您的编译器设置