gpt4 book ai didi

c - 无法编译 ecepass.c

转载 作者:行者123 更新时间:2023-12-02 09:18:34 25 4
gpt4 key购买 nike

我一辈子都无法编译这段旧代码。我正试图用它来测试客户端的外部漏洞。我让它在 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

错误:

In file included from ecepass.c:8:0: ecepass.c:72:5: error: expected declaration specifiers or '...' before numeric constant int in_cksum(u_short *addr, int len)

最佳答案

PasteBin 上发布的代码中,第 #8 行(和 #24 :d)有语句:#include <machine/in_cksum.h>

因为我不在 Nix 上,所以我在 Internet 上搜索了该文件并找到了 2 个引用:

在它们中(大约 #40+ 行),似乎 in_cksum 是一个预处理器宏:

#define in_cksum(m, len)        in_cksum_skip(m, len, 0)

将函数的名称(以及代码中所有引用它的地方)更改为不是宏的名称,或者实际上是另一个已定义的标识符,例如校验和(希望它尚未定义:)),你应该没问题(也可能适用于你的其他功能)。
或者作为替代方案,删除机器/in_cksum.h 包含(直接 间接(通过其他嵌套包含)),但这可能会变得有点困难(另外,我没有检查所有代码以查看如果使用了 include 中的其他函数)。

关于c - 无法编译 ecepass.c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44640775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com