File:  [OS/2 SDKs] / os2sdk / os2doc / errmsg.txt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Thu Aug 9 12:25:13 2018 UTC (7 years, 9 months ago) by root
Branches: msft, MAIN
CVS tags: os2sdk-1987, HEAD
Microsoft OS/2 SDK 12-15-1987

		       (C) Copyright Microsoft Corporation, 1987
		   Microsoft(R)	C Optimizing Compiler Version 5.00
				  ERRMSG.DOC

This document describes added and changed error and warning messages for the
Microsoft C Optimizing Compiler, Version 5.0.  The information contained in
this document is more up to date than that in the printed manuals.


			Compiler and Run-Time Errors 

Deleted Messages
----------------
Error message C2049, warning message C4043, and run-time error R6004 are
no longer generated.
 
Changed Messages
----------------
Error message C1013 has	been changed to	read as	follows:

	C1013 cannot open source file 'filename'

Error C2003 has	been changed to	read as	follows:

	C2003 Expected 'defined	id'

Error message C2085 has	been changed to	read as	follows:

	C2085 'identifier' : not in formal parameter list

Error message C2095 has been changed to read as follows:

	C2095 function : actual	has type void :	parameter number 

	An attempt was made to pass a void argument to a function. The
	given number identifies	which argument was in error.
	Formal parameters and arguments	to functions cannot have type void;
	they can, however, have	type "void *" (pointer to void).

Warning	message	C4013 "constant	too big" has been changed to error
message	C2177.

Warning	message	C4016 has been changed to read as follows:

	C4016	'<name>' : no function return type, using 'int'	as
	default

Warning message C4079 has been changed to read as follows:

	C4079	unexpected token <token>

New Messages
------------
In the following messages, the number in parentheses after a warning message
indicates the minimum warning level that must be set for the warning to appear:

C1015	cannot open include file 'filename'

The given include file either did not exist, could not be opened,
or was not found. Make sure your environment settings are valid	and
that you have given the	correct	path name for the file.

C1058: floating point expression too complex - would overflow NDP stack

A floating-point expression was too complex for the compiler to handle,
as in the following example:

	double f(a, b, c, d, e, f, g, h, i, j)
	double a, b, c, d, e, f, g, h, i, j;
	{
		return ( a / ( b / ( c / ( d / ( e / ( f / ( g / ( h /
		( i / j ) ) ) ) ) ) ) ) );
	}

Try breaking up the expression that caused the error and recompiling.

C1062  error writing to preprocessor output file

You compiled with the /P, /E, or /EP option to produce a preprocessor
output file, but not enough room was available to hold the file. 

C2164	'<function>' : intrinsic was not declared

You did not declare the given function before using it in an intrinsic
pragma. This error appears only if you compile with the /Oi option.

C2166	lval specifies 'const' object

An attempt was made to modify an item declared with const type.

C2172	<function> : actual is not a pointer : parameter <number>

An attempt was made to pass a non-pointer argument to a	function
that expected a	pointer. The given number indicates which argument
was in error. 

C2173	<function> : actual is not a pointer : parameter <number> :
	parameter list <number>

An attempt was made to pass a non-pointer argument to a	function that
expected a pointer.  This error	occurs in calls	that return a pointer
to a function.	The first number indicates which argument was in error;
the second number indicates which argument list	contained the invalid
argument. 

C2174	<function> : actual has type void : parameter <number>,
	parameter list <number>

An attempt was made to pass a void argument to a function.
Formal parameters and arguments	to functions cannot have type
void; they can,	however, have type "void *" (pointer to	void).
This error occurs in calls that	return a pointer to
a function.  The first number indicates	which argument was in error;
the second number indicates which argument list	contained the invalid
argument. 

C2178	'<name>' : storage class for same_seg variables	must be	'extern'

The given variable was specified in a same_seg pragma, but it was not
declared with extern storage class.

C2179	'<name>' : was used in same_seg, but storage class is no
	longer 'extern'

The given variable was specified in a same_seg pragma, but it was 
redeclared with	a storage class	other than extern, as in the following
example:
 
	extern	int	i,j;
	#pragma	same_seg(i,j)
	int i;

C2180	controlling expression has type 'void'

The controlling expression in an if, while, for, or do statement
was a function with void return type.

C2182	'<name>' : 'void' on variable

The given variable was declared with the void keyword. The void
keyword can be used only in function declarations. 

C2183	<name> : 'interrupt' function must be 'far'

The given interrupt function was implicitly or explicitly declared to be
near. You must declare the function without the near attribute, and if
you compile the program with the default (small) or compact memory
model, you must explicitly declare the function with the far attribute.

C2184	<name> : 'interrupt' function cannot be 'pascal/fortran'

The given interrupt function was declared with the FORTRAN/Pascal calling
convention, either because the fortran or pascal attribute was used in the
declaration or because the program was compiled with the /Gc option.
Functions declared with the interrupt attribute are required to use the C
calling conventions. Therefore, you must either declare the function without
the  fortran or pascal attribute if you compile the program without the /Gc
option, or declare the function with the cdecl attribute if you compile
the program with the /Gc option. 

C4054 insufficient memory may affect optimization

Not enough memory was available to perform all of the requested
optimizations. This message appears if available memory is
within 64K of the absolute minimum that will accommodate the 
executable file.

C4078	loss of debugging information caused by optimization

Because of the requested optimization, the compiler could not generate
debugging information.

C4088	'<function>' : pointer mismatch : parameter <number>
	parameter list <number>

The pointer argument in the given function call did not have the same type as
the pointer argument in the function prototype, as in the following example:

	int (*foo(int,int))(char *);
	.
	.
	.
	main()
	{
		int i;

		(*foo(10,20))(i);/* pointer mismatch : parameter 1,
				  parameter list 2. */
	}

C4089 'function' : different types : parameter int parameter list int

The argument in the given function call did not have the same type as
the argument in the function prototype.

C4098	void function returning a value

A function declared with void return type also returned a value, as
in the following example:

	void func()
	{
		.
		.
		.
		return(10);
	}

C4100	'<name>' : unreferenced	formal parameter

The given formal parameter was never referenced	in the body of the
function for which it was declared. (3)

C4101	'<name>' : unreferenced	local variable

The given local	variable was never used. (3)

C4102	'<name>' : unreferenced	label

The given label	was defined but	never referenced. (3)

C4103	'<name>' : function definition used as prototype

A function definition appeared before its prototype in the program. (3)

C4104 : '<identifier>' : near data in same_seg pragma, ignored

The given near variable was specified in a same_seg pragma, as in
the following example:

	extern int near near_var;
	extern int far far_var;
	#pragma same_seg(near_var, far_var);

In this example, the compiler ignores the specification of near_var;
consequently, it does not assume that near_var and far_var reside
in the same data segment.

C4105	<name> : 'interrupt' must be function/pointer to function

The interrupt attribute was used to declare something other than a function
or function pointer.

C4185	near call to <function> in different segment

You specified the given function in an alloc_text pragma without declaring it
to be far, then called this function from another text segment, as in the
following example:

	int f();
	#pragma alloc_text(NEW, f)
	main()
	{
		f();
	}

	f()
	{
	}

In this example, the main function (in default text segment) makes a near call
to the f function (in the text segment NEW). The error generated is
	
	C4185: near call to _f in different segment

Although this is a warning message rather than an error message, THE RESULTING
CODE WILL NOT WORK CORRECTLY.

Note that if you compile with stack checking enabled (the default), you would 
also get the following error message for the f function:
	
	C4185: near call to __chkstk in different segment


			LINK Linker 

Changed Messages
----------------
The explanation for fatal-error message L1008 is changed as follows: 

	The /SEGMENTS option specified a limit greater than 3072 on the
	number of segments allowed.

Error message L1009 has been changed to read as follows:

	L1009	<number> : CPARMAXALLOC : illegal value

Error message L1053 has been changed to read as follows:

	L1053   out of memory for symbol table

	The program had more symbolic information (such as public, external,
	segment, group, class, and file names) than the amount that could fit
	in  available real memory.

	Try freeing memory by linking from the DOS command level instead of
	from a MAKE file or from an editor. Otherwise, combine modules or
	segments and try to eliminate as many public symbols as possible.

Fatal error L1123 has been removed. 

Warning message L4050 has been changed as follows:

	L4050	too many public symbols for sorting

	The linker uses the stack and all available memory in the
	near heap to sort public symbols for the /MAP option.  If
	the number of public symbols exceeds the space available
	for them, this warning is issued and the symbols are not
	sorted in the map file but listed in arbitrary order.

New Messages
------------
L1003	/QUICKLIB, /EXEPACK incompatible

You cannot link with both the /QU option and the /E option.

L1115   /QUICKLIB, overlays incompatible

You specified overlays and used the /QUICKLIB option.
These cannot be used together.

L2013	LIDATA record too large

An LIDATA record contained more than 512 bytes.  This is
probably a compiler error.

L2041	stack plus data exceed 64K

The total of near data and requested stack size exceeds 64K, 
and the program will not run correctly.  Reduce the stack size.
The linker only checks for this condition if /DOSSEG
is enabled, which is done automatically in the library
startup module.

L2043	Quick Library support module missing

When creating a Quick library, you did not link with the required
QUICKLIB.OBJ module.

L2044	<name> : symbol	multiply defined, use /NOE

The linker found what it interprets as a public-symbol
redefinition, probably because you have redefined a symbol that
is defined in a library.  Relink with the /NOEXTDICTIONARY
(/NOE) option. If error L2025 results for the same symbol, then you
have a genuine	symbol-redefinition error.

L4003	intersegment self-relative fixup at <offset> in segment <name>
	pos: <offset> Record type: 9C target external '<name>'

The linker found an intersegment self-relative fixup. This error
may be caused by compiling a small-model program with the /NT
option. 

L4034	more than 239 overlay segments; extra put in root

Your program designated more than the limit of 239 segments to 
go in overlays.  Starting with the 234th segment, they are assigned to 
the root (that is, the permanently resident portion of the program).

Dynamic-Link-Specific Messages
------------------------------

These messages are specific to linking OS/2 or Windows
applications and dynlink libraries.

L1005	<option> : packing limit exceeds 65536 bytes

	The value specified following the /PACKCODE option
	exceeds 65536, which is the limit.

L1030	missing internal name

	You specified an IMPORT by ordinal in the definitions
	file without including the internal name of the routine.
	The name must be given if the import is by ordinal.

L1031	module description redefined

	You specified a DESCRIPTION in the definitions file more
	than once.  Only one is allowed.

L1032	module name redefined

	You specified the module name via a NAME or LIBRARY
	statement more than once.  Once is the limit.

L1040	too many exported entries

	Your definitions file included more than 3072 exported
	names.  3072 is the limit.

L1041	resident-name table overflow

	The size of the resident name table exceeds 65,534 bytes.
	An entry in the resident names table is made for each
	EXPORT'ed routine designated RESIDENTNAME, and consists
	of the name plus three bytes of information.  The first
	entry is the module name.  Reduce the number of exported
	routines or change some to nonresident.

L1042	nonresident-name table overflow

	The size of the nonresident name table exceeds 65,534
	bytes.  An entry in the nonresident names table is made
	for each EXPORT'ed routine not designated RESIDENTNAME,
	and consists of the name plus three bytes of information.
	The first entry is the DESCRIPTION.  Reduce the number of
	exported routines or change some to resident.

L1044	imported-name table overflow

	The size of the imported names table exceeds 65,534
	bytes.  An entry in the imported names table is made for
	each new name given in the IMPORTS section, including the
	module names, and consists of the name plus one byte.
	Reduce the number of imports.

L1073	file-segment limit exceeded

	The number of physical or file segments exceeds 254
	which is the limit imposed by OS/2 protected mode and Windows
	for each application or dynamic link library.  A file segment
	is created for each group definition, or for each logical
	segment which is not packed, or each set of packed segments.
	Reduce the number of segments, group more of them and
	make sure /PACKCODE is enabled.

L1074	<name> : group larger than 64K bytes

	The given group exceeds 65,536 bytes, which is the limit
	because each group is assigned to a single physical segment.
	Reduce the size of the group, or make sure no unwanted segments
	are in the group (look at the map file).

L1075	entry table larger than 65535 bytes

	The entry table exceeds the limit.  An entry in this table
	is created for each exported routine, and also for each 
	address which is the target of a far relocation and for which
	one of the following conditions is true:
	    - the target segment is designated IOPL
	    - PROTMODE is not enabled and the target segment is
	    designated MOVABLE
	Declare PROTMODE if applicable, or reduce the number of
	exported routines, or make some segments FIXED or NOIOPL
	if possible.

L1082	stub .EXE file not found

	The linker could not open the file given in the STUB
	statement in the definitions file.

L1092	cannot open module definitions file

	The linker could not open the definitions file specified
	on the command line or response file.

L1100	stub .EXE file invalid

	The file specified in the STUB statement is not a valid
	DOS3 (OS/2 realmode) executable file.

L2000	imported starting address

	The program starting address as specified in the END
	statement in a MASM file is an imported routine.  This
	is not supported in OS/2 or Windows.

L2010	too many fixups in LIDATA record

	The number of far relocations (pointer- or base-type) in an
	LIDATA record, which is typically produced by the DUP statement
	in a .ASM file, exceeds the limit imposed by the linker.
	The limit is dynamic:  a 1024-byte buffer is shared by
	relocations and the contents of the LIDATA record, and there
	are eight bytes per relocation.  Reduce the number of far
	relocations in the DUP statement.
	
L2022	<name1> (alias <internalname>) : export undefined

	The internal name of the given exported routine is undefined.
	
L2023	<name1> (alias <internalname>) : export imported

	The internal name name of the given exported routine
	conflicts with the internal name of a previously exported
	routine.  The set of imported and exported names must not
	overlap.

L2026	entry ordinal <number>, name <name> : multiple definitions for
        same ordinal

	The given exported name with the given ordinal number
	conflicted with a different exported name previously
	assigned to the same ordinal.  At most one name can be
	associated with a particular ordinal.

L2027	<name> : ordinal too large for export

	The given exported name was assigned an ordinal which
	exceeded 3072, which is the limit.

L2028	automatic data segment plus heap exceed 64K

	The total size of data declared in DGROUP plus the value
	given in HEAPSIZE in the definitions file, plus the stack
	size given by the /STACKSIZE option or or STACKSIZE definitions
	file statement, exceeds 64K.  Reduce near data allocation,
	stack, or HEAPSIZE.

L2030	starting address not code (use class 'CODE')

	The program starting address, as specified in the END
	statement of a .ASM file, is not in a code segment (code
	segments are recognized if their class name ends in 'CODE').
	This is an error in OS/2 protected mode; the error message may
	be disabled by including the statement REALMODE in the definitions
	file.

L4000	seg disp. included near <offset> in segment <name>

	This is the warning generated by the /WARNFIXUP option.
	Refer to documentation on that option.

L4001	frame-relative fixup, frame ignored near <offset> in segment <name>

	A reference is made relative to a segment which is different
	from the target segment of the reference.  This does not make
	sense in OS/2 protected mode or Windows.  For example, if _foo
	is defined in segment _TEXT, the instruction "call DGROUP:_foo"
	will result in this warning.  The frame DGROUP is ignored, so
	the linker will treat the call as if it were "call _TEXT:_foo".

L4002	frame-relative absolute fixup near %04x in segment %s

	A reference is made similar to the type described in
	L4001, but both segments are absolute (defined with AT).
	It is unclear what this means in OS/2 protected mode or
	Windows; the linker treats it as if it were real mode.

L4010	invalid alignment specification

	The number specified in the /ALIGNMENT option must be
	a power of 2 in the range 2 to 32768, inclusive.

L4011	PACKCODE value exceeding 65500 unreliable

	The packing limit specified with the /PACKCODE option
	was between 65500 and 65536.  Code segments with a size
	in this range are unreliable on some steppings of the
	80286 processor.

L4013	invalid option for new-format executable file ignored

	The options /CPARMAXALLOC, /DSALLOCATION, /NOGROUPASSOCIATION,
	and currently /EXEPACK, as well as overlays, are disallowed for
	OS/2 protected mode and Windows executables.

L4014	invalid option for old-format executable file ignored

	The /ALIGNMENT option is invalid for DOS3 (OS/2 realmode)
	executables.
	
L4022	<group1>, <group2> : groups overlap

	The named groups overlap; since a group is assigned to
	a physical segment, this is invalid for OS/2 protect mode
	and Windows executables.  Reorganize segments and group
	definitions so the groups do not overlay; look at the map file.

L4023	<name>(<internal name>) : export internal name conflict

	The internal name of the given exported routine conflicted
	with internal name of a previous import or export definition.
	
L4024	<name> : multiple definitions for export name

	The given name was exported more than once.

L4025	<dynlib>.<import>(<name>) : import internal name conflict

	The internal name of the given imported routine (<import> is
	either a name or a number) conflicted with the internal name
	of a previous export or import.

L4026	<dynlib>.<import>(<name>) : self-imported

	The given imported routine was imported from the module
	being linked.  This is not supported on some systems.
	
L4027	<name> : multiple definitions for import internal-name

	The given internal name was imported more than once.
	Previous import definitions are ignored.

L4028	<name> : segment already defined

	The given segment was defined more than once in the
	SEGMENTS statement of the definitions file.

L4029	<name> : DGROUP segment converted to type data

	The given logical segment in the group DGROUP was defined
	as a code segment.  DGROUP has special meaning to the linker
	as the automatic or default data segment and must be of type
	data, so the linker converts the type of the named segment
	to data.

L4030	<name> : segment attributes changed to conform with
         automatic data segment

	The given logical segment in the group DGROUP was given
	sharing attributes (SHARED/NONSHARED) which differed from
	the automatic data attributes as declared by
	DATA INSTANCE/MULTIPLE.  The attributes are converted to
	conform to those of DGROUP.  See note in L4029 about DGROUP.

L4032	<name> : code-group size exceeds 65500 bytes

	The given code group has a size between 65500 and 65536,
	which is unreliable on some steppings of the 80286
	processor.

L4036	no automatic data segment

	The application did not define a group named "DGROUP".
	DGROUP has special meaning to the linker which uses it to
	identify the automatic or default data segment used by the
	operating system.  Most OS/2 protected mode and Windows
	applications require DGROUP.  This warning will not be issued
	if "DATA NONE" is declared or if the executable is a
	dynlink library.

L4042	cannot open old version

	The file specified in the OLD statement in the definitions
	file could not be opened.
	
L4043	old version not segmented-executable format

	The file specified in the OLD statement in the definitions
	file was not a valid OS/2 protected mode or Windows executable.

L4046	module name different from output file name

	The name of the executable as specified in the NAME or
	LIBRARY statement is different from the output file name.
	This may cause problems; consult documentation for your
	operating system.



		LIB Library-Maintenance Utility

Changed Messages
----------------
Warning	messages U4152,	U4155, and U4157-U4159 for the Microsoft LIB Library
Manager	are now	nonfatal error messages	U2152, U2155, and U2157-U2159,
respectively.

Warning message U4151 has been changed to read as follows:

	U4151	'<name>' : symbol defined in module <name>, redefinition ignored

New Messages
------------
The following new warning messages have	been added for LIB:

U4155	<modulename> : module not in library

A module specified to be replaced does not already exist in the 
library.  LIB adds the module anyway.

U4157	insufficient memory, extended dictionary not created
U4158	internal error,	extended dictionary not	created

For the	reason indicated, LIB could not	create an extended
dictionary. The	library	is still valid,	but the	linker
will not be able to take advantage of of the extended dictionary
to speed linking. 


		MAKE Program-Maintenance Utility

New Message
-----------
U1015: <file> : error redirection failed

This error occurs if the /X option is given and error output cannot
be redirected to the given file (for example, because the file
is read-only).

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.