【发布时间】:2012-03-05 23:40:50
【问题描述】:
在 C 语言中,在全局级别(在任何函数之外)声明变量 static 表示它仅对该链接器对象(通常是该 .C 文件)可见。
如果同一个 .C 文件是多个不同库的一部分,然后在单个可执行文件中链接在一起,是否会发生冲突?
例如:
我的文件.c
typedef struct {
[my important data];
} MyGlobalType;
static MyGlobalType globalData = { [...data...] };
如果我有:
Plugin_Alpha.so:由 MyFile.C + AlphaSource.C 组成
Plugin_Beta.so:由 MyFile 组成.C + BetaSource.C
MainProgram.exe:由 MainCode.C 组成(加载两个插件)
Plugin_Alpha 和 Plugin_Beta 是否有独立的 globalData 副本?
还是它们最终会引用相同的结构?
【问题讨论】: