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。编译器.c

如果这是一个应用程序包含文件,旨在在找到源文件的位置找到,那么您应该将包含行更改为:#include "computil.h"

这是 Classic C 在 ANSI 标准化过程中丢失的宝贵细微差别之一。标准 C 让编译器决定是否存在差异,或者在 <> 括号和 "" 引用的标题之间是否存在差异。它在 Unix 和 GNU 中有所不同(“GNU's Not 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 回答