繁体   English   中英

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

[英]C++ mixing pointers to different char types

我正在用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上查找此警告,似乎是因为我将无符号char指针传递给了需要常规char指针的函数。 它说这在技术上是不正确的,但通常是无害的。 我的问题是,严格来讲,如果这是不正确的,那我该如何在构建时不引起W8079警告的情况下进行此操作? 因为警告是无害的并且我的代码可以按预期工作,所以我是否应该对此打扰?

添加演员表。 在这种情况下,我只使用简单的C强制转换。

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

但您也可以使用reinterpret_cast

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

但这似乎比实际要大。 如文档所述,这是无害的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM