4

By default, both definitions of variable x are public. Thus, when you compile and link the program and module units, references to x refer to the same variable, as follows:

hostname% pc program_unit3.p module_unit3.p program_unit.p:

module_unit.p: Linking: hostname% a.out

Hello, world for the 1 time. Hello, world for the 2 time. Hello, world for the 3 time. Hello, world for the 4 time. Hello, world for the 5 time.

If you compile the program giving the -xloption, the variables are private by default, as follows:

hostname% pc -xl program_unit.p module_unit.p program_unit.p:

module_unit.p: Linking: hostname% a.out

Hello, world for the 0 time. Hello, world for the 0 time. Hello, world for the 0 time. Hello, world for the 0 time. Hello, world for the 0 time.

You can get the same effect by explicitly declaring the variable in a private var section. Similarly, when you use -xl, you can create public variables by declaring them in a public var section.

As with routine declarations, it is often a good idea to declare public variables in an include file. Doing so makes it easier to keep your declarations consistent.

There are other methods for making variables visible to different units. See Chapter 5, “Separate Compilation,” for more information.

Program Construction and Management

73