ACT (Adobe Color Table) 파일을 일반 텍스트로 읽을 수있는 JASC-PAL 파일로 변환하는 프로그램을 C++로 작성했습니다. ACT 파일에서 이진 데이터를 읽고이를 메모리에 저장하여 사용하고 싶습니다. 나는 그것을하기 위해 다음 코드를 작성했으며 BCC55를 사용하여 빌드한다. 문제는 빌드 경고가 발생한다는 것입니다. "경고 W8079 : read_file() 함수에서 서로 다른 'char'형식의 포인터를 혼합합니다.다른 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;
}
}
내가 정기적으로 문자 포인터를 기대 함수에 서명 숯불 포인터를 통과하고 있기 때문에 것으로 보인다 엠바 카데로 문서를 위키에서이 경고를 찾고 있습니다. 이것은 기술적으로 부정확하지만 일반적으로 무해하다고 말합니다. 내 질문은 이것이 엄격하게 말하면, 틀린 것이라면 어떻게 빌드 타임에 W8079 경고를 발생시키지 않고 이것을 수행 할 것인가? 경고가 무해하고 코드가 예상대로 작동하므로이 작업을 귀찮게해야합니까?
보통 컴파일러의 경고를 무시해서는 안됩니다 ... 메모리를 어딘가에 배포하고 있습니까? 이것은 더 나쁜 것입니다 ... –
왜'memblock'에'unsigned char'을 사용하고 있습니까? –
서로 다른 API가 모일 때 특정 CI/O 타입이'char'이지만, 바이트 스토어 배열의 자연 타입은'unsigned char'입니다 ... 행복하게, 타입은 완전히 레이아웃 호환 가능합니다. 그러나 어느 시점에서 캐스트를 넣어야 할 수도 있습니다. –