C5_#stdout

#stdout
 Send literal text to the standard output device
------------------------------------------------------------------------------
 Syntax

     #stdout [<messageText>]

 Arguments

     <messageText> is the text of the message to display.  <messageTest>
     is a literal character string.  Do not enclose the message in quotation
     marks unless you want them to appear as part of the display.

 Description

     #stdout causes the compiler to output the literal text to the standard
     output device (stdout) during compilation.  If <messageText> is not
     specified, a carriage return/line feed pair echoes to stdout.

     Warning!  Manifest constants are not translated in #stdout.
     Implementation is identical to #error with the following exceptions:
     output is written to STDOUT and no compiler error is generated.

 Examples

     This example demonstrates use of #stdout:

     #ifdef DEBUG
        #stdout Compiling debugging version...
     #endif

     PROCEDURE Main()

     ? "Hello world"
     RETURN

     #stdout End of "Hello World" program

See Also: #error

C5 Directives

#command        Specify a user-defined command or translation directive
#define         Define a manifest constant or pseudofunction
#error          Generate a compiler error and display a message
#ifdef          Compile a section of code if an identifier is defined
#ifndef         Compile a section of code if an identifier is undefined
#include        Include a file into the current source file
#stdout         Send literal text to the standard output device
#translate      Specify a user-defined command or translation directive
#undef          Remove a #define macro definition 
#xcommand       Specify a user-defined command or translation directive
#xtranslate     Specify a user-defined command or translation directive

C5 Pre-processor Directives

#command | #translate :

Specify a user-defined command or translation directive

#command <matchPattern> => <resultPattern>
#translate <matchPattern> => <resultPattern>

#define :

Define a manifest constant or pseudofunction

#define <idConstant> [<resultText>]
#define <idFunction>([<arg list>]) [<exp>]

#error :

Generate a compiler error and display a message

#error [<messageText>]

#ifdef :

Compile a section of code if an identifier is defined

#ifdef <identifier>
    <statements>...
[#else]
    <statements>...
#endif

#ifndef :

Compile a section of code if an identifier is undefined

#ifndef <identifier>
    <statements>...
[#else]
    <statements>...
#endif

#include :

Include a file into the current source file

#include "<otherSourceFileSpec>"

#stdout :

Send literal text to the standard output device

#stdout [<messageText>]

#undef :

Remove a #define macro definition

#undef <identifier>

#xcommand | #xtranslate :

Specify a user-defined command or translation directive

#xcommand <matchPattern> => <resultPattern>
#xtranslate <matchPattern> => <resultPattern>

#error and #stdout

What are #error and #stdout directives ?

#error : Generate a compiler error and display a message

Syntax :

#error [<messageText>]

Arguments :

<messageText> is the text of the message to be displayed. <messageText> is a literal character string–do not enclose the message in quotations unless you want them to appear as part of the display.

Description :

#error causes the compiler to generate error number C2074. If the <messageText> parameter is specified, an error message is displayed.

Examples :

. This example displays an error message based on whether or not a NETWORK identifier was defined:

 #ifdef NETWORK
 #error Network version not implemented.
 #endif

~~~~~~~~~~~~~~~~~~~~~~~

#stdout : Send literal text to the standard output device

Syntax :

#stdout [<messageText>]

Arguments :

<messageText> is the text of the message to display. <messageTest> is a literal character string. Do not enclose the message in quotation marks unless you want them to appear as part of the display.

Description :

#stdout causes the compiler to output the literal text to the standard output device (stdout) during compilation. If <messageText> is not specified, a carriage return/line feed pair echoes to stdout.

Warning! Manifest constants are not translated in #stdout. Implementation is identical to #error with the following exceptions: output is written to STDOUT and no compiler error is generated.

Examples :

This example demonstrates use of #stdout:

 #ifdef DEBUG
     #stdout Compiling debugging version...
 #endif
PROCEDURE Main()
 ? "Hello world"
RETURN
#stdout End of "Hello World" program

			

Pre-processor

What is Pre-processor and how it works ?

The Pre-processor is a translation program that prepares source code for compilation by  applying pre-defined text replacements. The replacements to be made are specified by  directives in the source file. The preprocessor operates transparently as a part of the  compilation process.

First phase of of compilation process is pre-processing. The portion of compile engine  that perform pre-processing phase is called pre-processor.

Before the later compilation  phases take place, pre-processor scan the source file from top to bottom for certain  directives and translate them into regular source code that can be compiled. The output of  the pre-processor is then used as input to the next step of compilation. The /P compiler  option can be used to write this pre-processor output (.ppo) file to disk so that you can  see the source code that was used as input to the next compilation phase. This option  is especially useful if you have used the #command and #translate directives to build  user-defined commands. You can look at the (.ppo) file to see whether or not commands  translated as you expected.

The following table summarize the pre-processor directives.

Directive              Meaning
--------------------   --------------------------------------------------------------
#define                Define a manifest constant or pseudo-function
#undef                 Remove a #define definition

#include               Include a file into the current source file

#command, #xcommand,   Specify a user defined command or translation 
#translate,            directive (This four directives are same as each
#xtranslate            others with some minor differences) . 

#ifdef                 Compile a section of code if an identifier is defined
#ifndef                Compile a section of code if an identifier is undefined

#error                 Generate a compiler error and display a message
#stdout                Send literal text to the standard output device

Here you can find pre-processor terms.