c - 初始化从指针生成整数,无需强制转换和另外 2 个编译器错误

问题描述 投票:0回答:3

所以我收到此警告:

initialization makes integer from pointer without a cast

在下面的代码中:

void receive(u_char *args, const struct pcap_pkthdr *pkthdr, const u_char *buffer)

{

const int one = 1;

int LEN = args;      /* THIS IS THE LINE */

struct ipheader *ip;

struct tcpheader *tcp;

说实话,小新手我不知道该怎么做,因为几乎所有搜索都会返回

makes pointer from integer

我还收到这些编译器消息:

/tmp/cci6u7NH.o: In function `main':
ChannelBunny.c:(.text+0x448): undefined reference to `pthread_create'
ChannelBunny.c:(.text+0x4b7): undefined reference to `pthread_join'
/tmp/cci6u7NH.o: In function `receive':
ChannelBunny.c:(.text+0xcb6): undefined reference to `nthol'
ChannelBunny.c:(.text+0xcdf): undefined reference to `nthol'
collect2: ld returned 1 exit status

通过使用

-l pcap
摆脱了类似的 pcap 问题,但这对其他两个不起作用。它刚刚返回:

gcc: pthread: No such file or directory
gcc: nthol: No such file or director

我想我必须下载一些东西?或者我必须使用另一个命令。 (我正在使用 Backtrack5,如果这对你有用的话)。

c pointers gcc warnings
3个回答
9
投票

你应该这样做

int LEN = *args;

args是一个指针,*args是它指向的值。另外,你不应该将 u_char 放入 int 中。

对于nthol:http://msdn.microsoft.com/en-us/library/windows/desktop/ms740069(v=vs.85).aspx


3
投票

您可以使用

atoi()
函数将 char* 转换为 int。

关于pthread的链接错误,尝试在你的编译命令上加上

-lpthread


0
投票

你传递了一个指针

u_char *args

您尝试将其分配给一个整数

int LEN = args;

错误消息是这样说的。

“从指针生成整数”

真正的问题是你认为 args 是什么? 仅从外观来看,我猜它包含一些参数,而不是某些参数的长度?

© www.soinside.com 2019 - 2024. All rights reserved.