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.his 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
#definedirective 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
DEBUGmacro to be defined beforedebug.his included in order forPRINT_DEBUGto 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.