|
|
1.1 root 1: (C) Copyright Microsoft Corporation, 1987
2: Microsoft(R) C Optimizing Compiler Version 5.00
3: ERRMSG.DOC
4:
5: This document describes added and changed error and warning messages for the
6: Microsoft C Optimizing Compiler, Version 5.0. The information contained in
7: this document is more up to date than that in the printed manuals.
8:
9:
10: Compiler and Run-Time Errors
11:
12: Deleted Messages
13: ----------------
14: Error message C2049, warning message C4043, and run-time error R6004 are
15: no longer generated.
16:
17: Changed Messages
18: ----------------
19: Error message C1013 has been changed to read as follows:
20:
21: C1013 cannot open source file 'filename'
22:
23: Error C2003 has been changed to read as follows:
24:
25: C2003 Expected 'defined id'
26:
27: Error message C2085 has been changed to read as follows:
28:
29: C2085 'identifier' : not in formal parameter list
30:
31: Error message C2095 has been changed to read as follows:
32:
33: C2095 function : actual has type void : parameter number
34:
35: An attempt was made to pass a void argument to a function. The
36: given number identifies which argument was in error.
37: Formal parameters and arguments to functions cannot have type void;
38: they can, however, have type "void *" (pointer to void).
39:
40: Warning message C4013 "constant too big" has been changed to error
41: message C2177.
42:
43: Warning message C4016 has been changed to read as follows:
44:
45: C4016 '<name>' : no function return type, using 'int' as
46: default
47:
48: Warning message C4079 has been changed to read as follows:
49:
50: C4079 unexpected token <token>
51:
52: New Messages
53: ------------
54: In the following messages, the number in parentheses after a warning message
55: indicates the minimum warning level that must be set for the warning to appear:
56:
57: C1015 cannot open include file 'filename'
58:
59: The given include file either did not exist, could not be opened,
60: or was not found. Make sure your environment settings are valid and
61: that you have given the correct path name for the file.
62:
63: C1058: floating point expression too complex - would overflow NDP stack
64:
65: A floating-point expression was too complex for the compiler to handle,
66: as in the following example:
67:
68: double f(a, b, c, d, e, f, g, h, i, j)
69: double a, b, c, d, e, f, g, h, i, j;
70: {
71: return ( a / ( b / ( c / ( d / ( e / ( f / ( g / ( h /
72: ( i / j ) ) ) ) ) ) ) ) );
73: }
74:
75: Try breaking up the expression that caused the error and recompiling.
76:
77: C1062 error writing to preprocessor output file
78:
79: You compiled with the /P, /E, or /EP option to produce a preprocessor
80: output file, but not enough room was available to hold the file.
81:
82: C2164 '<function>' : intrinsic was not declared
83:
84: You did not declare the given function before using it in an intrinsic
85: pragma. This error appears only if you compile with the /Oi option.
86:
87: C2166 lval specifies 'const' object
88:
89: An attempt was made to modify an item declared with const type.
90:
91: C2172 <function> : actual is not a pointer : parameter <number>
92:
93: An attempt was made to pass a non-pointer argument to a function
94: that expected a pointer. The given number indicates which argument
95: was in error.
96:
97: C2173 <function> : actual is not a pointer : parameter <number> :
98: parameter list <number>
99:
100: An attempt was made to pass a non-pointer argument to a function that
101: expected a pointer. This error occurs in calls that return a pointer
102: to a function. The first number indicates which argument was in error;
103: the second number indicates which argument list contained the invalid
104: argument.
105:
106: C2174 <function> : actual has type void : parameter <number>,
107: parameter list <number>
108:
109: An attempt was made to pass a void argument to a function.
110: Formal parameters and arguments to functions cannot have type
111: void; they can, however, have type "void *" (pointer to void).
112: This error occurs in calls that return a pointer to
113: a function. The first number indicates which argument was in error;
114: the second number indicates which argument list contained the invalid
115: argument.
116:
117: C2178 '<name>' : storage class for same_seg variables must be 'extern'
118:
119: The given variable was specified in a same_seg pragma, but it was not
120: declared with extern storage class.
121:
122: C2179 '<name>' : was used in same_seg, but storage class is no
123: longer 'extern'
124:
125: The given variable was specified in a same_seg pragma, but it was
126: redeclared with a storage class other than extern, as in the following
127: example:
128:
129: extern int i,j;
130: #pragma same_seg(i,j)
131: int i;
132:
133: C2180 controlling expression has type 'void'
134:
135: The controlling expression in an if, while, for, or do statement
136: was a function with void return type.
137:
138: C2182 '<name>' : 'void' on variable
139:
140: The given variable was declared with the void keyword. The void
141: keyword can be used only in function declarations.
142:
143: C2183 <name> : 'interrupt' function must be 'far'
144:
145: The given interrupt function was implicitly or explicitly declared to be
146: near. You must declare the function without the near attribute, and if
147: you compile the program with the default (small) or compact memory
148: model, you must explicitly declare the function with the far attribute.
149:
150: C2184 <name> : 'interrupt' function cannot be 'pascal/fortran'
151:
152: The given interrupt function was declared with the FORTRAN/Pascal calling
153: convention, either because the fortran or pascal attribute was used in the
154: declaration or because the program was compiled with the /Gc option.
155: Functions declared with the interrupt attribute are required to use the C
156: calling conventions. Therefore, you must either declare the function without
157: the fortran or pascal attribute if you compile the program without the /Gc
158: option, or declare the function with the cdecl attribute if you compile
159: the program with the /Gc option.
160:
161: C4054 insufficient memory may affect optimization
162:
163: Not enough memory was available to perform all of the requested
164: optimizations. This message appears if available memory is
165: within 64K of the absolute minimum that will accommodate the
166: executable file.
167:
168: C4078 loss of debugging information caused by optimization
169:
170: Because of the requested optimization, the compiler could not generate
171: debugging information.
172:
173: C4088 '<function>' : pointer mismatch : parameter <number>
174: parameter list <number>
175:
176: The pointer argument in the given function call did not have the same type as
177: the pointer argument in the function prototype, as in the following example:
178:
179: int (*foo(int,int))(char *);
180: .
181: .
182: .
183: main()
184: {
185: int i;
186:
187: (*foo(10,20))(i);/* pointer mismatch : parameter 1,
188: parameter list 2. */
189: }
190:
191: C4089 'function' : different types : parameter int parameter list int
192:
193: The argument in the given function call did not have the same type as
194: the argument in the function prototype.
195:
196: C4098 void function returning a value
197:
198: A function declared with void return type also returned a value, as
199: in the following example:
200:
201: void func()
202: {
203: .
204: .
205: .
206: return(10);
207: }
208:
209: C4100 '<name>' : unreferenced formal parameter
210:
211: The given formal parameter was never referenced in the body of the
212: function for which it was declared. (3)
213:
214: C4101 '<name>' : unreferenced local variable
215:
216: The given local variable was never used. (3)
217:
218: C4102 '<name>' : unreferenced label
219:
220: The given label was defined but never referenced. (3)
221:
222: C4103 '<name>' : function definition used as prototype
223:
224: A function definition appeared before its prototype in the program. (3)
225:
226: C4104 : '<identifier>' : near data in same_seg pragma, ignored
227:
228: The given near variable was specified in a same_seg pragma, as in
229: the following example:
230:
231: extern int near near_var;
232: extern int far far_var;
233: #pragma same_seg(near_var, far_var);
234:
235: In this example, the compiler ignores the specification of near_var;
236: consequently, it does not assume that near_var and far_var reside
237: in the same data segment.
238:
239: C4105 <name> : 'interrupt' must be function/pointer to function
240:
241: The interrupt attribute was used to declare something other than a function
242: or function pointer.
243:
244: C4185 near call to <function> in different segment
245:
246: You specified the given function in an alloc_text pragma without declaring it
247: to be far, then called this function from another text segment, as in the
248: following example:
249:
250: int f();
251: #pragma alloc_text(NEW, f)
252: main()
253: {
254: f();
255: }
256:
257: f()
258: {
259: }
260:
261: In this example, the main function (in default text segment) makes a near call
262: to the f function (in the text segment NEW). The error generated is
263:
264: C4185: near call to _f in different segment
265:
266: Although this is a warning message rather than an error message, THE RESULTING
267: CODE WILL NOT WORK CORRECTLY.
268:
269: Note that if you compile with stack checking enabled (the default), you would
270: also get the following error message for the f function:
271:
272: C4185: near call to __chkstk in different segment
273:
274:
275: LINK Linker
276:
277: Changed Messages
278: ----------------
279: The explanation for fatal-error message L1008 is changed as follows:
280:
281: The /SEGMENTS option specified a limit greater than 3072 on the
282: number of segments allowed.
283:
284: Error message L1009 has been changed to read as follows:
285:
286: L1009 <number> : CPARMAXALLOC : illegal value
287:
288: Error message L1053 has been changed to read as follows:
289:
290: L1053 out of memory for symbol table
291:
292: The program had more symbolic information (such as public, external,
293: segment, group, class, and file names) than the amount that could fit
294: in available real memory.
295:
296: Try freeing memory by linking from the DOS command level instead of
297: from a MAKE file or from an editor. Otherwise, combine modules or
298: segments and try to eliminate as many public symbols as possible.
299:
300: Fatal error L1123 has been removed.
301:
302: Warning message L4050 has been changed as follows:
303:
304: L4050 too many public symbols for sorting
305:
306: The linker uses the stack and all available memory in the
307: near heap to sort public symbols for the /MAP option. If
308: the number of public symbols exceeds the space available
309: for them, this warning is issued and the symbols are not
310: sorted in the map file but listed in arbitrary order.
311:
312: New Messages
313: ------------
314: L1003 /QUICKLIB, /EXEPACK incompatible
315:
316: You cannot link with both the /QU option and the /E option.
317:
318: L1115 /QUICKLIB, overlays incompatible
319:
320: You specified overlays and used the /QUICKLIB option.
321: These cannot be used together.
322:
323: L2013 LIDATA record too large
324:
325: An LIDATA record contained more than 512 bytes. This is
326: probably a compiler error.
327:
328: L2041 stack plus data exceed 64K
329:
330: The total of near data and requested stack size exceeds 64K,
331: and the program will not run correctly. Reduce the stack size.
332: The linker only checks for this condition if /DOSSEG
333: is enabled, which is done automatically in the library
334: startup module.
335:
336: L2043 Quick Library support module missing
337:
338: When creating a Quick library, you did not link with the required
339: QUICKLIB.OBJ module.
340:
341: L2044 <name> : symbol multiply defined, use /NOE
342:
343: The linker found what it interprets as a public-symbol
344: redefinition, probably because you have redefined a symbol that
345: is defined in a library. Relink with the /NOEXTDICTIONARY
346: (/NOE) option. If error L2025 results for the same symbol, then you
347: have a genuine symbol-redefinition error.
348:
349: L4003 intersegment self-relative fixup at <offset> in segment <name>
350: pos: <offset> Record type: 9C target external '<name>'
351:
352: The linker found an intersegment self-relative fixup. This error
353: may be caused by compiling a small-model program with the /NT
354: option.
355:
356: L4034 more than 239 overlay segments; extra put in root
357:
358: Your program designated more than the limit of 239 segments to
359: go in overlays. Starting with the 234th segment, they are assigned to
360: the root (that is, the permanently resident portion of the program).
361:
362: Dynamic-Link-Specific Messages
363: ------------------------------
364:
365: These messages are specific to linking OS/2 or Windows
366: applications and dynlink libraries.
367:
368: L1005 <option> : packing limit exceeds 65536 bytes
369:
370: The value specified following the /PACKCODE option
371: exceeds 65536, which is the limit.
372:
373: L1030 missing internal name
374:
375: You specified an IMPORT by ordinal in the definitions
376: file without including the internal name of the routine.
377: The name must be given if the import is by ordinal.
378:
379: L1031 module description redefined
380:
381: You specified a DESCRIPTION in the definitions file more
382: than once. Only one is allowed.
383:
384: L1032 module name redefined
385:
386: You specified the module name via a NAME or LIBRARY
387: statement more than once. Once is the limit.
388:
389: L1040 too many exported entries
390:
391: Your definitions file included more than 3072 exported
392: names. 3072 is the limit.
393:
394: L1041 resident-name table overflow
395:
396: The size of the resident name table exceeds 65,534 bytes.
397: An entry in the resident names table is made for each
398: EXPORT'ed routine designated RESIDENTNAME, and consists
399: of the name plus three bytes of information. The first
400: entry is the module name. Reduce the number of exported
401: routines or change some to nonresident.
402:
403: L1042 nonresident-name table overflow
404:
405: The size of the nonresident name table exceeds 65,534
406: bytes. An entry in the nonresident names table is made
407: for each EXPORT'ed routine not designated RESIDENTNAME,
408: and consists of the name plus three bytes of information.
409: The first entry is the DESCRIPTION. Reduce the number of
410: exported routines or change some to resident.
411:
412: L1044 imported-name table overflow
413:
414: The size of the imported names table exceeds 65,534
415: bytes. An entry in the imported names table is made for
416: each new name given in the IMPORTS section, including the
417: module names, and consists of the name plus one byte.
418: Reduce the number of imports.
419:
420: L1073 file-segment limit exceeded
421:
422: The number of physical or file segments exceeds 254
423: which is the limit imposed by OS/2 protected mode and Windows
424: for each application or dynamic link library. A file segment
425: is created for each group definition, or for each logical
426: segment which is not packed, or each set of packed segments.
427: Reduce the number of segments, group more of them and
428: make sure /PACKCODE is enabled.
429:
430: L1074 <name> : group larger than 64K bytes
431:
432: The given group exceeds 65,536 bytes, which is the limit
433: because each group is assigned to a single physical segment.
434: Reduce the size of the group, or make sure no unwanted segments
435: are in the group (look at the map file).
436:
437: L1075 entry table larger than 65535 bytes
438:
439: The entry table exceeds the limit. An entry in this table
440: is created for each exported routine, and also for each
441: address which is the target of a far relocation and for which
442: one of the following conditions is true:
443: - the target segment is designated IOPL
444: - PROTMODE is not enabled and the target segment is
445: designated MOVABLE
446: Declare PROTMODE if applicable, or reduce the number of
447: exported routines, or make some segments FIXED or NOIOPL
448: if possible.
449:
450: L1082 stub .EXE file not found
451:
452: The linker could not open the file given in the STUB
453: statement in the definitions file.
454:
455: L1092 cannot open module definitions file
456:
457: The linker could not open the definitions file specified
458: on the command line or response file.
459:
460: L1100 stub .EXE file invalid
461:
462: The file specified in the STUB statement is not a valid
463: DOS3 (OS/2 realmode) executable file.
464:
465: L2000 imported starting address
466:
467: The program starting address as specified in the END
468: statement in a MASM file is an imported routine. This
469: is not supported in OS/2 or Windows.
470:
471: L2010 too many fixups in LIDATA record
472:
473: The number of far relocations (pointer- or base-type) in an
474: LIDATA record, which is typically produced by the DUP statement
475: in a .ASM file, exceeds the limit imposed by the linker.
476: The limit is dynamic: a 1024-byte buffer is shared by
477: relocations and the contents of the LIDATA record, and there
478: are eight bytes per relocation. Reduce the number of far
479: relocations in the DUP statement.
480:
481: L2022 <name1> (alias <internalname>) : export undefined
482:
483: The internal name of the given exported routine is undefined.
484:
485: L2023 <name1> (alias <internalname>) : export imported
486:
487: The internal name name of the given exported routine
488: conflicts with the internal name of a previously exported
489: routine. The set of imported and exported names must not
490: overlap.
491:
492: L2026 entry ordinal <number>, name <name> : multiple definitions for
493: same ordinal
494:
495: The given exported name with the given ordinal number
496: conflicted with a different exported name previously
497: assigned to the same ordinal. At most one name can be
498: associated with a particular ordinal.
499:
500: L2027 <name> : ordinal too large for export
501:
502: The given exported name was assigned an ordinal which
503: exceeded 3072, which is the limit.
504:
505: L2028 automatic data segment plus heap exceed 64K
506:
507: The total size of data declared in DGROUP plus the value
508: given in HEAPSIZE in the definitions file, plus the stack
509: size given by the /STACKSIZE option or or STACKSIZE definitions
510: file statement, exceeds 64K. Reduce near data allocation,
511: stack, or HEAPSIZE.
512:
513: L2030 starting address not code (use class 'CODE')
514:
515: The program starting address, as specified in the END
516: statement of a .ASM file, is not in a code segment (code
517: segments are recognized if their class name ends in 'CODE').
518: This is an error in OS/2 protected mode; the error message may
519: be disabled by including the statement REALMODE in the definitions
520: file.
521:
522: L4000 seg disp. included near <offset> in segment <name>
523:
524: This is the warning generated by the /WARNFIXUP option.
525: Refer to documentation on that option.
526:
527: L4001 frame-relative fixup, frame ignored near <offset> in segment <name>
528:
529: A reference is made relative to a segment which is different
530: from the target segment of the reference. This does not make
531: sense in OS/2 protected mode or Windows. For example, if _foo
532: is defined in segment _TEXT, the instruction "call DGROUP:_foo"
533: will result in this warning. The frame DGROUP is ignored, so
534: the linker will treat the call as if it were "call _TEXT:_foo".
535:
536: L4002 frame-relative absolute fixup near %04x in segment %s
537:
538: A reference is made similar to the type described in
539: L4001, but both segments are absolute (defined with AT).
540: It is unclear what this means in OS/2 protected mode or
541: Windows; the linker treats it as if it were real mode.
542:
543: L4010 invalid alignment specification
544:
545: The number specified in the /ALIGNMENT option must be
546: a power of 2 in the range 2 to 32768, inclusive.
547:
548: L4011 PACKCODE value exceeding 65500 unreliable
549:
550: The packing limit specified with the /PACKCODE option
551: was between 65500 and 65536. Code segments with a size
552: in this range are unreliable on some steppings of the
553: 80286 processor.
554:
555: L4013 invalid option for new-format executable file ignored
556:
557: The options /CPARMAXALLOC, /DSALLOCATION, /NOGROUPASSOCIATION,
558: and currently /EXEPACK, as well as overlays, are disallowed for
559: OS/2 protected mode and Windows executables.
560:
561: L4014 invalid option for old-format executable file ignored
562:
563: The /ALIGNMENT option is invalid for DOS3 (OS/2 realmode)
564: executables.
565:
566: L4022 <group1>, <group2> : groups overlap
567:
568: The named groups overlap; since a group is assigned to
569: a physical segment, this is invalid for OS/2 protect mode
570: and Windows executables. Reorganize segments and group
571: definitions so the groups do not overlay; look at the map file.
572:
573: L4023 <name>(<internal name>) : export internal name conflict
574:
575: The internal name of the given exported routine conflicted
576: with internal name of a previous import or export definition.
577:
578: L4024 <name> : multiple definitions for export name
579:
580: The given name was exported more than once.
581:
582: L4025 <dynlib>.<import>(<name>) : import internal name conflict
583:
584: The internal name of the given imported routine (<import> is
585: either a name or a number) conflicted with the internal name
586: of a previous export or import.
587:
588: L4026 <dynlib>.<import>(<name>) : self-imported
589:
590: The given imported routine was imported from the module
591: being linked. This is not supported on some systems.
592:
593: L4027 <name> : multiple definitions for import internal-name
594:
595: The given internal name was imported more than once.
596: Previous import definitions are ignored.
597:
598: L4028 <name> : segment already defined
599:
600: The given segment was defined more than once in the
601: SEGMENTS statement of the definitions file.
602:
603: L4029 <name> : DGROUP segment converted to type data
604:
605: The given logical segment in the group DGROUP was defined
606: as a code segment. DGROUP has special meaning to the linker
607: as the automatic or default data segment and must be of type
608: data, so the linker converts the type of the named segment
609: to data.
610:
611: L4030 <name> : segment attributes changed to conform with
612: automatic data segment
613:
614: The given logical segment in the group DGROUP was given
615: sharing attributes (SHARED/NONSHARED) which differed from
616: the automatic data attributes as declared by
617: DATA INSTANCE/MULTIPLE. The attributes are converted to
618: conform to those of DGROUP. See note in L4029 about DGROUP.
619:
620: L4032 <name> : code-group size exceeds 65500 bytes
621:
622: The given code group has a size between 65500 and 65536,
623: which is unreliable on some steppings of the 80286
624: processor.
625:
626: L4036 no automatic data segment
627:
628: The application did not define a group named "DGROUP".
629: DGROUP has special meaning to the linker which uses it to
630: identify the automatic or default data segment used by the
631: operating system. Most OS/2 protected mode and Windows
632: applications require DGROUP. This warning will not be issued
633: if "DATA NONE" is declared or if the executable is a
634: dynlink library.
635:
636: L4042 cannot open old version
637:
638: The file specified in the OLD statement in the definitions
639: file could not be opened.
640:
641: L4043 old version not segmented-executable format
642:
643: The file specified in the OLD statement in the definitions
644: file was not a valid OS/2 protected mode or Windows executable.
645:
646: L4046 module name different from output file name
647:
648: The name of the executable as specified in the NAME or
649: LIBRARY statement is different from the output file name.
650: This may cause problems; consult documentation for your
651: operating system.
652:
653:
654:
655: LIB Library-Maintenance Utility
656:
657: Changed Messages
658: ----------------
659: Warning messages U4152, U4155, and U4157-U4159 for the Microsoft LIB Library
660: Manager are now nonfatal error messages U2152, U2155, and U2157-U2159,
661: respectively.
662:
663: Warning message U4151 has been changed to read as follows:
664:
665: U4151 '<name>' : symbol defined in module <name>, redefinition ignored
666:
667: New Messages
668: ------------
669: The following new warning messages have been added for LIB:
670:
671: U4155 <modulename> : module not in library
672:
673: A module specified to be replaced does not already exist in the
674: library. LIB adds the module anyway.
675:
676: U4157 insufficient memory, extended dictionary not created
677: U4158 internal error, extended dictionary not created
678:
679: For the reason indicated, LIB could not create an extended
680: dictionary. The library is still valid, but the linker
681: will not be able to take advantage of of the extended dictionary
682: to speed linking.
683:
684:
685: MAKE Program-Maintenance Utility
686:
687: New Message
688: -----------
689: U1015: <file> : error redirection failed
690:
691: This error occurs if the /X option is given and error output cannot
692: be redirected to the given file (for example, because the file
693: is read-only).
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.