Size: a a a

2021 July 08

Q

Qwant in supapro.cxx
А как в структуру передать переменную тогда?
источник

VS

Vlad Serebrennikov in supapro.cxx
struct BmpHeader {
       char bitmapSignatureBytes[2];
       uint32_t sizeOfBitmapFile;
       uint32_t reservedBytes;
       uint32_t pixelDataOffset;
   };
BmpHeader bpmHeader = {{'B', 'M'}, sizeBitmap, 0, 54};

например. можно еще
BmpHeader bpmHeader = {.bitmapSignatureBytes = {'B', 'M'}, .sizeOfBitmapFile = sizeBitmap, .reservedBytes = 0, pixelDataOffset = 54};
вместо последней строки в моем примере
источник

VS

Vlad Serebrennikov in supapro.cxx
а еще можно конструктор сделать
источник

VS

Vlad Serebrennikov in supapro.cxx
не совсем понятно, какие поля хардкодятся, а какие вычисляются, чтобы предложить лучшее решение
источник

Q

Qwant in supapro.cxx
Тоесть структуру ненадо создавать внутри метода?
источник

Q

Qwant in supapro.cxx
Просто я сразу хотел структуру создавть в методе и указать значения. Так как эта структура используется тольков 1  одном методе
источник

VS

Vlad Serebrennikov in supapro.cxx
   struct BmpHeader {
       char bitmapSignatureBytes[2] = {'B', 'M'};
       uint32_t sizeOfBitmapFile;
       uint32_t reservedBytes = 0;
       uint32_t pixelDataOffset = 54;
   } bmpHeader = { .sizeOfBitmapFile = sizeBitmap };
источник

VS

Vlad Serebrennikov in supapro.cxx
честно скажу, что в компиляторе не проверял, но по идее должно работать
источник

Q

Qwant in supapro.cxx
Спасибо))
источник

S

Salt in supapro.cxx
Ещё немного и stb наколхозит
источник

Q

Qwant in supapro.cxx
не не получилось
источник

Q

Qwant in supapro.cxx
/std:c++latest какой то пишет
источник

Q

Qwant in supapro.cxx
Ладно вынесу тогда, так сделаю
источник

MA

Max Azatian in supapro.cxx
[32, 40) 'extraData' (line 85) <== Memory access at offset 40 overflows this variable

в 85й строке я передаю char *extraData (в сигнатуре функции). Чего асан ругается? или я не туда смотрю?

сигнатура такая :
void saveFile(char *pathToSave, struct1 *s1,
                   struct2 *s2,
                   struct3 *s3, char *extraData,
                   unsigned char *newData)

This frame has 1 object(s):
   [32, 40) 'extraData' (line 85) <== Memory access at offset 40 overflows this variable
HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork (longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: stack-buffer-overflow (/lib/x86_64-linux-gnu/libasan.so.5+0x6a1ac)
источник

VS

Vlad Serebrennikov in supapro.cxx
   struct BmpHeader {
       uint32_t sizeOfBitmapFile;
       char bitmapSignatureBytes[2] = {'B', 'M'};
       uint32_t reservedBytes = 0;
       uint32_t pixelDataOffset = 54;
   } bmpHeader = { sizeBitmap };
источник

MA

Max Azatian in supapro.cxx
у бмп 2+ хедера, и оффсет не всегда 54, если не ошибаюсь
источник

VS

Vlad Serebrennikov in supapro.cxx
задающий вопрос сказал, что она ему на один раз в одном месте нужна, так что все вопросы к нему
источник

MA

Max Azatian in supapro.cxx
ой, прости, да
не тебе изначально утверждение адресовалось (ну да ладно)
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Поля нельзя менять местами
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Полностью читай
источник