9.20 Keyword 'static' and operator '::'

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

 

      Use of the word 'static' when declaring a global variable, structure or

  function means that these will be accessible only in the file in which they

  were declared, i. e., if this file is included in another 'include'

  directive, the variables declared in the included file and preceded by

  'static' will not be available in the basic file, and other variables with

  the same names can be declared in the basic file.

 

      Use of 'static' when declaring a local variable in a function means

  that memory for this variable will be allocated not in the stack but in the

  function data area. But this variable will be accessible only within the

  function where it was declared. Using 'static' with a local variable lets

  us save the value of the variable for subsequent entry into a function.

 

      You can use 'static' for any global object (variable, structure or

  function) but it is restricted in local use to variables only.

 

      If a program contains global and local variables of the same name, then

  a function in which the local variable is declared cannot access the global

  variable of the same name. Placing a '::' before the name of the variable

  allows access to the global variable. For example:

 

  int var;  //declare global variable

 

  void proc()

  int var;  // declare local variable with a name already in

          // use by a global variable

  {

    (E)AX=var;    //access only local variable

    (E)AX=::var;  // access global variable as well as local variable

  }