Невозможно преобразовать idt_entry_t (*) [256] в u8int * - PullRequest
1 голос
/ 28 января 2012

Я пытаюсь сделать

memset(&idt_entries, 0, sizeof(idt_entry_t)*256);

, которая выдает

ошибка: невозможно преобразовать 'idt_entry_t (*) [256] {aka idt_entry_struct () [256]} 'to' u8int {aka unsigned char *} 'для аргумента от' 1 'до' void memset (u8int *, u8int, u32int) '

Если это поможет, это Cкод переносится в extern "C" {...}.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 28 января 2012

Вы компилируете это как C ++?

Добавьте приведение.

memset ((u8int*)idt_entries, 0, sizeof(idt_entry_t)*256);

1 голос
/ 28 января 2012

idt_entries - это массив 256 из idt_entry_t.

Значение массива idt_entries является указателем на его первый элемент. Используйте это значение в качестве первого аргумента для memset. Размер вашего массива sizeof idt_entries.

Итак, как правильно вызвать memset, чтобы установить для всех элементов массива значение 0:

memset(idt_entries, 0, sizeof idt_entries);
0 голосов
/ 28 января 2012

idt_entries уже указатель.Удалить амперсанд:

memset (idt_entries, 0, sizeof(idt_entry_t)*256);
...