web-dev-qa-db-ja.com

Cであなた自身のヘッダファイルを作成する

最初から最後までの簡単な例を使って、Cでヘッダーファイルを作成する方法を誰でも説明できますか。

155
Anuragdeb3

foo.h

#ifndef FOO_H_   /* Include guard */
#define FOO_H_

int foo(int x);  /* An example function declaration */

#endif // FOO_H_

foo.c

#include "foo.h"  /* Include the header (not strictly necessary here) */

int foo(int x)    /* Function definition */
{
    return x + 5;
}

main.c

#include <stdio.h>
#include "foo.h"  /* Include the header here, to obtain the function declaration */

int main(void)
{
    int y = foo(3);  /* Use the function here */
    printf("%d\n", y);
    return 0;
}

GCCを使用してコンパイルする

gcc -o my_app main.c foo.c
259
#ifndef MY_HEADER_H
# define MY_HEADER_H

//put your function headers here

#endif

MY_HEADER_Hは二重包含ガードとして機能します。

関数の宣言では、シグネチャを定義する必要があります。つまり、次のようにパラメータ名を指定する必要はありません。

int foo(char*);

本当に必要な場合は、パラメータの識別子を含めることもできますが、識別子は関数の本体(実装)でのみ使用されるため、必須ではありません。ヘッダ(パラメータシグネチャ)の場合は欠落しています。

これ宣言char*を受け入れてfooを返す関数int

ソースファイルには、次のものがあります。

#include "my_header.h"

int foo(char* name) {
   //do stuff
   return 0;
}
24
Flavius

myfile.h

#ifndef _myfile_h
#define _myfile_h

void function();

#endif

myfile.c

#include "myfile.h"

void function() {

}
8
TommyGunn32

ヘッダファイルには、.cファイルまたは.cpp/.cxxファイルで定義した関数のプロトタイプが含まれています(cまたはc ++を使用しているかどうかによって異なります)。 #ifndef /#defineを.hコードの周囲に配置して、プログラムの異なる部分に同じ.hを2回含めると、プロトタイプが1回だけ含まれるようにします。

client.h

#ifndef CLIENT_H
#define CLIENT_H

short socketConnect(char *Host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize);


#endif /** CLIENT_H */

次に、.hを.cファイルに次のように実装します。

client.c

#include "client.h"

short socketConnect(char *Host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize) {
 short ret = -1;
 //some implementation here
 return ret;
}
5
djsumdog