Go to the Next or Previous section, the Detailed Contents, or the Amiga E Encyclopedia.


9.2.3 Indirect types

In the previous example we saw INT and CHAR used as the destination types of pointers, and these are the 16- and 8-bit equivalents (respectively) of the LONG type. However, unlike LONG these types cannot be used directly to declare global or local variables, or procedure parameters. They can only be used in constructing types (for instance with PTR TO). The following declarations are therefore illegal, and it might be nice to try compiling a little program with such a declaration, just to see the error message the E compiler gives.

/* This program fragment contains illegal declarations */
DEF c:CHAR, i:INT

/* This program fragment contains illegal declarations */
PROC fred(a:INT, b:CHAR)
  DEF x:INT
  statements
ENDPROC

This is not much of a limitation because you can store INT or CHAR values in LONG variables if you really need to. However, it does mean there's a nice, simple rule: every direct value in E is a 32-bit quantity, either a LONG or a pointer. In fact, LONG is actually short-hand for PTR TO CHAR, so you can use LONG values like they were actually PTR TO CHAR values.


Go to the Next or Previous section, the Detailed Contents, or the Amiga E Encyclopedia.