所以這是我的defs.h是如何構成的:頭文件結構
#ifndef DEF_H
#define DEF_H
#include <stdio.h>
...
int var = 20;
int test = 1;
...
#endif
現在,我的main.c和util.c,全部用:
#include "defs.h"
這是我的makefile :
all: clean compile
compile: clean main
@echo SUCCESS: COMPILED FILES
main: main.o util.o
cc main.o util.o -o progname
main.o: main.c
cc -o main.o -c main.c
util.o: util.c
cc -o util.o -c util.c
clean:
-rm -rf *.a *.o *.so progname
@echo SUCCESS: CLEANED FILES
然而,當我運行make,無論是目標文件編譯罰款,但在做最後的鏈接時,我不斷收到:
util.o:(.data+0x0): multiple definition of `var'
main.o:(.data+0x0): first defined here
我是第結構出問題了嗎?任何幫助,將不勝感激。
感謝
參見[什麼在C'extern'變量(http://stackoverflow.com/questions/1433204/what-are-extern-variables-in-c/)。 – 2013-05-03 20:21:12