तोड़ता है मेरे पास वर्चुअल और गैर वर्चुअल सदस्य फ़ंक्शंस द्वारा उपयोग किए जाने वाले निजी डेटा सदस्यों (उनमें से कुछ स्थिर) के साथ एक कक्षा है। कोई इनलाइन फ़ंक्शन नहीं है और कोई मित्र वर्ग नहीं है।कक्षा के निजी डेटा सदस्यों के क्रम को बदलना एबीआई
class A
{
int number;
string str;
static const int static_const_number;
bool b;
public:
A();
virtual ~A();
public:
// got virtual and non-virtual functions, working with these memebers
virtual void func1();
void func2();
// no inline functions or friends
};
निजी डेटा के सदस्यों के क्रम ABI इस मामले में टूट जाता है बदल रहा है?
class A
{
string str;
static const int static_const_number;
int number; // <-- integer member moved here
bool b;
...
};
संपादित
प्रकार नहीं बदल रहे हैं, केवल सदस्यों के आदेश। कोई भी झंडे भी उपयोग नहीं किया जाता है। कोड को साझा लाइब्रेरी के रूप में उपयोग किया जाता है, इस कोड के लिए कोई स्थिर लिंक नहीं है। मैं लिनक्स पर हूं और कंपेलर जीसीसी-3.4.3 और जीसीसी-4.1
ध्यान दें कि आपके मामले में, आपको एक कन्स्ट्रक्टर और विनाशक घोषित करने की आवश्यकता होगी, क्योंकि उनमें से दोनों को अन्यथा इनलाइन प्रदान की जाती है। –
@ जोहान्स हां, उन्हें घोषित किया गया है, बस उन्हें विवरण में याद किया गया है। लेकिन नोट के लिए धन्यवाद, यह उपयोगी है। –