我有一個私有數據成員數量的類(其中一些是靜態的),可以通過虛擬和非虛擬成員函數訪問。沒有內聯函數,也沒有朋友類。改變類私有數據成員的順序是否改變ABI
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;
...
};
編輯
的類型沒有變化,只有成員的順序。也沒有使用位標誌。 代碼被用作共享庫,沒有靜態鏈接到這個代碼。 我在Linux上,編譯器是gcc-3.4.3和gcc-4.1
請注意,在你的情況下,你需要聲明一個構造函數和析構函數,因爲它們都以內聯方式提供。 – 2010-05-31 15:09:26
@Johannes是的,他們被宣佈,只是在描述中錯過了他們。不過謝謝你的提示,這很有用。 – 2010-05-31 15:18:41