

It, but of course the linker still found it. I also got a compiler warning about an incompatible implicit declaration ofīuilt-in function 'printf' - my new stdio.h didn't declare The compiler found the system copy of stdio.h instead of If you include this file in the same directory as source.c: You can verify this by actually "overriding" stdio.h If the header file isn't found, then the angle-bracket search path is used. If you use quotes, the current directory is searched first. This complexity arisesīecause the behavior differs when you use quotes vs.Īngle brackets.

It just looks in the current directory, finds the header file, and compiles.īut actually, there's even a bit of a twist here. In the simplest (theoretical) case, you have a single source file and a single What you want it to in most cases, it can be pretty complex and compiler flags "implementation-defined" GCC manner for header file incluion? As it turns out, Mostly blazed the trail for standardizing the non-standard parts of the C Sometimes you had to use a vendor-specific compiler like Microsoft's, but GCC Than K&R does! Technically speaking, it's impossible to write a portableĬ program consisting of less than one source file, since the compiler canīe standards compliant while searching for header files anywhere it cares to.Īlthough Apple seems to have nudged the world in the direction of LLVM, forĭecades, GCC was the de facto standard for C compilation until very recently. The standard actually says less about where to look for header files The named source file is searched for in an implementation-defined manner. Source file identified by the specified sequence between the " delimiters. In section 6.10.2, "Source file inclusion", states:Ĭauses the replacement of that directive by the entire contents of the What does the standard say about header file inclusion? K&R was published in 1978, but C was standardized by ANSI in 1983. Otherwise, the search should be "implementation-defined". In thisĬase, the compiler should (typically) look for the header in the same directory as the Of the header file in double quotes, e.g. While not an official standard, K&R suggested two different ways toĬompiler where to look for a header file. Was found if it is not found there, or if the name is enclosed in, seaching follows an implementation-defined rule to find the file. Is quoted, searching for the file typically begins where the source program Is replaced by the contents of the file filename. The strange-lookingĬonstruct in listings 1 and 2 compile and work correctly: The contents of another file in the current one. Include-ing a header file in a C program actually means copying

You can't even read a file or write to the When writing embedded apps - but practically, you're going to probably Technically speaking, you can write a complete and useful C program withoutĮver creating or referring to a header file - this is actually feasible
#HOW TO CREATE A MAKEFILE FOR C PROGRAM FROM COMMANDLINE HOW TO#
That describe how to invoke that functionality from other source files. Partly by convention and partly by design, C programs are split into sourceįiles that describe the functionality of the program itself and header files Where does GCC Look to Find its Header Files? Where Does GCC Look to Find its Header Files?
