1
我的目標是初始化一個本地靜態int變量。 我想初始化我的變量的值等於結構成員的偏移值。使用全局結構地址值初始化本地靜態變量
我的結構定義
struct member{
int ID;
char *NAME;
int NO;
};
全球結構聲明
struct member FirstMember={.ID = 123, .NAME ="John", .NO=7382737};
struct member SecondMember={.ID = 120, .NAME ="Bill", .NO=454545};
功能和局部靜態變量聲明
void foo()
{
static int offset = (int)(&FirstMember.NO - &SecondMember.ID);
}
Compiler output: Error[Pe028]: expression must have a constant value..
據我所知靜態局部變量必須用const的初始化值。編譯器也知道結構及其成員的地址值。所以編譯器能夠計算成員地址之間的差異。但它會返回一條錯誤消息。
但這個初始化工作
void foo()
{
static int offset = (int)(&FirstMember.NO - &FirstMember.ID);
}
能否請您解釋一下,我錯過了點?
謝謝。我已糾正它。但這不是主要問題。 –
@ user1871830這對我有用。你能給我提供完整的代碼嗎?也許其他地方有問題... –
@ user1871830我更新了我的答案 –