C 错误:重新定义';结构审计信息地址';

C 错误:重新定义';结构审计信息地址';,c,C,当我编译上面的代码时,会有一个错误 错误:重新定义“>struct au_tid_addr” 提示,但我无法解决问题 有人能帮我吗?我们也非常感谢与这个问题的讨论相关的链接。谢谢。我不知道你从哪里得到的头球。但如果您自己编写,则更喜欢stddef.h而不是定义自己的offsetoff。前者没有与UB共舞。您一定收到了格式为“…先前在…中定义的”的错误消息。在例如\include”/usr/include/sys/queue.h“中使用完整绝对路径的目的是什么?为什么不干脆把#也包括在内呢。然后编

当我编译上面的代码时,会有一个错误

错误:重新定义“>struct au_tid_addr”

提示,但我无法解决问题
有人能帮我吗?我们也非常感谢与这个问题的讨论相关的链接。谢谢。

我不知道你从哪里得到的头球。但如果您自己编写,则更喜欢
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;
}