38 lines
1.3 KiB
Markdown
38 lines
1.3 KiB
Markdown
> **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 from `testdebug.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. |