c++ - 目标文件中的外部符号

标签 c++ c

我遇到了一个奇怪的问题,但无法在更小的范围内进行模拟。问题是我的符号表有一个我的外部符号条目。这些在头文件中声明。在其他文件中定义 - header.c

头文件

header.h

extern void rlog(int , char*, ...);
extern int SetGDebug(string);
extern int GDebug;

测试.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++ - 目标文件中的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3616299/

相关文章:

c - 如何使用 __m128i 执行逐元素左移?

c++ - 需要帮助来理解 "ABA"问题

c - 初学者 C 程序 - 如何从字谜程序中的循环返回必要的输出?

c - 查看这个中缀到后缀的转换

c# - C++ 比 C# 快多少?

c - 为什么在特定情况下需要 memcpy

c - 发出中断时不会调用中断处理程序

c++ - 可以使用 C++ 中的严格别名来模拟 C 的限制关键字吗?

c++ - CreateWindow 参数类型错误

c++ - 如何从科学记数法切换回来