我不能为我的生活编译这个旧代码。我正在尝试使用它来测试客户端的外部漏洞。我让它在FreeBSD 11中运行并使用gcc进行编译。知道我为什么会收到这个错误吗?
int in_cksum(u_short *addr, int len)
{
int sum;
int nleft;
u_short ans;
u_short *w;
sum = 0;
ans = 0;
nleft = len;
w = addr;
while (nleft > 1) {
sum += *w++;
nleft -= 2;
}
if (nleft == 1) {
*(u_char *)(&ans) = *(u_char *)w;
sum += ans;
}
return (sum);
}
此处的完整代码:https://pastebin.com/MGSYycmB
错误:
ecepass.c中包含的文件:8:0: ecepass.c:72:5:错误:预期的声明说明符或数字常量前的'...' int in_cksum(u_short * addr,int len)
答案 0 :(得分:5)
在 pastebin 上发布的代码中,在行#8 (和#24 :d)处有以下声明:{{1} }
由于我不在 Ux ,我在互联网上搜索了该文件并找到了2个参考文献:
在它们中(在#40 + 行附近),似乎$(this + '.treeview').addClass('active');
是预处理器宏:
#include <machine/in_cksum.h>
将函数的名称(以及代码中引用它的所有位置)更改为非宏的内容,或者事实上另一个定义的标识符,例如: in_cksum
(希望它还没有定义:)),你应该没问题(也可能适用于你的其他功能)。或者作为替代方案,删除 machine / in_cksum。 h 包含(直接和间接(通过其他嵌套包含)),但这可能会有点困难(同样,我没有检查所有代码以查看是否有其他功能从使用包括。)