【问题标题】:Extern Symbols in Object files目标文件中的外部符号
【发布时间】:2010-09-01 08:40:29
【问题描述】:

我面临一个奇怪的问题,但无法以较小的规模模拟它。问题是我的符号表有一个外部符号条目。这些在头文件中声明。在其他文件中定义 - 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 符号/函数是否进入目标文件的符号表?

【问题讨论】:

    标签: c++ c


    【解决方案1】:

    你不需要声明外部函数,只需要声明变量。

    【讨论】:

    • 是的,但它仍然不应该导致这种意外行为。文件中的函数和变量都会发生这种情况。
    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2021-09-19
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    相关资源
    最近更新 更多