0

理解できないコンパイルエラーがいくつか発生しています。それらは非常にばかげていると確信していますが、他のチャネルを介して私を大いに助ける答えを見つけることができません.

問題 1: (これらは TCP プロトコルの一部です)

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 */

問題 3:

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 はポインターの問題ですが、なぜ正しくないのかわかりません。前もって感謝します :)

4

2 に答える 2

4
  • TH_SYN最初の問題については、と を定義するヘッダーを含めますTH_ACK。私のシステムではnetinet/tcp.h
  • 2 番目の問題では、ipheadertcpheaderをポインターに変換します。
  • 3番目の問題については、必要だと思いますが、strtoulわかりません
于 2012-07-27T13:34:43.733 に答える
3

問題1の場合、必要です

#include <netinet/tcp.h>

問題2の場合、宣言とキャストの両方にstruct ipheader含める必要があります。struct ipheader *struct tcpheaderstruct tcpheader *

問題 3 については、optarg はポインターであり、逆参照する必要があるため、次のように参照します。*optarg

于 2012-07-27T13:36:12.113 に答える