EXPLORATION 2 ■ REAdINg C++ COdE
11
In C++ parlance, the #include keyword is also a verb, as in “line 3 includes the iostream header,” “line 4 includes
the limits header,” and so on. A header is typically a file that contains a series of declarations and definitions.
(A declaration is a kind of definition. A definition tells the compiler more about a name than a declaration. Don’t
worry about the difference yet, but notice when I use declaration and when I use definition.) The compiler needs
these declarations and definitions, so it knows what to do with names such as std::cin. Somewhere in the
documentation for your C++ compiler and standard library is the location for its standard headers. If you are curious,
visit that folder or directory and see what you can find there, but don’t be disappointed if you can’t read the headers.
The C++ standard library makes full use of the entire range of C++ language features. It’s likely you won’t be able to
decipher most of the library until after you’ve made it through a large part of this book.
Another important C++ rule: the compiler has to know what every name means. A human can often infer
meaning or at least a part of speech from context. For example, if I were to say, “I furbled my drink all over my shirt,”
you may not know exactly what furbled means, but you can deduce that it is the past tense of a verb and that it
probably implies something undesirable and somewhat messy.
C++ compilers are a lot dumber than you. When the compiler reads a symbol or identifier, it must know exactly
what the symbol or identifier means and what part of “speech” it is. Is the symbol a punctuator (such as the
statement-ending semicolon) or an operator (such as a plus sign for addition)? Is the identifier a type? A function?
A variable? The compiler also has to know everything you can do with that symbol or name, so it can correctly
compile the code. The only way it can know is for you to tell it, and the way you tell it is by writing a declaration or by
importing a declaration from a header. And that’s what #include directives are all about.
Any line that begins with # ends at the end of the line. C++ has several different # directives, but only #include
concerns us at this time. Inside the angle brackets must be a header name, which is typically a standard library header,
but it might also be a header from a third-party library.
Later in the book, you’ll even learn to write your own headers.
Modify line 4 to misspell limits as stimil. Try to compile the program. What happens?
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
The compiler cannot find any header named stimil, so it issues a message. Then it may try to compile the
program, but it doesn’t know what std::numeric_limits is, so it issues one or more messages. Some compilers
cascade messages, which means every use of std::numeric_limits produces additional messages. The actual error
becomes lost in the noise. Focus on the first one or few messages the compiler issues. Fix them, then try again. As you
gain experience with C++, you will learn which messages are mere noise and which are important. Unfortunately,
most compilers will not tell you, for example, that you can’t use std::numeric_limits until you include the <limits>
header. Instead, you need a good C++ language reference, so you can look up the correct header on your own. The
first place to check is the documentation that accompanies your compiler and library. Authors have been slower
than compiler-writers to catch up to the C++ 11 standard, so keep checking the web site and bookstores for updated
references.
Most programmers don’t use <limits> much; Listing 2-1 included it only to obtain the definition of
std::numeric_limits. On the other hand, almost every program in this book uses <iostream>, because it declares
the names and types of the I/O stream objects, std::cin and std::cout. There are other I/O headers, but for basic
console interactions, you need only <iostream>. You will meet more headers in coming Explorations.
Main Program
Every C++ program must have int main(), as shown on line 6. You are permitted a few variations on a theme, but the
name main is crucial. A program can have only one main, and the name must be spelled using all lowercase characters.
The definition must start with int.
www.allitebooks.com