无法将 'idt_entry_t (*)[256] 转换为 u8int*
我正在尝试做
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 代码。
谢谢!
I am trying to do
memset(&idt_entries, 0, sizeof(idt_entry_t)*256);
which produces
error: cannot convert 'idt_entry_t (*)[256] {aka idt_entry_struct ()[256]}' to 'u8int {aka unsigned char*}' for argument '1' to 'void memset(u8int*, u8int, u32int)'
If it helps, it is C code wraped in extern "C" {...}
.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您将其编译为 C++ 吗?
添加演员阵容。
memset((u8int*)idt_entries, 0, sizeof(idt_entry_t)*256);
Are you compiling this as C++?
Add a cast.
memset ((u8int*)idt_entries, 0, sizeof(idt_entry_t)*256);
idt_entries
是idt_entry_t
的数组256。数组 idt_entries 的值是指向其第一个元素的指针。使用该值作为 memset 的第一个参数。数组的大小是
sizeof idt_entries
。下面是如何正确调用memset将所有数组元素设置为0:
idt_entries
is an array 256 ofidt_entry_t
.The value of the array
idt_entries
is a pointer to its first element. Use this value as the first argument tomemset
. The size of your array issizeof idt_entries
.So here is how to correctly call
memset
to set all array elements to 0:idt_entries
已经是一个指针。删除 & 符号:idt_entries
is already a pointer. Remove the ampersand: