Learning to experiment with code
Now that we have gotten our basic program to work (woo-hoo!), we can turn our attention to learning how to intentionally break it (ouch!). This is so that we can learn more about what the compiler is trying to tell us. What it is telling us isn't always clear, especially while we are learning.
Once you have mastered the language, there would be little need to do this (yay!). However, while we are learning the language, becoming familiar with the various kinds of compiler error messages is essential and, ultimately, will save us many hours/weeks of debugging, which might have been prevented early on in the iterative program development cycle. Please do not skip this essential step as you learn C as it will save you many hours/weeks.
So, using the full program development cycle outlined earlier, inject the following errors into your source file. When you see the error messages, try to correlate them with what you just did to cause them. After each one, correct the error and recompile it to verify the fix:
- Remove
{
fromhello2.c
. Save it and compile it. What errors does the compiler give? - Put
{
back in its appropriate place and remove}
. What errors does the compiler give? - There are three other paired punctuation marks:
<>
and()
, which occur twice, and""
. What errors does the compiler give when you remove the opening of the pair and the closing of the pair? Put them back after each experiment. - Remove
;
from either line. What error messages does the compiler give? - Comment out the
return 0;
line. What error messages does the compiler give? - Change
int main()
toint MAIN()
. What does the compiler tell you? - Similarly, change
printf(
toprintout(
. With this error, you should be able to see what linker messages look like. - Now, comment out
#include <stdio.h>
. You should also see linker errors telling you they can't find theprintf()
function. - Return
hello2.c
to its original state. Compile, run, and verify the program is both correct and complete.
If you get more than 23,000 lines of error messages from the compiler, I would really like to know. Please email me with the details of your experiments.