在C中编译后出错

时间:2011-02-23 05:11:16

标签: c compilation

我已将所有结构放在名为structure.h的头文件中:

struct mac_filter { 
    u_char ether_dhost[ETHER_ADDR_LEN]; 
    u_char ether_shost[ETHER_ADDR_LEN]; 
    u_short ether_type; 
}__attribute__ ((packed));

当我编译structure.h时,我收到以下错误:

error: expected specifier-qualifier-list before ‘u_char’
u_char ether_dhost[ETHER_ADDR_LEN];(line at which there is an error )

error: expected specifier-qualifier-list before ‘u_int16_t’
u_int16_t uh_sport;(line at which there is an error )

如何解决这些错误?

1 个答案:

答案 0 :(得分:1)

如果它在之前开始移动,那么很可能是因为u_charu_int16_t未定义。

暂时将类型更改为int并查看问题是否消失(尽管您可能会看到其他问题)。

如果是这样,请更改它们并确保在尝试使用它们之前定义类型。例如,检查标题是否按正确顺序包含以执行此操作。如果您要发布代码,那么告诉您完全如何解决它会更容易。


我犹豫不决,因为它听起来居高临下。你 实际上是在尝试自己编译头文件,不是吗?我只是因为你的“我编译那个structure.h”的评论。如果你是,你不应该。您应该编译#include头文件的C文件。

如果我冒犯了道歉,那不是我的意图。只是我看到了一些人试图做的奇妙事情,这对他们来说很有意义: - )