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 );
ローカルの char 配列のコピーを作成せずに、私がやろうとしていることを達成するにはどうすればよいですか? どちらの場合も g_strdup に char 配列が渡されているため、最初のシナリオでは引数を正しく渡していないと思います。