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都被传递给char数组。
答案 0 :(得分: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;
}
答案 1 :(得分:-2)
在struct中使用gchar
而不是char。