我遇到了函數的多個定義問題。這裏的所有其他解決方案在堆棧溢出中都沒有爲我解決。頭文件問題:多重定義錯誤;首先在這裏定義
這是我的main.c:
#include "lib.h"
int main(){
test();
}
這是lib.c文件:
#include "lib.h"
int var;
void test(){
//code here
}
這是lib.h文件:
#ifndef _HTTPLIB_H_
#define _HTTPLIB_H_
#include <stdio.h>
extern int var;
extern void test();
#endif
我已經檢查過,沒有任何函數的定義兩次,我從不包括.c源文件。 主文件:http://pastebin.com/xr3DF0TE lib.c和lib.h文件:http://pastebin.com/KemhKX3f
這是彙編代碼
gcc -lpthread -D_REENTRANT httplib.c http.c -o -g http
我與
gcc lib.c main.c -Wall -g -o main
main: In function 'test': (.text+0xfdd): multiple definition of 'test' /tmp/ccb8byZi.o:lib.c:(.text+0xef9): first defined here'
真正的代碼編譯真實錯誤信息:
http: In function `sigusr1':(.text+0xfdd): multiple definition of `sigusr1'/tmp/ccb8byZi.o:httplib.c:(.text+0xef9): first defined here
的#include 「lib.h」 不lib.c – koper89
這是一個錯字,我不是包括lib.c但lib.h –
有什麼確切的錯誤信息? – melpomene