After we have gotten our basic program to work (woohoo!) we can now turn to learn how to intentionally break it (ouch!) 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 as we are learning.
Once you have mastered the language, there would be little need to do this (yay!). While we are learning the language, however, becoming familiar with the various kinds of compiler error messages is essential and will ultimately save us many hours/weeks of debugging, which may 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 previously, 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 { from hello2.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: <>, (), which occurs 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 line return 0; What error messages does the compiler give?
- Change int main() to int MAIN(). What does the compiler tell you?
- Similarly, change printf( to printout( . With this error, you should see what linker messages look like.
- Now, comment out #include <stdio.h>. You should also see linker errors telling you it can't find the printf() 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 thousand lines of error messages from the compiler, I would really like to know. Please email me with the details of your experiments.