c - 编译错误问题

标签 c pointers network-programming compiler-errors

我遇到了一些我无法弄清楚的编译错误,虽然我确信它们很愚蠢,但我无法通过其他 channel 找到对我有很大帮助的答案。

问题 1:(这些是 TCP 协议(protocol)的一部分)

error: ‘TH_SYN’ undeclared (first use in this function)
error: ‘TH_ACK’ undeclared (first use in this function)

tcp.tcph_flags = TH_SYN;
tcp.tcph_flags = TH_ACK;

问题2:

error: conversion to non-scalar type requested

const int one = 1;
char buffer[PCKT_LEN];
struct sockaddr_in sin;
struct ipheader ip;
struct tcpheader tcp;

ip = (struct ipheader) buffer;                      /* ERROR POINTS HERE */
tcp = (struct tcpheader) buffer + ip.iph_ihl *4;    /* AND HERE */

问题三:

warning: assignment makes integer from pointer without a cast

case 'i': dip = inet_addr(optarg);
          dstip = (optarg);  /* ERROR POINTS TO THIS LINE */
          break;

现在,我希望我已经复制了足够多的错误相关信息,以便您能够提供帮助,但如果我遗漏了什么,请告诉我。对于问题 1,我相信我缺少某种头文件,但我不知道是哪个。问题 2 和 3 是指针问题,但我不确定它们为什么不正确。提前致谢:)

最佳答案

  • 对于第一个问题,包含定义TH_SYNTH_ACK 的 header 。在我的系统上它是 netinet/tcp.h
  • 第二题,把ipheadertcpheader变成指针
  • 对于第三个问题,我认为你需要一个 strtoul 但我不确定

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

相关文章:

c - 不兼容的指针类型

c - 错误返回修改指针

sockets - 多个send()方法调用和1个receive方法。这正常吗?

linux - 在linux内核中开发简单的net_device

javascript - 如何生成网络遍历 key ?

c# - 如何从 native C .dll 导出结构定义以在 C# 中使用

c - 点 (.) 在结构初始值设定项中是什么意思?

c - 如何用C实现XOR加密从客户端发送数据到服务器

c - 如何读取旋转编码器输入

c++ - 涉及指针和手动实现的矩阵类的问题