【发布时间】:2009-12-24 13:30:56
【问题描述】:
假设一个共享库包含以下行:
const char* const arr[] =
{
"one",
"two",
"three"
};
1) 应用程序可以链接到这个库并使用符号“arr”吗?
2) 如果在定义中添加新元素,二进制兼容性是否会被破坏?
3) 如果其中一个字符串文字被更改了怎么办?
4) 为什么(不)?
干杯, 卢克
【问题讨论】:
-
我想补充一点。有一种方式会破坏二进制兼容性。您的数组似乎没有指示结束的标记值。如果您更改数组中元素的数量,则链接到它的东西将假定该数组包含原始数量的元素,这可能会破坏事物。如果你最后有一个哨兵值,他们可以扫描它并学习新的大小。
标签: c++ arrays shared-libraries binary-compatibility