[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
You can use units in the same way as in Borland Pascal. However, there are some additional features.
Concerning the syntax of a unit, you can, if you want, use Extended Pascal syntax to specify a unit initializer, i.e., instead of writing
begin ... end. |
at the end of the unit, you can get the same result with
to begin do begin ... end; |
and there also exists
to end do begin ... end; |
which specifies a finalization routine. You can use this instead of Borland Pascal's exit procedures, but for compatibility, the included `System' unit also provides the `ExitProc' variable. The `to begin do' and/or `to end do' parts must be followed by the final `end.'. See section 8.1.8.1 The Source Structure of ISO-10206 Extended Pascal Modules, for information about Extended Pascal modules, an alternative to units.
When GPC compiles a unit, it produces two files: an .o
object
file (compatible with other GNU compilers such as GNU C) plus a
.gpi
file which describes the interface.
If you are interested in the internal format of GPI file, see section 13.7 GPI files -- GNU Pascal Interfaces.
If you want to compile a program that uses units, you must "make" the project. (This is the command-line switch `-M' or the IDE keystroke `F9' in BP.) For this purpose, GPC provides the command-line switch `--automake':
gpc --automake hello.pas |
If you want to force everything to be rebuilt rather than only recompile changed files (`-B' or "build" in BP), use `--autobuild' instead of `--automake':
gpc --autobuild hello.pas |
For more information about the AutoMake mechanism, see section 13.8 GPC's AutoMake Mechanism -- How it Works.
If you do not want to use the AutoMake mechanism for whatever reason, you can also compile every unit manually and then link everything together.
GPC does not automatically recognize that something is a unit and cannot be linked; you have to tell this by a command line switch:
-c only compile, don't link. |
(If you omit this switch when compiling a unit, you only get a linker error message `undefined reference to `main''. Nothing serious.)
For example, to compile two units, use:
gpc -c myunit1.pas myunit2.pas |
When you have compiled all units, you can compile a program that uses them without using `--automake':
gpc hello.pas |
However, using `--automake' is recommended, since it will recompile units that were modified.
You could also specify the program and the units in one command line:
gpc hello.pas myunit1.pas myunit2.pas |
One of the purposes of writing units is to compile them separately.
However, GNU Pascal allows you to have one or more units in the same
source file (producing only one .o
file but separate
.gpi
files). You even can have a program and one or more
units in one source file; in this case, no .o
file is
produced at all.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |