typedef struct {
char name[10];
} A;
A * inst = get_instance_of_A();
char *str = g_strdup ( inst->name );
Последняя строка не компилируется. Я также попытался & (inst-> name) без удачи.
Я получаю ошибку:
Ошибка: char не является структурным типом.
Я понимаю, что char [] и char * - это совершенно разные типы. Но не должен ли g_strdup занять начальную позицию строки C и обмануть ее? Если я сделаю следующее, это сработает:
char temp[10];
strncpy(temp,inst->name,9);
char *str = g_strdup ( temp );
Как мне добиться того, что я пытаюсь сделать, не копируя локальный массив символов? Я думаю, что неправильно передал аргумент в первом сценарии, так как в обоих случаях g_strdup передается массив символов.