Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ g++字符空错误_C++_G++_Type Conversion - Fatal编程技术网

C++ g++字符空错误

C++ g++字符空错误,c++,g++,type-conversion,C++,G++,Type Conversion,我尝试使用gcc版本4.3.2 20081105 Red Hat 4.3.2-7 gcc进行编译 输入文件具有常量字符: #include <stdio.h> #include <stdlib.h> #include "textfile.h" ... const char * vs=NULL; vs = textRead("myfile.file"); const char * vv = vs; free(vs); 第一个警告是关于vs=textReadmyfile.f

我尝试使用gcc版本4.3.2 20081105 Red Hat 4.3.2-7 gcc进行编译 输入文件具有常量字符:

#include <stdio.h>
#include <stdlib.h>
#include "textfile.h"
...
const char * vs=NULL;
vs = textRead("myfile.file");
const char * vv = vs;
free(vs);
第一个警告是关于vs=textReadmyfile.file; 第二个错误是关于freevs


我的代码有什么问题

第一个错误是因为您的textRead函数很可能被声明为:

const char *textRead(char *) 
不推荐将类型为const char*的字符串myfile.file自动转换为char*。通过将textRead改为接受常量字符*来修复此问题

第二个错误。。。好的,再一次,看看编译器告诉你的:有些东西期望一个void*,而你正在传递一个const void*:在这种情况下,free需要一个void*指针。您有一个const char*,它可以隐式转换为const void*。但是const void*不能变成void*


通过正确使用const返回property来修复它。

您尚未发布textRead函数的外观,因此我假设其签名如下:

void *textRead( char *filename );
textRead使用要读取的文件名,它不需要修改传递给它的字符串,因此将textRead更改为

如果无法修改函数,请将代码更改为

char filename[] = "myfile.file";
vs = textRead( filename );
关于free的错误消息是不言自明的,free需要一个void*,而您要给它传递一个const指针。我不明白为什么vs需要是常量字符*而不是字符*。改变这一点,错误就会消失


另外,我不明白为什么在释放vs之前要复制vs,但可能你没有发布这两行之间发生的内容。

问题是,free需要一个空*而你却传递了一个const void*。这正是编译器所说的。我想我需要一个好的教程来理解这个cpp,在linux操作系统下使用g++。对不起,我打扰了团队,你没有打扰任何人。提问和学习很好。我看到了stdio.h、stdlib.h和free。。。为什么这个标签是C++?TestTrad把文件名取为一个带有文件名的着色器路径。主要问题是如何设置所有设置以使其工作。我使用stdlib.h。我对C++不太好,我认为我使用的教程也是在Windows操作系统上制作的。我认为C++有另外一个标题,但我在这方面是新的。对此非常抱歉。如果我使用它,我会得到以下错误:main.cpp:116:error:expected-unqualified-id在“[”之前token@CatalinFestila抱歉,数组声明的语法混乱。已修复。
void *textRead( char const *filename );
char filename[] = "myfile.file";
vs = textRead( filename );