<function> </function>的多重定义

时间:2010-12-20 21:38:15

标签: c gcc

/tmp/ccTQFVCP.o: In function `whiteSpace':
/home/tommo/fly/flyc/config.c:12: multiple definition of `whiteSpace'
/tmp/cc0ccMfz.o:/home/tommo/fly/flyc/config.c:12: first defined here
/tmp/ccTQFVCP.o: In function `lineEnd':
/home/tommo/fly/flyc/config.c:16: multiple definition of `lineEnd'
/tmp/cc0ccMfz.o:/home/tommo/fly/flyc/config.c:16: first defined here
/tmp/ccTQFVCP.o: In function `makeSubStr':
/home/tommo/fly/flyc/config.c:20: multiple definition of `makeSubStr'
/tmp/cc0ccMfz.o:/home/tommo/fly/flyc/config.c:20: first defined here

我的文件config.c中的每个函数都有这个。

我的每个头文件都有一个#ifndef FILE_H标头块。

为什么要这样做?

TARGET   = fly
SRC      = main.c gfx.c transform.c entity.c list.c v3.c config.c airplane.c
CPPFLAGS = -Wall 
LDFLAGS  = -lglfw -lGL -lGLU
DEBUG    = -g

linux: 
    @echo Building for Linux...
    gcc $(CPPFLAGS) $(DEBUG) $(LDFLAGS) $(SRC) -o $(TARGET)
    @echo All done.
clean:
    rm $(TARGET)
help:
    @echo "Available targets for fly"
    @echo " linux: build for linux (default)"
    @echo " clean: clean up directory"

.PHONY: help clean

那是我的Makefile。 来自https://github.com/tm1rbrt/fly的git pull如果您想尝试自己构建

2 个答案:

答案 0 :(得分:6)

问题是:main.c includes config.c。因此,您可以在config.c中获取两次所有内容。 C文件互相包含是非常规的,所以我建议删除include。

答案 1 :(得分:0)

我遇到了类似的问题,将main.cpp中的application.cpp文件包含到了application.hpp中后,我解决了这个问题。