当我尝试编译时,G_list_append给出了一个错误
g_list_append gives a error when i try to complie
OS = linux (Fuduntu 2013.2)
我试图在我的程序中使用列表,但当我调用g_list_append时,我得到这个错误
error: invalid conversion from ‘const void*’ to ‘gpointer {aka void*}’ [-fpermissive]
In file included from /usr/include/glib-2.0/glib/ghash.h:35:0,
from /usr/include/glib-2.0/glib.h:52,
from /usr/include/glib-2.0/gobject/gbinding.h:30,
from /usr/include/glib-2.0/glib-object.h:25,
from /usr/include/glib-2.0/gio/gioenums.h:30,
from /usr/include/glib-2.0/gio/giotypes.h:30,
from /usr/include/glib-2.0/gio/gio.h:28,
from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
from /usr/include/gtk-2.0/gdk/gdk.h:32,
from /usr/include/gtk-2.0/gtk/gtk.h:32,
from main.cpp:4:
/usr/include/glib-2.0/glib/glist.h:61:10: error: initializing argument 2 of ‘GList* g_list_append(GList*, gpointer)’ [-fpermissive]
这部分代码包含g_list_append
#include<iostream>
#include <stdio.h>
#include<gtk/gtk.h>
#include<glibmm.h>
int main(){
GList *glist_forleg = NULL;
glist_forleg = g_list_append(glist_forleg, "A1");
return 0;
}
编制g++ -o kabel main.cpp strukt.cpp -lm -Wall `pkg-config --cflags --libs glibmm-2.4` `pkg-config --cflags --libs gtk+-2.0`
这不是GLib问题(尽管您可能应该使用c++类而不是C版本),而是因为引号中的字符串是const
。你试图使用的函数需要一个void *
指针,而不是一个const void *
指针,这就是错误试图告诉你的。
下面是一个固定的例子:
#include <glib.h>
int main(){
GList *list = NULL;
list = g_list_append(list, (gpointer)"A1");
return 0;
}
…将字符串强制转换为gpointer
(也称为void *
)而不是const void *
。编译例如:
cc -Wall -o test test.c $(pkg-config --cflags --libs glib-2.0)
然而,这是一个坏主意,因为字符串不一定会留在内存中,导致指针指向不是你的内存,并导致内存故障。一个更好的主意(只要您记得稍后释放它)可能是使用g_strdup
,它会在内存中复制字符串,或者只是使用glibmm提供的类型,如库文档的c++版本中所解释的那样。
相关文章:
- C++,我收到一个无法理解的编译器错误
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 删除映射和分割错误中的一个过去结束元素
- 为什么我的 heap.h 文件给我一个LNK2001错误?
- 写一个分数类,我无法弄清楚这些错误
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 一个标头库中的错误
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 使用Visual Studio在虚幻引擎中创建一个新的类c ++给了我太多的错误
- 我正在尝试制作一个自平衡机器人,但编译时存在错误。我不知道如何解决它
- 试图修复一个错误,该错误不会让我开始编程其余部分
- MSVC 无法根据模板参数进行数学运算,这是一个错误吗?
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 零四元数和任何向量都不为零的特征积,这是一个错误吗?
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- LNK2019错误一个DLL链接到MFC DLL
- 错误:一个声明中有多个类型
- 带有两个运算符的C++11模糊错误(一个左值-第二个右值).底部的