1

我正在尝试做

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

产生

错误:无法将参数 '1' 的 'idt_entry_t (*)[256] {aka idt_entry_struct ( )[256]}' 转换为 'u8int {aka unsigned char*}' 到 'void memset(u8int*, u8int, u32int)'

如果有帮助,它是包含在extern "C" {...}.

谢谢!

4

3 回答 3

2

您是否将其编译为 C++?

添加演员表。

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

于 2012-01-28T00:53:37.383 回答
1

idt_entries是 的数组 256 idt_entry_t

数组的值idt_entries是指向其第一个元素的指针。将此值用作 的第一个参数memset。你的数组的大小是sizeof idt_entries.

所以这里是如何正确调用memset将所有数组元素设置为0:

memset(idt_entries, 0, sizeof idt_entries);
于 2012-01-28T00:41:57.037 回答
0

idt_entries已经是一个指针。删除 & 符号:

memset (idt_entries, 0, sizeof(idt_entry_t)*256);
于 2012-01-28T00:39:12.153 回答