1
我面臨一個奇怪的問題,但無法模擬它的規模較小。問題是我的符號表有一個我的外部符號的條目。這些在頭文件中聲明。定義在其他一些文件 - header.c對象文件中的外部符號
頭文件
header.h
extern void rlog(int , char*, ...);
extern int SetGDebug(string);
extern int GDebug;
TEST.CPP C++文件
#include <header.h>
nm -CA test.o | grep De
00000000 B GDebug
00000b70 t global constructors keyed to GDebug
00000070 T SetGDebug()
編譯標誌:-Wall -shared -O2 -fPIC -funroll,循環 編譯器:g ++
這如預期的那樣導致多重定義....
另一個快速問題...
extern-nd符號/函數是否使它符合目標文件的符號表?
是的,但它仍然不應該導致這種意外的行爲。這對於文件中的函數和變量都是如此。 – 2010-09-01 10:13:27