0

フォルダ内にたくさんのCファイルとヘッダーファイルがあります。MinGWコンパイラでCファイルをコンパイルすると、そのようなファイルやディレクトリがないことがわかります。しかし、私はすべてのファイルを同じフォルダーに持っています。それらをコンパイルするにはどうすればよいですか?

参照用のコード(ファイルcomputil.c)を添付しました:

#include <stdio.h>
#include <computil.h>
#include <dataio.h>

int getc_skip_marker_segment(const unsigned short marker, unsigned char **cbufptr, unsigned char *ebufptr)
{
  int ret;
  unsigned short length;

  ret = getc_ushort(&length, cbufptr, ebufptr);
  if(ret)return(ret);
  length -= 2;
  if(((*cbufptr)+length) >= ebufptr)
  {
    fprintf(stderr, "ERROR : getc_skip_marker_segment : ");
    fprintf(stderr, "unexpected end of buffer when parsing ");
    fprintf(stderr, "marker %d segment of length %d\n", marker, length);
    return(-2); }(*cbufptr) += length; return(0);
  }
}

でコンパイルしていgcc -c computil.cます。

4

2 に答える 2

1

gccが使用する「標準の場所」のリストに現在のディレクトリを追加する必要があると思います。「computil.h」の代わりに使用すると、Unixスタイルのコンパイラは現在のディレクトリを検索しません。

これをすばやく修正するに-I.は、gccコマンドラインに追加します。(ダッシュ、大文字、ピリオド):gcc-I。computil.c

ソースファイルが見つかった場所で見つけることを目的としたアプリケーションインクルードファイルの場合は、インクルード行を次のように変更する必要があります。#include "computil.h"

これは、ANSI標準化プロセスで失われたClassicCの貴重なニュアンスの1つです。標準Cを使用すると、コンパイラーは、<>括弧で囲まれたヘッダーと""引用符で囲まれたヘッダーに違いがあるかどうかを判断できます。それはUnixとGNU(「GNUはUnixではない!」)に違いをもたらします。まあ、ほとんどの場合、Unixは場所によってのみ優れています。

于 2012-11-02T05:12:27.853 に答える
0

簡単に言えば、#include <header.h>「コンパイラ自身のライブラリ ディレクトリを#include "header.h検索する」ことを意味し、「#include を作成した .c ファイルと同じディレクトリを検索する」ことを意味します。

gcc に computil.h および dataio.h という名前のライブラリ ヘッダーがあるとは思わないため、コードはコンパイルされません。

于 2012-11-02T07:59:41.380 に答える