我正在用C++編寫一個程序,它接受一個ACT(Adobe Color Table)文件並將其轉換爲純文本可讀的JASC-PAL文件。我想從ACT文件中讀取二進制數據並將其存儲在內存中以供使用。我編寫了下面的代碼來完成這個工作,它使用BCC55構建。問題是我得到一個構建警告:「警告W8079:在函數read_file()中混合指向不同'char'類型的指針。C++混合指向不同字符類型的指針
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的文檔網站,尋找這樣的警告了。它說這在技術上是不正確的,但通常是無害的。我的問題是,嚴格來說,如果這是不正確的,那麼在構建時如何在不引起W8079警告的情況下做到這一點?我應該甚至打擾這一點,因爲警告是無害的,我的代碼按預期工作?
通常你不應該忽略編譯器的警告......你是否在某處釋放你的內存?這更糟糕...... – 2013-04-05 08:49:37
爲什麼'memblock'使用'unsigned char'? – 2013-04-05 08:50:48
當不同的API聚集在一起時,有一定數量的ick - 標準CI/O類型是'char',但字節存儲數組的自然類型是'unsigned char' ......很高興,這些類型完全兼容佈局,但是你可能不得不在某個時刻投入演員陣容。 – 2013-04-05 08:51:28