ich schreibe gerade einen Parser für das Zip Dateiformat, funktioniert soweit auch super, dennoch werd ich bezüglich des struct alignments wahnsinnig. Gestern dachte ich ich hätte das Problem durch __declspec(align(1)) in den Griff bekommen, heute bekomme ich schon wieder Probleme:
Code: Alles auswählen
namespace zip {
struct __declspec(align(1)) local_file_header {
FATE_UTIL_API static const int32_t SIGNATURE;
int32_t signature;
int16_t minVersion;
int16_t generalPurpose;
int16_t compressionMode;
int16_t fileLastModificationTime;
int16_t fileLastModificationDate;
int32_t crc32;
int32_t compressedSize;
int32_t uncompressedSize;
int16_t fileNameLength;
int16_t extraFieldLength;
std::string fileName;
std::string extraField;
};
};
// ...
archiveStream->seekg(localOffset, std::istream::beg);
archiveStream->read(reinterpret_cast<char*>(&fileInfo.localHeader.signature), 4);
if(fileInfo.localHeader.signature != zip::local_file_header::SIGNATURE) {
throw std::ios_base::failure("...");
}
// Funktioniert
archiveStream->read(reinterpret_cast<char*>(&fileInfo.localHeader.minVersion), 10);
archiveStream->read(reinterpret_cast<char*>(&fileInfo.localHeader.crc32), 12);
archiveStream->read(reinterpret_cast<char*>(&fileInfo.localHeader.fileNameLength), 4);
// Funktioniert nicht
archiveStream->read(reinterpret_cast<char*>(&fileInfo.localHeader.minVersion), 26);
Mit freundlichem Gruß
RazorX