C++中的全局数组是否可以破坏二进制兼容性?

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)为什么(不)?

干杯,卢克

小智 5

1)是的

2)没有

3)没问题

4)为什么你会这么想?


Dre*_*ann 5

在任何一种情况下都不会破坏二进制兼容性.

C风格的数组不存储或假设数组的长度,因此增加数组的长度不会破坏任何假设.

您有一个指针数组,因此更改字符串文字根本不会影响数组的内存布局.