Consider the following C++ code:
struct X
{
int a;
int b;
};
X foobar()
{
X x = { 1, 2 };
return x;
}
Now assume this code is put in a shared library, which is used by third-party applications.
My question is: if I add another member at the end of X
(e.g. int c
), and initialize it in foobar()
, will existing applications which call foobar()
break? Note that this is about binary compatibility, not source compatibility.