Suspicious pointer conversion при записи в структуру - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток всем и с праздником! Есть функция
void ReadPGM(unsigned char *data){  // Запись в программную память блока данных
        unsigned char counter=0;
        TBLPTRU=(ROM_START_ADRESS&0xFF0000)>>16;    // address of the memory block
        TBLPTRH=(ROM_START_ADRESS&0x00FF00)>>8;
        TBLPTRL=(ROM_START_ADRESS&0x0000FF)+0x40;
        for(counter=0;counter<49;counter++)
        {
            _asm 
             TBLRDPOSTINC     // write to holding register and post-increment TBLPTR 
           _endasm 
            data[counter]=TABLAT;        
        }
}
. Есть структура, в которую мне нужно складывать значения, получаемые этой функцией.
typedef struct _settings {
    ADC_const zero;             //16
    ADC_const span;             //16
    DWORD capacity;             //4
    DWORD offset;               //4
    DWORD calbration_const;     //4
    BYTE discrete;              //1
    BYTE stability_factor;      //1
    BYTE zero_factor;           //1
    BYTE autozero_factor;       //1
    BYTE frequency;             //1
}scale_settings;                      //49 bytes
 
scale_settings cal;               //переменная, в которую нужно писать данные
Вызываю функцию в main.c вот так:
ReadPGM((struct _settings*)&cal);
Всё отлично работает, только выдаётся предупреждение о подозрительной конвертации указателя
Warning [2054] suspicious pointer conversion
. Я понимаю, что по стандарту си такое приведение (unsigned char в struct) неверно, но наверняка есть способ решить проблему? Заранее спасибо за ответы.

Решение задачи: «Suspicious pointer conversion при записи в структуру»

textual
Листинг программы
ReadPGM((unsigned char*)&cal);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы