gpt4 book ai didi

C++ 混合指向不同 char 类型的指针

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:01 24 4
gpt4 key购买 nike

我正在用 C++ 编写一个程序,该程序采用 ACT(Adobe 颜色表)文件并将其转换为纯文本可读的 JASC-PAL 文件。我想从ACT文件中读取二进制数据,存入内存中使用。我编写了以下代码来执行此操作,它使用 BCC55 构建。问题是我收到构建警告:“警告 W8079:在函数 read_file() 中混合指向不同‘char’类型的指针”。

unsigned char * memblock;

bool read_file()
{
int filesize;
ifstream act ("test.act", ios::binary|ios::ate);
if (act.is_open())
{
filesize = act.tellg();
act.seekg(0);
memblock = new unsigned char [filesize];
act.read(memblock, filesize);
act.close();
cout << "Color Table loaded to memory." << endl;
return true;
}
else
{
cout << "Failed to open file." << endl;
return false;
}
}

在 Embarcadero 文档 wiki 上查看此警告似乎是因为我将一个无符号字符指针传递给一个需要常规字符指针的函数。它说这在技术上是不正确的,但通常是无害的。我的问题是,如果严格来说这是不正确的,那么我该如何在不在构建时引起 W8079 警告的情况下执行此操作?既然警告是无害的并且我的代码按预期工作,我是否应该为此烦恼?

最佳答案

添加类型转换。在这种情况下,我将只使用简单的 C 转换。

act.read((char*)memblock, filesize);

但你也可以使用 reinterpret_cast

act.read(reinterpret_cast<char*>(memblock), filesize);

但这让它看起来比实际更重要。正如文档所说,这是无害的。

关于C++ 混合指向不同 char 类型的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15829549/

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