Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
C and C++ - preprocess, compile, load, run - what each step is for

C and C++ original source code goes through a number of steps on its way to becoming a runnable program.

1. The C Preprocessor is run on the original source. This takes the source lines that start with a # character and acts on them as directed. (It does a bit more too - more about that anon!)

2. The C / C++ compiler takes the source code as modified by the preprocessor and converts it into a section of object code. That's the instructions for actually running on the target computer's processor, although not actually in a runnable form yet.

3. The Link loader / Task Builder then takes a whole set of object code files - both te ones written by you (the programmer) and others from standard libraries, and couples them up into a single executable file. Some of the standard stuff may not actually be copied into the executable; that executable may just include a note of where it may be found at run time.

4. At run time, the executable file is loaded into memory and run; part of that loading may be changing the memory addresses that the program runs at (on a multiprocess computer, there's no way at build time of knowing what else will be running at the same time), and pulling in code from the libraries which may have just been 'earmarked' at stage 3.

The directives at stage 1 may include:

#include - to bring in another text file at this point

#define - to define a flag or string for replacement in this phase

#ifdef - to mark the following code to be included in the output source ONLY if a specific flag variable / string has been defined

#ifndef - to mark the following code to be included in the output source ONLY if a specific flag variable / string has NOT been defined

#endif - to mark the end of a conditional inclusion block started by #ifdef or #ifndef

There's an example showing the uses of these [here] in a short C program from last week's C Course, and you'll also find them extensively used in C++ to bring in header files into main application programs (see [example]) ... and then within the header files of the classes to bring in the header files of the classes on which they are based (See [example]). You'll notice the use of defined preprocessor constants in this example to ensure that headers aren't double defined ... in the pet.h header file you'll find you have:

  #ifndef PET
  #define PET 1
  definition lines
  #endif

(written 2011-04-12)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
C233 - C and C based languages - OO in C++ - beyond the basics
  [798] References and Pointers in C++ - (2006-07-10)
  [801] Simple polymorphism example - C++ - (2006-07-14)
  [831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
  [925] C++ - just beyond the basics. More you can do - (2006-11-14)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [1572] C - structs and unions, C++ classes and polymorphism - (2008-03-13)
  [1674] What a lot of files! (C++ / Polymorphism demo) - (2008-06-12)
  [1819] Calling base class constructors - (2008-10-03)
  [2577] Complete teaching example - C++, inheritance, polymorphism - (2010-01-15)
  [2845] Objects and Inheritance in C++ - an easy start - (2010-07-01)
  [3056] C++ - a complete example with polymorphism, and how to split it into project files - (2010-11-16)
  [3123] C++ objects - some short, single file demonstrations - (2011-01-07)
  [3124] C++ - putting the language elements together into a program - (2011-01-08)
  [3142] Private and Public - and things between - (2011-01-22)
  [3251] C++ - objects that are based on other objects, saving coding and adding robustness - (2011-04-17)
  [3508] Destructor methods in C++ - a primer - (2011-11-05)
  [3811] Associated Classes - using objects of one class within another - (2012-07-21)
  [3979] Extended and Associated objects - what is the difference - C++ example - (2013-01-18)
  [4356] Object factories in C++, Python, PHP and Perl - (2014-12-19)
  [4375] Final examples for 2014 - and a look at our 2015 training course options - (2014-12-31)
  [4377] Designing a base class and subclasses, and their extension, in C++ - (2015-01-01)
  [4559] When do I use the this keyword in C++? - (2015-10-29)
  [4560] Variables, Pointers and References - C and C++ - (2015-10-29)

C211 - C and C based languages - Standard Libraries and other headers
  [2575] Sharing variables between files of code in C - extern - (2010-01-14)
  [3148] OpenGL / C / C++ - an example to get you started - (2011-01-26)
  [3234] Your program - you just provide the filling in the sandwich - (2011-04-08)
  [4465] Sockets, time handling and keyboard interrupt handling in C - (2015-03-27)


Back to
Breaking the running sequence - an introduction to conditional statements and loops
Previous and next
or
Horse's mouth home
Forward to
Collections in C and C++ - arrays, vectors and heap memory blocks
Some other Articles
What have these pictures in common?
Light and dark at Green Park
Melksham - the way forward. 26th April, Well House Manor
Collections in C and C++ - arrays, vectors and heap memory blocks
C and C++ - preprocess, compile, load, run - what each step is for
Breaking the running sequence - an introduction to conditional statements and loops
How to return 2 values from a function (C++ and C) - more uses of pointers
Spring in the countryside near Melksham
Melksham Town Council - vacancy in the Spa Ward
TrainWest, 2011 in pictures - Christie Miller, Bowerhill, Melksham
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2024: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.info/mouth/3244_C-a ... s-for.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb