我正在尝试做
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" {...}
.
谢谢!
您是否将其编译为 C++?
添加演员表。
memset ((u8int*)idt_entries, 0, sizeof(idt_entry_t)*256);
idt_entries
是 的数组 256 idt_entry_t
。
数组的值idt_entries
是指向其第一个元素的指针。将此值用作 的第一个参数memset
。你的数组的大小是sizeof idt_entries
.
所以这里是如何正确调用memset
将所有数组元素设置为0:
memset(idt_entries, 0, sizeof idt_entries);
idt_entries
已经是一个指针。删除 & 符号:
memset (idt_entries, 0, sizeof(idt_entry_t)*256);