C 错误:重新定义';结构审计信息地址';
当我编译上面的代码时,会有一个错误 错误:重新定义“>struct au_tid_addr” 提示,但我无法解决问题C 错误:重新定义';结构审计信息地址';,c,C,当我编译上面的代码时,会有一个错误 错误:重新定义“>struct au_tid_addr” 提示,但我无法解决问题 有人能帮我吗?我们也非常感谢与这个问题的讨论相关的链接。谢谢。我不知道你从哪里得到的头球。但如果您自己编写,则更喜欢stddef.h而不是定义自己的offsetoff。前者没有与UB共舞。您一定收到了格式为“…先前在…中定义的”的错误消息。在例如\include”/usr/include/sys/queue.h“中使用完整绝对路径的目的是什么?为什么不干脆把#也包括在内呢。然后编
有人能帮我吗?我们也非常感谢与这个问题的讨论相关的链接。谢谢。我不知道你从哪里得到的头球。但如果您自己编写,则更喜欢
stddef.h
而不是定义自己的offsetoff
。前者没有与UB共舞。您一定收到了格式为“…先前在…中定义的”的错误消息。在例如\include”/usr/include/sys/queue.h“
中使用完整绝对路径的目的是什么?为什么不干脆把#也包括在内呢。然后编辑您的问题以改进它,例如复制(作为文本!)编译器的完整输出,并将其粘贴到问题正文中(无需修改)。最后,offsetof
是一个选项。不要自己定义。我不知道你从哪里得到的标题。但如果您自己编写,则更喜欢stddef.h
而不是定义自己的offsetoff
。前者没有与UB共舞。您一定收到了格式为“…先前在…中定义的”的错误消息。在例如\include”/usr/include/sys/queue.h“
中使用完整绝对路径的目的是什么?为什么不干脆把#也包括在内呢。然后编辑您的问题以改进它,例如复制(作为文本!)编译器的完整输出,并将其粘贴到问题正文中(无需修改)。最后,offsetof
是一个选项。不要自己定义它。
#include <stdio.h>
#include <stdint.h>
#include "/usr/include/sys/queue.h"
#include "/usr/include/altq/altq_classq.h"
#include "/usr/include/altq/altq_rmclass.h"
#include "/usr/include/bsm/audit.h"
#include "/usr/include/sys/types.h"
#include "/usr/include/bsdxml_external.h"
#include "/usr/include/sys/bitstring.h"
#include "/usr/include/bsdxml.h"
#define offsetof(TYPE,MEMBER) ((int)(&((TYPE *)0)->MEMBER))
struct au_tid {
dev_t port;
u_int32_t machine;
};
struct au_tid_addr {
dev_t at_port;
u_int32_t at_type;
u_int32_t at_addr[4];
};
struct au_mask {
unsigned int am_success;
unsigned int am_failure;
};
struct auditinfo {
au_id_t ai_auid;
au_mask_t ai_mask;
au_tid_t ai_termid;
au_asid_t ai_asid;
};
struct auditinfo_addr {
au_id_t ai_auid;
au_mask_t ai_mask;
au_tid_addr_t ai_termid;
au_asid_t ai_asid;
au_asflgs_t ai_flags;
};
struct auditpinfo {
pid_t ap_pid;
au_id_t ap_auid;
au_mask_t ap_mask;
au_tid_t ap_termid;
au_asid_t ap_asid;
};
struct auditpinfo_addr {
pid_t ap_pid;
au_id_t ap_auid;
au_mask_t ap_mask;
au_tid_addr_t ap_termid;
au_asid_t ap_asid;
au_asflgs_t ap_flags;
};
struct au_session {
auditinfo_addr_t *as_aia_p;
au_mask_t as_mask;
};
.......
int main()
{
int temp =-1;
temp = offsetof(struct internal_state , dummy);
printf("%d\n", temp);
return 0;
}