Quiz submission record for quiz3-2-2 at Wed Jul 7 19:01:25 2004: Your Answer for Question 1: In a very simple term, the purpose of the C preprocessor is to make the coding easier for the programmer--it shortens long names and phrases, avoids confusion by renaming some values, etc. C preprocessor keywords (#define, #include, etc) are the language of its input, and the output is C language. In a sense, this is metacircular, but in fact, the transition is always from the preprocessor keywords to C language. If the preprocessor compilation were placed in figure 3.21, it would be at the very top level (before any other step). Your Answer for Question 2: I am guessing that if this were the case, there could be two consequences. (1) It may be harder to catch some of the lower-level glitches, such as memory and register allocation. Since the C programmer would only be allowed to access the C program, he cannot have a "microscopic view" at his program and will not be able to find some bugs that are lurking at the very low level. (2) This would be a waste of computing resouces including time, because without the linker, every time the programmer changes a little line of his code, he would have to compile and assemble the whole program again (instead of just doing that procedure independently; pg 159). Your unique submission ID is quiz3-2-2-cs61c-ew-1089252085-1994.