gpt4 book ai didi

c - 初始化 gchar 时程序 givin 错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:55 26 4
gpt4 key购买 nike

在我的 main.h(包含在所有其他 src 文件中)中,我有:

char* buffer;

这可以编译并正常工作。

由于某些其他原因,我尝试初始化buffer,两者都是

char* buffer="";

char* buffer="\0";

现在,构建它会出错:

src/search.o:(.data+0x0): multiple definition of `buffer'
src/bib.o:(.data+0x0): first defined here
src/mkbib.o:(.data+0x0): multiple definition of `buffer'
src/bib.o:(.data+0x0): first defined here
src/update_file.o:(.data+0x0): multiple definition of `buffer'
src/bib.o:(.data+0x0): first defined here
src/view.o:(.data+0x0): multiple definition of `buffer'
src/bib.o:(.data+0x0): first defined here
src/file_util.o:(.data+0x0): multiple definition of `buffer'
src/bib.o:(.data+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [mkbib] Error 1

问题是 bib.o 是从 bison 文件 (bison -d) 生成的。那里没有定义缓冲区:

$ grep buffer src/bib.y
$

buffer 也从未在其他任何地方定义,但使用:

$grep buffer src/*.c
src/file_util.c: 44 : g_file_set_contents(filename, buffer, -1, &Err);
src/file_util.c: 51 :// g_free(buffer);
src/file_util.c: 75 : g_file_set_contents(filename, buffer, -1, &Err);
src/file_util.c: 76 :// g_free(buffer);
src/file_util.c: 140 : g_file_get_contents(filename, &buffer, &length , &error);
src/file_util.c: 152 :// g_free(buffer);
src/search.c: 99 : GtkTextBuffer *gs_buf=gtk_text_view_get_buffer(GTK_TEXT_VIEW(gs_txt));
src/search.c: 100 : gtk_text_buffer_get_start_iter (gs_buf, &start);
src/search.c: 101 : gtk_text_buffer_get_end_iter (gs_buf, &end);
src/search.c: 102 : gchar *gs_text = gtk_text_buffer_get_text (gs_buf, &start, &end, FALSE);
src/search.c: 103 : strcat(buffer, gs_text);
src/update_file.c: 106 : GString *str=g_string_new(buffer);
src/update_file.c: 132 : buffer=str->str;
src/view.c: 38: yyin=fmemopen(buffer,strlen(buffer),"r");
src/view.c: 178: // g_free(buffer);
src/view.c: 259: buffer=str->str;
$

注意:我还记得几天前在 main.h 中添加另一个字符变量时遇到过相同类型的错误,当时就没有出现问题。

最佳答案

使用:

extern char *buffer;  // declares buffer, but doesn't define it

在你的main.h

并确保您对 buffer 的定义在一个 .c 文件中只出现一次:

char *buffer = "";  // not equivalent to = "\0"

关于c - 初始化 gchar 时程序 givin 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17054979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com