鑑於這種結構:如何使用指向另一個字段的字段初始化結構?
typedef struct test {
char field1[20];
char *field2;
} test_s
如何初始化這種用指定初始化結構的,知道我要FIELD2指向FIELD1?
test_s test = {.field1[0] = '\0', .field2 = .field1};
不起作用。
鑑於這種結構:如何使用指向另一個字段的字段初始化結構?
typedef struct test {
char field1[20];
char *field2;
} test_s
如何初始化這種用指定初始化結構的,知道我要FIELD2指向FIELD1?
test_s test = {.field1[0] = '\0', .field2 = .field1};
不起作用。
在單項目申報的情況下,你可以使用變量的名字被宣佈,因爲編譯器可以初始化過程中在任何時間地址:
test_s test = {.field1[0] = '\0', .field2 = test.field1};
如果我不知道變量的名稱會怎麼樣? –
@湯姆的什麼是上下文? – dasblinkenlight
'#define TEST_CONSTRUCTOR {.field1 [0] ='\ 0',.field2 = .field1}'像'test_s varname = TEST_CONSTRUCTOR'一樣使用。我知道我可以做'#define TEST_CONSTRUCTOR(varName){.field1 [0] ='\ 0',.field2 = varName.field1}'但我想知道是否不傳遞變量名是可能的。 –
https://開頭gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html – rsp
@rsp 也許我誤解了一些東西,但是沒有線索可以做「varName.designator」。事實上,我沒有看到任何有用的情況。您爲什麼鏈接本手冊? –