### Compiler Error Messages EDC3600 - EDC3699

EDC3609
  The return type "&1" is not valid for a function of "&2" linkage.

  For example, functions with COBOL linkage cannot return a value; they must return void.

  Recovery

  Use a valid return type.

EDC3610
  Invalid or out of range pragma parameter; pragma is ignored.

  The pragma parameter specified is invalid or out of range.

  Recovery

  Remove the parameter or replace it with one within the range.

EDC3617
  Precompiled header file cannot be generated because a declaration was not complete when the last header file ended.

  A declaration may not begin in a header file and end in the main program file. No precompiled header file is generated.

  Recovery

  Complete the declaration before the end of the header file.

EDC3620
  #pragma &1 directive can be specified only once per source file.

  You can specify the #pragma directive indicated only once in each source file.

  Recovery

  Remove one of the #pragma &1 statements.

EDC3621
  The function specified in #pragma weak &1 should not be defined and referenced in the same compilation unit.

  The function specified in #pragma weak should only be defined externally and should not be referenced in the same compilation unit.

  Recovery

  Split the function definition and the function reference into separate compilation units.

EDC3623
  Option "&1" ignored because option "&2" specified.

  Specifying the second option indicated means the first has no effect.

  Recovery

  Remove one of the options.

EDC3638
  The header file name in the #include directive cannot be empty.

  Recovery

  Specify a non-empty header file name in the #include directive.

EDC3639
  "&1" will be converted to "&2" but argument type "&3" is incompatible.

  The type conversion will be performed. This can occur in an initialization, assignment, or expression statement. One or more of the function arguments is incompatible with the intended conversion.

  Recovery

  Change the offending argument type.

EDC3640
  #pragma argument :colon. "nowiden" is not allowed for functions with "C" linkage, "nowiden" option will be ignored.

  Arguments for functions with "C" linkage must be widened before they are passed.

  Recovery

  Remove "nowiden" option from #pragma argument.

EDC3642
  #&1 condition evaluates to &2.

  This message traces preprocessor expression evaluation.

  Recovery

  No response.

EDC3643
  defined(&1) evaluates to &2.

  This message traces preprocessor #ifdef and #ifndef evaluation.

  Recovery

  No response.

EDC3644
  Stop skipping tokens.

  This messages traces conditional compilation activity.

  Recovery

  No response.

EDC3645
  File &1 has already been #included.

  This #include directive is redundant.

  Recovery

  Remove the #include directive.

EDC3646
  #include found file &1.

  This message traces the activity of the #include directive.

  Recovery

  No response.

EDC3647
  #line directive changing line to &1 and file to &2.

  Traces #line directive evaluation.

  Recovery

  No response.

EDC3648
  #line directive changing line to &1.

  Traces #line directive evaluation.

  Recovery

  No response.

EDC3649
  The macro definition will override the keyword "&1".

  Overriding a C keyword with a preprocessor macro may cause unexpected results.

  Recovery

  Change the name of the macro if necessary.

EDC3650
  Some program text not scanned due to &1 option or #pragma &2.

  MARGINS or SEQUENCE option, or #pragma margins or sequence was used to limit the valid text region in a source file.

  Recovery

  Remove the MARGINS or SEQUENCE option, or remove the #pragma margins or sequence, or specify a more inclusive text region.

EDC3651
  Macro &1 redefined with identical definition.

  Identical macro redefinitions are allowed but not necessary. The amount of whitespace separating tokens have no bearing on whether macros are considered identical.

  Recovery

  Remove the identical definition if necessary.

EDC3652
  #&1 nesting level is &2.

  Traces conditional compilation activity.

  Recovery

  No response.

EDC3653
  Compiler internal name "&1" has been defined as a macro.

  Internal compiler names should not be redefined.

  Recovery

  Delete the macro definition or change the name of the macro being defined.

EDC3654
  Compiler internal name "&1" has been undefined as a macro.

  Internal compiler names should not be undefined.

  Recovery

  Delete the undefined macro.

EDC3655
  Begin skipping tokens.

  This messages traces conditional compilation activity.

  Recovery

  No response.

EDC3656
  A trigraph sequence occurred in a character literal.

  The trigraph sequence will be converted, although a literal interpretation may have been desired.

  Recovery

  Change the value of the character literal if necessary.

EDC3657
  A trigraph sequence occurred in a string literal.

  The trigraph sequence will be converted, although a literal interpretation may have been desired.

  Recovery

  Change the value of the string literal if necessary.

EDC3658
  #undef undefining macro name "&1".

  Traces #undef preprocessor directive evaluation.

  Recovery

  No response.

EDC3659
  Unknown macro name "&1" on #undef directive.

  An attempt is being made to undefine a macro that has not been previously defined.

  Recovery

  Remove the #undef directive.

EDC3660
  Header &1 included again because it is never empty.

  The referenced header file has already been #included and will be physically #included again because there is no conditional compilation path in it which results in an empty file.

  Recovery

  If desired, at the top of the header, test a macro name which is defined by the header to prevent subsequent inclusions.

EDC3661
  Header &1 not included again because it is empty.

  The referenced header file has already been #included and will not be physically #included again because it is empty.

  Recovery

  If desired, do not #include the header since it is empty.

EDC3662
  Header &1 included again because conditional compilation analysis is incomplete.

  The referenced header file has already been #included and will be physically #included again because the inclusion is recursive and the conditional compilation analysis of the header is therefore incomplete.

  Recovery

  If desired, test a macro name which is defined by the header at the point of inclusion to prevent subsequent inclusions.

EDC3663
  Header &1 not included again because it would have no effect due to conditional compilation.

  The referenced header file has already been #included and will not be physically #included again because conditional compilation would expose no additional source to the compiler.

  Recovery

  If desired, do not #include the header since it is redundant.

EDC3664
  End of precompiled header processing.

  The compiler has finished processing a precompiled header.

  Recovery

  No response. This message merely traces the activity of the precompiled header feature.

EDC3665
  Macro "&1" is required by the precompiled header and is defined differently than when the precompiled header was created.

  The referenced macro was expanded during the creation of the precompiled header and is now defined differently. This prevents the precompiled header from being used for this compilation.

  Recovery

  If necessary, redefine the macro, or regenerate the precompiled header

EDC3666
  One or more assertions are defined which were not defined when the precompiled header was created.

  An assertion is defined which was not defined when the precompiled header was generated. Since the effect of the new assertion is unknown, the precompiled header cannot be used for this compilation.

  Recovery

  Do not define the assertion or regenerate the precompiled header with the new assertion.

EDC3667
  One or more macros are defined which were not defined when the precompiled header was created.

  A macro is defined which was not defined when the precompiled header was generated. Since the effect of the new macro is unknown, the precompiled header cannot be used for this compilation.

  Recovery

  Do not define the macro or regenerate the precompiled header with the new macro.

EDC3668
  Compiler options do not match those in effect when the precompiled header was created.

  The compiler options in use are not compatible with those used when the precompiled header was generated. The precompiled header cannot be used.

  Recovery

  Use the same options as when the precompiled header was generated or regenerate the precompiled header with the new options.

EDC3669
  Assertion "&1" is required by the precompiled header and is not defined.

  The referenced assertion was tested during the creation of the precompiled header and is not defined. This prevents the precompiled header from being used for this compilation.

  Recovery

  If necessary, redefine the assertion, or regenerate the precompiled header without the assertion.

EDC3670
  Macro "&1" is required by the precompiled header and is not defined.

  The referenced macro was expanded during the creation of the precompiled header and is not defined. This prevents the precompiled header from being used for this compilation.

  Recovery

  If necessary, redefine the macro, or regenerate the precompiled header without the macro.

EDC3671
  Unable to use precompiled header &1.

  The precompiled header can not be used for this compilation. A subsequent message will explain the reason.

  Recovery

  Correct the problem indicated by the subsequent message.

EDC3672
  Expecting &1 and found &2.

  The header file being included is not the next header in the sequence used to generate the precompiled header. The precompiled header cannot be used for this compilation.

  Recovery

  #include the correct header or regenerate the precompiled header using the new sequence of #include directives.

EDC3673
  Syntax error - the argument list in the new placement syntax is empty.

  At least one new placement argument must be specified.

  Recovery

  Specify an argument in the new placement syntax or remove the new placement.

EDC3675
  The __unaligned type qualifier is applicable only to the types that are referenced or "pointed to". It is not valid here and is ignored.

  The __unaligned type qualifier specifies that the symbol accessed through a pointer or a reference is not naturally aligned.

  Recovery

  Remove the __unaligned qualifier.

EDC3676
  An expression of type "&1" cannot be an operand for dynamic_cast because "&2" is not a class, struct or union.

  The expression operand of a dynamic_cast operator must be a pointer to or an lvalue of a complete class.

  Recovery

  Use the static_cast or reinterpret_cast operator instead of the dynamic_cast operator.

EDC3677
  The operand is not a pointer type.

  The expression operand of a dynamic_cast operator must be a pointer when the target type is a pointer.

  Recovery

  Use the static_cast or reinterpret_cast operator instead of the dynamic_cast operator.

EDC3678
  The type "&1" is not allowed as the target type of the dynamic_cast operator.

  The target type of a dynamic_cast operator must be a pointer or reference to a complete class or a pointer to void.

  Recovery

  Use the static_cast or reinterpret_cast operator instead of the dynamic_cast operator.

EDC3679
  The type "&1" is not allowed as the target type of the dynamic_cast operator.

  The target type of a dynamic_cast operator must be a pointer to a complete class or a pointer to void when the operand is a pointer type.

  Recovery

  Use the static_cast or reinterpret_cast operator instead of the dynamic_cast operator.

EDC3680
  The type "&1" is not allowed as the target type of the dynamic_cast operator.

  The target type of a dynamic_cast operator must be a reference to a complete class when the operand is an lvalue.

  Recovery

  Use the static_cast or reinterpret_cast operator instead of the dynamic_cast operator.

EDC3681
  The type of the operand is "&1" but "&2" is not a polymorphic class.

  One may only dynamic cast to a non-base class from a polymorphic class. A polymorphic class is a class that has a virtual function or that has a polymorphic base class.

  Recovery

  Use the static_cast or reinterpret_cast operator instead of the dynamic_cast operator.

EDC3682
  The target type has less qualification than the source type.

  The target type must have the same type qualifiers (or more) as the source type. Note that dynamic_cast may not used to cast away 'const'.

  Recovery

  Add qualifiers to the target type to match the source type.

EDC3683
  The type "&1" is not allowed as the target type of the dynamic_cast operator because "&2" is incomplete.

  The target type of a dynamic_cast operator must be a pointer or reference to a complete class.

  Recovery

  Use the static_cast or reinterpret_cast operator instead of the dynamic_cast operator.

EDC3684
  An expression of type "&1" cannot be an operand for dynamic_cast because "&2" is incomplete.

  The expression operand of a dynamic_cast operator must be a pointer or reference to a complete class.

  Recovery

  Use the static_cast or reinterpret_cast operator instead of the dynamic_cast operator.

EDC3685
  The operand is not an lvalue.

  The expression operand of a dynamic_cast operator must be an lvalue if the target type is a reference.

  Recovery

  Use the static_cast or reinterpret_cast operator instead of the dynamic_cast operator.

EDC3686
  Pointer type "&1" will be converted to "&2". In a future release, this conversion will result in a syntax error due to an AS/400 pointer rules violation.

  The conversion violates AS/400 pointer rules (See the ILE C/400 Programmers Guide for more information).

  Recovery

  Use open (void) pointers between AS/400 pointers of different classes.

EDC3687
  Function "&1" does not have any parameters before the '...' parameter. This is not legal in IDL.

  Functions in IDL must have at least one named parameter before a ... parameter.

  Recovery

  Add a named parameter before the ... parameter.

EDC3688
  "&1" is an IDL keyword or type defined by <somobj.idl>.

  The user has a variable or field name that conflicts with an IDL keyword or type.

  Recovery

  Rename the variable.

EDC3689
  Unable to create the type_info objects because of the improper type_info class definition.

  The user has a type_info class definition that conflicts with the standard.

  Recovery

  Rename the user type_info class definition.

EDC3690
  IDL name "&1" conflicts with a variable or type in the same scope.

  The name conflicts with a previous IDL name in this compilation unit.

  Recovery

  Rename at least one name/type.

EDC3694
  Cannot specify default function on PowerPC; #pragma weak ignored.

  On PowerPc, #pragma weak only takes one parameter, the weak function.

  Recovery

  Before calling the weak function on PowerPC, check to be sure it's there.

EDC3695
  Must specify default function on Intel; #pragma weak ignored.

  On Intel, #pragma weak takes two parameters, the weak function and the default one.

  Recovery

  On Intel, a default function must be provided for use when the weak function is not linked in.

EDC3696
  Use option -Fb* to generate browser information for symbols in system include files

  You have definition for a symbol from a System Include file. If you want browser information for all symbols, use the -Fb* option.

  Recovery

  Ignore the message, or recompile using the -Fb* option.

EDC3698
  Both "main" and "WinMain" are defined in this compilation unit. Only one of them is allowed.

  In each compilation unit, only one of "main" and "WinMain" is allowed.

  Recovery

  Remove either "main" or "WinMain".

EDC3699
  A call to the thread object's destructor may not be invoked if the current process ends before all of its threads end.

  You have declared a thread object with a destructor. Destructor calls of thread local storage objects are not fully supported on NT.

  Recovery

  Allow enough time to the process so that its threads can end gracefully before the process terminates.

Summary of Compiler Error Messages