C

Preprocessor – the #ifdef Directive

Behaviour of the #ifdef directive is the same in both C and C++. Purpose The #ifdef directive is one of five preprocessor selection statements allowing selection of alternative sections of code for compilation. The other four selection statements are: #ifndef, #if, #elif, and #else. Format #ifdef macro name valid preprocessor or code statements #endif or […]

C

Preprocessor – Understanding the defined Operator

This is the least known of the preprocessor operators. The other two operators are the token pasting operator (##) and the stringizing operator (#). The behaviour is the same for both C and C++ compilers. Format defined macro_name or defined ( macro_name ) Use The defined operator is used to check if a macro_name has […]

C

Preprocessor – the #include Directive

Behaviour of the #include directive is the same in both C and C++. Purpose It is used to include / insert / copy paste the contents of the specified file into the current file. Format #include <file name> or #include "file name" or #include preprocessor tokens All preprocessor directives begin with the # symbol. It […]

C

Preprocessor – the #undef Directive

Behaviour of the #undef directive is the same in both C and C++. Purpose It is used to undefine a macro. A macro is an identifier (or label) followed by replacement text. There is only a single namespace for macros. A program which redefines an existing macro is considered to be malformed – even though […]

C

Preprocessor – The #define Directive

This is the most complicated of the preprocessor directives (a little over 7 pages is devoted to it in the C99 spec and the C++98 spec devotes about 4 pages to it). Behaviour of the #define directive is the same in both C and C++. C99 added variable argument macros; the upcoming C++0x standard adds […]

C

C as a Strongly Typed Language

Contrary to popular belief, C is a strongly typed language; the problem is that C programming practice favours using weak typing. What is a Type? A type is something that has a set of values associated with it, a set of operations that can be performed on it, and a representation (how it looks at […]

C

Compilation Error – Improperly Defined Macro

Macros are tricky things to use in C/C++ programming. When they work, they work great. When they have bugs, they are a pain to troubleshoot. Macros are a simple text substitution done by the preprocessor. Whenever the macro name is encountered in your code, the preprocessor replaces it with the text to the right of […]

C

Preprocessor – The Token Pasting (##) Operator

This is probably the least understood and most poorly documented preprocessor operator. The token pasting (##) operator simply eliminates any white space around it and concatenates (joins together) the non-whitespace characters together. It can only be used in a macro definition. It is used to create new tokens. It may not be the first or […]