我在文件夹中有一堆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
进行编译。
答案 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的库头文件,所以代码不会编译。