我面临一个奇怪的问题,但无法以较小的比例模拟它。问题是我的符号表有一个我的外部符号的条目。这些是在头文件中声明的。在其他文件中定义 - 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 -O2 -shared -fPIC -funroll-loops 编译器:g ++
正如预期的那样导致多次重新定义......
另一个快速问题......
extern-nd符号/函数是否使它成为目标文件的符号表?
答案 0 :(得分:1)
您不需要声明函数extern,只需要声明变量。