Luk*_*uke 3 c++ arrays shared-libraries binary-compatibility
假设共享库包含以下行:
const char* const arr[] =
{
"one",
"two",
"three"
};
Run Code Online (Sandbox Code Playgroud)
1)应用程序是否可以链接到此库并使用符号"arr"?
2)如果在定义中添加了新元素,二进制兼容性是否会被破坏?
3)如果其中一个字符串文字被更改了怎么样?
4)为什么(不)?
干杯,卢克
在任何一种情况下都不会破坏二进制兼容性.
C风格的数组不存储或假设数组的长度,因此增加数组的长度不会破坏任何假设.
您有一个指针数组,因此更改字符串文字根本不会影响数组的内存布局.