1.7 KiB
1. Section 15.1 listed several advantages of dividing a program into multiple source files.(a). Describe several other advantages
(b). Describe some disadvantages
2. Which of the following should not be put in a header file? Why not?
b. Function definitions - Functions should only be defined once, and this allows multiple files to share the same function definition
3. We saw that writing
#include <file>
instead of#include "file"
may not work if file is one that we've written. Would there be any problem with writing$include "file"
instead of#include <file>
if file is a system header?
Yes, ""
is a path relative to the current file, whereas <>
is a path to the system's standard library headers.
4. Assume that
debug.h
is a header file with the following contents... (a). What is the output when the program is executed?
Output if DEBUG is defined:
Value of i: 1
Value of j: 2
Value of i + j: 3
Value of 2 * i + j - k: 1
(b). What is the output if the
#define
directive is removed fromtestdebug.c
?
Output if DEBUG is not defined:
(c). Explain why the output is different in parts (a) and (b)
When DEBUG
is defined, any instances of the PRINT_DEBUG
token are replaced with a printf
call during compile time, but when it's not defined, they're replaced with nothing.
(d). Is it necessary for the
DEBUG
macro to be defined beforedebug.h
is included in order forPRINT_DEBUG
to have the desired effect? Justify your answer.
Macro invocations are evaluated sequentially, and so if DEBUG
was defined after PRINT_DEBUG
, then any usages of PRINT_EVALUATION
would be have like DEBUG
was not defined.