お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2014-03-22 21:53:58

ryuusei
メンバ
登録日: 2014-01-09

C言語でのプログラミングについて

こんにちは。

私はいまC言語をgeanyを使ってプログラミングしています
そしてこのコードを書いてコンパイルすると

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#include "hacking.h"


int main(void)
{
    int i, recv_length, sockfd;
    u_char buffer[9000];
   
    if((sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_TCP)) == -1)
        fatal("ソケットが生成できませんでした。");
        
    for(i = 0; i < 3; i++){
        recv_length = recv(sockfd, buffer, 8000, 0);
        printf("%d バイトのパケットを取得しました。\n", recv_length);
        dump(buffer, recv_length);
        }
}

'dump'に対する定義されていない参照です

と出てエラーになってしまうのですが
なにか解決方法はございませんでしょうか?

オフライン

 

#2 2014-03-23 10:17:32

array
メンバ
登録日: 2007-03-13

Re: C言語でのプログラミングについて

不勉強で申し訳ないのですが、
dump()
という関数は標準関数なのでしょうか?

オフライン

 

#3 2014-03-23 13:42:01

ryuusei
メンバ
登録日: 2014-01-09

Re: C言語でのプログラミングについて

おそらくは。

オフライン

 

#4 2014-03-23 18:06:02

ry
メンバ
登録日: 2008-07-30

Re: C言語でのプログラミングについて

C 言語では、関数などを使用する際には、同じファイル内のそれ以前で定義、宣言が必須です。
同じファイル内には #include でインクルードしたファイルも含みます。

本質問の場合だと、提示のソースが一つのファイルになっていると思いますが、そのファイル中で dump() 関数が定義、宣言されていません。
そうなると、#include でインクルードしているファイルのどれかで定義、宣言されていなければいけません。

何を参考にして本質問のコードに至ったかは分かりませんが、参考元では dump() 関数を別の場所で定義、宣言してあり、それを書いたファイルをインクルードしていたのではないでしょうか。

オフライン

 

#5 2014-03-24 18:58:01

ryuusei
メンバ
登録日: 2014-01-09

Re: C言語でのプログラミングについて

ありがとうございましたm(~v~)m

オフライン

 

Board footer

Powered by FluxBB