function c_menu()
{
  _menu_top('C/C++', 'c/menu.gif')
  _option('Hey, Be C', 'c/index.gif', 'c/index.html', 'Contents of the \'Hey, Be C\' programming course', true)
  _option('C variables', 'c/ansi-c.gif', 'c/variables.html', 'Declaring, typing, and using C variables', false)
  _option('Typecasting', 'c/ansi-c.gif', 'c/typecasting.html', 'Mixing and using variable types', false)
  _option('C pointers', 'c/ansi-c.gif', 'c/pointers.html', 'Accessing variables through memory addresses', false)
  _option('C arrays', 'c/ansi-c.gif', 'c/arrays.html', 'Array variables in C', false)
  _option('C strings', 'c/ansi-c.gif', 'c/strings.html', 'Handing character strings in C', false)
  _option('C structures', 'c/ansi-c.gif', 'c/structures.html', 'Composite or user defined variable types in C', false)
  _option('C memory handling', 'c/ansi-c.gif', 'c/memory.html', 'Grabbing, using, and releasing memory', false)
  _option('C linked lists', 'c/ansi-c.gif', 'c/lists.html', 'Handling lists of indefinite length in C', false)
  _option('C operators', 'c/ansi-c.gif', 'c/operators.html', 'C operators and their usage and precedence', false)
  _option('C functions', 'c/ansi-c.gif', 'c/functions.html', 'Writing functions in C', false)
  _option('C function pointers', 'c/ansi-c.gif', 'c/function-pointers.html', 'Accessing functions via their memory addresses', false)
  _option('C if', 'c/ansi-c.gif', 'c/if.html', 'The basic C condition handler', false)
  _option('C switch', 'c/ansi-c.gif', 'c/switch.html', 'A multiple case condition handler', false)
  _option('C loops', 'c/ansi-c.gif', 'c/loops.html', 'Doing things over and over again in C', false)
  _option('Preprocessing', 'c/ansi-c.gif', 'c/preprocessing.html', 'Lexical macros and substitution in C', false)
  _option('Standard C libraries', 'c/ansi-c.gif', 'c/libraries.html', 'Function libraries provided with C', false)
  _option('K&R vs. ANSI C', 'c/ansi-c.gif', 'c/kandr.html', 'The two main versions of C', false)
  _option('C and C++', 'c/cplusplus.gif', 'c/cplusplus.html', 'Introducing C++', true)
  _option('C++ classes', 'c/cplusplus.gif', 'c/classes.html', 'User defined variable types and objects in C++', false)
  _option('C++ member functions', 'c/cplusplus.gif', 'c/member-functions.html', 'Automating objects', false)
  _option('C++ inline and out-of-line member functions', 'c/cplusplus.gif', 'c/inline-outofline.html', 'Different types of C++ member functions', false)
  _option('C++ private and public members', 'c/cplusplus.gif', 'c/private-public.html', 'Member function visibility in C++', false)
  _option('C++ dynamic memory use: new and delete', 'c/cplusplus.gif', 'c/new.html', 'Allocating, using, and releasing memory in C++', false)
  _option('C++ constructors, destructors, and overloading', 'c/cplusplus.gif', 'c/constructors.html', 'Creating and destroying C++ objects', false)
  _option('C++ inheritence', 'c/cplusplus.gif', 'c/inheritence.html', 'Creating a hierarchy of C++ object types', false)
  _option('C++ virtual functions', 'c/cplusplus.gif', 'c/virtual-functions.html', 'Creating a hierarchy of C++ object methods', false)
  _option('Writing good code', 'c/menu.gif', 'c/good-code.html', 'Tips on writing working, maintainable code', true)
  _option('Back to Computers bit', 'computers/menu.gif', 'computers/index.html', 'Return to the computers bit', true)
  _option('Back to Home bit', 'home/menu.jpg', 'home/index.html', 'Return to the home page', true)
  _menu_bottom()
}
