2
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 配列が渡されているため、最初のシナリオでは引数を正しく渡していないと思います。

4

2 に答える 2

1

あなたの問題は、あなたが思っているところにあるとは思いません。gcharそしてchar、すべての意図と目的は同じです。たとえば、このコードは私にとってはうまくいきます:

#include <glib.h>

typedef struct {
    char name[10];
} A;

A global_A = { "name here" };

A *
get_instance_of_A(void)
{
    return &global_A;
}

int
main(int argc, char **argv)
{
    const A *inst = get_instance_of_A();
    char *str = g_strdup(inst->name);
    g_print("%s\n", str);
    return 0;
}
于 2010-01-23T19:23:42.210 に答える
-2

gchar構造体の char の代わりに使用します。

于 2010-01-23T19:09:39.563 に答える