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