Defining Programming Standards   
for Professional Programmers 
  

         

Home

Contents

1: Standards

2: Psychological Factors

3: General Principles

4: Commenting

5: Naming

6: Code Layout

7: File Layout

8: Language Usage

9: Data Usage

10: Programming Usage

11: Implementing Standards

A: Example Standard

B: References

C: Glossary

Syque

About

Share this page:

Google
C Style
syque.com
Web

 

 

Books and
more at:

USA:

In association with amazon.com

UK:

In Association with Amazon.co.uk

Canada:

In Association with amazon.ca

 

 

CHAPTER 8 : Language Usage

PART 4 : USAGE

CHAPTER 8 : Language Usage
8.1 General principles of language usage
8.2 Using expressions
8.3 Using 'if'
8.4 Using 'while'
8.5 Using 'for'
8.6 Using 'do'
8.7 Using 'switch'
8.8 Using 'goto'
8.9 Using 'continue' and 'break'
8.10 Using 'return'
8.11 Using functions
8.12 Using '#define'
8.13 Conditional compilation
8.14 Other preprocessor commands
8.15 Summary

<--Prev page | Next page -->

 

8.13  Conditional compilation

The #if and #ifdef statements allows conditional compilation, which can be used, for example, to embed debug code or to enable different sections of a program which is to be ported to several different environments:

 

#if LANGUAGE == ENGLISH
    printf( "Hello, world\n" );
#elif LANGUAGE == FRENCH
    printf( "Bonjour, monde\n" );
#else
#   error "valid LANGUAGE not defined"
#endif

 

This may make it easy to compile different language versions, but it makes the code difficult to read, as what is effectively one statement has become a more complex block. The complexity in this type of usage can sometimes be moved elsewhere:

 

/* messages.c */
...
#if LANGUAGE == ENGLISH
    char *Messages[] = { "Hello, World", ...
#elif LANGUAGE == FRENCH
    char *Messages[] =

 "Bonjour, Monde", ...
...

/* messages.h */
#define HELLO_WORLD 0
...

/* prhello.c */
#define LANGUAGE ENGLISH
#include "messages.h"
...
printf( "%s\n", Messages[HELLO_WORLD] );

-----------------------------------------------

Note that #elif and #error are ANSI C keywords. A backwards portable approach would be to use a sequence of #ifdef..#endif.

 

#ifdef (or #if defined in ANSI) is typically used in a similar manner to #if, conditionally enabling portions of code.

 

#ifndef is typically used to flag an error or provide default values where a symbol has not been defined:

 

#ifndef BUFFER_SIZE
#define BUFFER_SIZE 256
#endif

 

<--Prev page | Next page -->

 

 

  © Syque 1995-2010

Massive Content -- Maximum Speed