与Mingw一起编译

时间:2012-11-02 04:48:30

标签: c mingw32

我在文件夹中有一堆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进行编译。

2 个答案:

答案 0 :(得分:1)

我相信您必须将当前目录添加到&#34;标准位置列表中#34;那个gcc用的。当您使用而不是&#34; computil.h&#34;时,Unix风格的编译器不会查看当前目录。

要快速解决此问题,请将-I.添加到gcc命令行。 (短划线,资本眼,期间):     gcc -I。 computil.c

如果该应用程序包含要在找到源文件的位置找到的文件,那么您应该将include行更改为:     #include&#34; computil.h&#34;

这是Classic C在ANSI标准化过程中迷失的一个重要细微差别之一。标准C允许编译器确定是否存在差异或者&lt;&gt;括号内和&#34;&#34;引用标题。它在Unix和GNU(&#34; GNU&#39;不是Unix!&#34;)中有所不同,嗯,几乎就是Unix在某些地方更好。

答案 1 :(得分:0)

简单来说,#include <header.h>表示“在编译器自己的库目录中搜索,而#include "header.h表示”在与创建#include的.c文件相同的目录中搜索。“ p>

我不相信gcc有任何名为computil.h和dataio.h的库头文件,所以代码不会编译。