Fatal Errors

Fatal errors cause immediate termination of the compilation. These errors normally occur as the result of invalid options specified in the project options. Fatal errors are also generated when the compiler cannot access a specified source include file.

Fatal error messages conform to one of the following formats:

C51 FATAL-ERROR -
    ACTION:    <current action>
    LINE:    <line in which the error is detected>
    ERROR:    <corresponding error message>
C51 TERMINATED.

C51 FATAL-ERROR -
    ACTION:    <current action>
    FILE:    <file in which the error is detected>
    ERROR:    <corresponding error message>
C51 TERMINATED.

The following are descriptions of the possible text for the Action  and Error  fields in the above messages.

Actions

PARSING INVOKE-/#PRAGMA-LINE.
An error was detected while evaluating arguments on the command line or while evaluating parameters in a #pragma statement.

OPENING INPUT-FILE
The compiler failed to find or open the selected source or include file.

CREATING LIST-FILE / OBJECT-FILE / WORKFILE
The compiler could not create the list file, object file, or work file. This error may occur if the disk is full or write-protected, or if the file already exists and is read-only.

PARSING SOURCEFILE / ANALYZING DECLARATIONS
The source file contains too many external references. Reduce the number of external variables and functions accessed by the source file.

GENERATING INTERMEDIATE CODE
The source file contains a function that is too large to be translated into pseudo-code by the compiler. Try breaking the function into smaller functions and re-compiling.

WRITING TO FILE
An error was encountered while writing to the list file, object file, or work file.

Errors

FILE DOES NOT EXIST
The filename defined on the FILE  line, cannot be found.

CAN'T CREATE FILE
The filename defined on the FILE  line cannot be created.

SOURCE MUST COME FROM A DISKFILE
The source and include files must exist on either a hard disk or diskette. The console CON:, :CI:, or similar devices are not allowed as input files.

MORE THAN 256 SEGMENTS/EXTERNALS
More than 256 total references were encountered in a source file. A single source file cannot contain more than 256 functions or external references. This is a historical restriction mandated by the Intel Object Module Format (OMF-51). Functions which contain scalar and/or bit declarations will produce two and sometimes three segment definitions in the object file.

FILE WRITEERROR
An error occurred while writing to the list, preprint, work or object file because of insufficient disk space.

NONNULL ARGUMENT EXPECTED
The selected control parameter needs an argument (e.g., a filename or a number) enclosed in parentheses.

UNKNOWN CONTROL
The selected control parameter is unrecognized by the compiler.

'(' AFTER CONTROL EXPECTED
Some control parameters need an argument enclosed in parentheses. This message is displayed when the left parenthesis is missing.

')' AFTER PARAMETER EXPECTED
This message indicates that the right parenthesis of the enclosed argument is missing.

RESPECIFIED OR CONFLICTING CONTROL
A command-line parameter was specified twice or conflicting command-line parameters were specified.

BAD DECIMAL NUMBER
The numerical argument of a control parameter contains invalid characters.  Only decimal digits are acceptable.

OUT OF RANGE DECIMAL NUMBER
The numerical argument of a control parameter is out of range. For instance, the OPTIMIZE control allows only the numbers 0 through 5. A value of 6 would generate this error message.

IDENTIFIER EXPECTED
This message is generated when the DEFINE control has no arguments.  DEFINE requires an identifier as its argument. This is the same convention as in the C language.

PARSE STACK OVERFLOW
The parse stack has overflowed. This can occur if the source program contains extremely complex expressions or if blocks are nested more than 15 levels deep.

MORE THAN 100 ERRORS IN SOURCEFILE
During the compilation more than 100 errors were detected. This causes the termination of the compiler.

PREPROCESSOR: MACROS TOO NESTED
During macro expansion the stack consumption of the preprocessor became too large to continue. This message usually indicates a recursive macro definition, but can also indicate a macro with too many levels of nesting.

PREPROCESSOR: LINE TOO LONG (32K)
An intermediate expansion exceeded 32k characters in length

CAN'T HAVE GENERAL CONTROL IN INVOCATION LINE
General controls (e.g., EJECT) cannot be included on the command line. Place these controls in the source file using the #pragma statement.