From: dmcg6174 AT yahoo DOT com (Daniel McGrath) Newsgroups: comp.os.msdos.djgpp Subject: Re: Problem with nested #include's Date: Sun, 15 Nov 1998 23:12:38 GMT Organization: Long Island Information, Inc. Lines: 66 Message-ID: <364f5d7b.5753228@news.liii.com> NNTP-Posting-Host: mcgrath.liii.com X-Trace: cedar.liii.com 911168111 6088 204.180.230.5 (15 Nov 1998 22:15:11 GMT) X-Complaints-To: news AT liii DOT com NNTP-Posting-Date: 15 Nov 1998 22:15:11 GMT X-Newsreader: Forte Free Agent 1.11/16.235 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Article #412057568 of Deja News: --------------------------------------------------------------------------------------- From: Eli Zaretskii Subject: Re: Problem with nested #include's Date: 15 Nov 1998 00:00:00 GMT Message-ID: X-NNTP-Posting-Host: 208.7.170.162 References: <364e0e09 DOT 936581 AT news DOT liii DOT com> To: Daniel McGrath X-Sender: eliz AT is Content-Type: TEXT/PLAIN; charset=US-ASCII DJ-Gateway: from mailing list djgpp X-Unsubscribes-To: listserv AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Trace: 15 Nov 1998 07:59:20 -0500, 208.7.170.162 Organization: None provided MIME-Version: 1.0 Reply-To: djgpp AT delorie DOT com Newsgroups: comp.os.msdos.djgpp On Sat, 14 Nov 1998, Daniel McGrath wrote: > Suppose I have a source file foo.c, and in the file it says > > #include "bar.h" > > where bar.h is a header file. In this header file, bar.h, it says > > #include "baz.h" > > Now, when I run the preprocessor using "gcc" or "cpp", I will get an > error message like this: > > In file included from foo.c:LINE_NUMBER: > bar.h:LINE_NUMBER: baz.h: No such file or directory (ENOENT) > > I get this error message _even when the file baz.h actually does > exist_. In what directory does baz.h exist? Is it in the same place where bar.h resides? If it is, it should be something funny in your source (like if there's an invisible character on the line which includes "bar.h"). If baz.h is NOT in the same directory where bar.h is, then you should be aware of the following excerpt from the cpp docs, where the ``#include "foo"'' feature is described: This variant is used for header files of your own program. It searches for a file named FILE first in the current directory, then in the same directories used for system header files. The current directory is the directory of the current input file. Note the last sentence: when "bar.h" is processed, the ``directory of the current input file'' is the one where bar.h is kept, not the one where you keep the source file that included bar.h. The usual way to handle these cases is to use #include and , and add -I. to the GCC command line. ----------------------------------------------------------------------------------------------------------- Actually, I am writing out the file names, complete with the drive letter and the path (i.e., "#include "c:/.../bar.h" (or baz.h)).