我想知道下面的問題的解決方案。請幫忙。C中的結構成員的運行時初始化(成員名稱決定運行)
問題:
struct s{
int a;
int b;
}st;
我想要的功能在運行時初始化值。問題是我想使它成爲泛型,所以我想將成員名稱作爲輸入傳遞給函數,並將其初始化。
fun_init(char* mem, int val)
{
// Find offset of the member variable in struct 'st'
// Assign the value
}
一個直接的解決方案是對成員名稱使用字符串比較。但是如果我碰巧在稍後添加一些額外的變量,我將不得不修改這個我不想要的功能。 希望我能夠清楚地闡述這些問題。
謝謝
C名稱在運行時不存在。編譯後的代碼不需要它們。 – rici
使用'union'可能... –
如果您只需要一個或兩個結構,您可以使用代碼生成器來設置適當的數據結構或生成合適的代碼來訪問這些字段。當然,這存在與代碼生成器相關的常見問題。 – creichen