### C++ Compiler Error Messages EDC3100 - EDC3199

EDC3100
  "&1" is set but not used in function "&2".

  The specified symbol was given a value but was never used.

  Recovery

  Use the symbol or remove it.

EDC3101
  "&1" is used before it is set.

  The specified symbol is being used before it has been assigned a value. The value of the symbol is undefined.

  Recovery

  Define or initialize the symbol before using it.

EDC3102
  The reference variable "&1" is uninitialized.

  Reference variables must be initialized.

  Recovery

  Initialize the reference variable or remove it.

EDC3103
  "&1" must already be declared.

  The specified class or enum name must have been declared before this use of the name.

  Recovery

  Declare the class or enum name before you use it. Check the correct spelling of the name.

EDC3104
  Unrecognized source character "&1", code point &2.

  The specified character is not a valid character in a C++ program. The code point represents the ASCII value of the character displayed in hexadecimal format.

  Recovery

  Remove the character.

EDC3105
  A local class cannot have a non-inline member function "&1".

  A class declared within a function must have all of its member functions defined inline, because the class will be out of scope before non-inline functions can be defined.

  Recovery

  Define the functions inline, or move the class definition out of the scope of the function.

EDC3106
  The size of "&1" is unknown in "&2" expression.

  The operation cannot be performed because the size of the specified type is not known.

  Recovery

  Ensure the size of the type is known before this expression.

EDC3107
  Assignment in logical expression.

  The logical expression contains an assignment (=). An equality comparison (==) may have been intended.

  Recovery

  Change the operator or the expression.

EDC3108
  Conversion from "&1" to "&2" may cause truncation.

  The specified conversion from a wider to a narrower type may cause the loss of significant data.

  Recovery

  Remove the conversion from a wider to a narrower type.

EDC3109
  "goto &1" bypasses initialization of "&2".

  Jumping past a declaration with an explicit or implicit initializer is not valid unless the declaration is in an inner block or unless the jump is from a point where the variable has already been initialized.

  Recovery

  Enclose the initialization in a block statement.

EDC3110
  References to "&1" may be ambiguous. The name is declared in base classes "&2" and "&3".

  The compiler detected the base classes of a derived class have members with the same names. This will cause ambiguity when the member name is used. This is only an informational message because the declaration of a member with an ambiguous name in a derived class is not an error. The ambiguity is only flagged as an error if you use the ambiguous member name.

  Recovery

  Change one of the names, or always fully qualify the name.

EDC3111
  Ambiguous reference to "&1", declared in base classes "&2" and "&3".

  The derived class made a reference to a member that is declared in more than one of its base classes and the compiler cannot determine which base class member to choose.

  Recovery

  Change one of the names, or always fully qualify the name.

EDC3112
  Conversion from "&1" to "&2" is ambiguous.

  There is more than one way to perform the specified conversion. This ambiguity may be caused by an overloaded function.

  Recovery

  Change or remove the conversion.

EDC3113
  "&1" is only valid for non-static member functions.

  const and volatile are only significant for non-static member functions, since they are applied to the "this" pointer.

  Recovery

  Remove const and volatile from all static members.

EDC3114
  Duplicate case value.

  Case values must be unique within each "switch" statement.

  Recovery

  Change or remove one of the duplicate case values. Check the braces if you have nested case statements.

EDC3115
  Character literal is null.

  An empty character literal has been specified. A string literal may have been intended.

  Recovery

  Remove the character literal, change it to a string literal, or give it a value.

EDC3116
  "&1" is given wider scope for compatibility reasons.

  A type defined in class scope has been given the scope of the enclosing function or file because of a compiler option.

  Recovery

  Ensure this is correct scope.

EDC3117
  "&1" has more than one base class "&2".

  A derived class has inherited the same base class in more than one path and the compiler cannot determine which one to choose.

  Recovery

  Remove one of the inheritances.

EDC3118
  "&1" is a &2 base class of "&3".

  An attempt is being made to convert a pointer to a derived class into a pointer to a private or protected base class.

  Recovery

  Remove the pointer conversion.

EDC3119
  The statement is unreachable.

  The flow of control in the program never allows the statement to be be reached.

  Recovery

  Ensure that the statement is accessible to the flow of control, or remove the statement.

EDC3120
  &1 "&2" is not allowed in a union.

  Unions must not be declared with base classes, virtual functions, static data members, members with constructors, members with destructors, or members with class copying assignment operators.

  Recovery

  Remove any such members from the union declaration.

EDC3121
  union "&1" cannot be used as a base class.

  Unions cannot be used as base classes for other class declarations.

  Recovery

  Remove the union as a base class for other class declarations.

EDC3122
  Local variable "&1" is inaccessible from "&2".

  An automatic variable within a function is not accessible from local classes declared within the function.

  Recovery

  Remove the reference to the local variable, or move the variable to a different scope.

EDC3123
  Value of enumerator "&1" is too large.

  The value of an enumerator must be a constant expression that is promotable to a signed integer value.

  Recovery

  Reduce the value of the enumerator.

EDC3124
  No path specified for -I option.

  The option requires a path name to search but no path was found.

  Recovery

  Supply the name of a directory containing include files after the option.

EDC3125
  Missing macro name after -D or -U command line option.

  The option requires the name of a macro to be defined or undefined, and no name was found.

  Recovery

  Add a macro name after the option.

EDC3126
  Argument "&1" is not used in function "&2".

  The argument has been declared in a function but has not been set or used.

  Recovery

  Use the argument or remove it.

EDC3127
  Global symbol "&1" is not used.

  The specified symbol has been declared as a global symbol but has not been set or used.

  Recovery

  Use the symbol or remove it.

EDC3129
  Default initializers are not allowed in local friend functions.

  You cannot use default arguments in the friend functions of the local class.

  Recovery

  Remove the default initializers from the local friend function.

EDC3130
  A constant is being used as a conditional expression.

  The condition to an if, for, or switch is constant and therefore, that condition will always hold.

  Recovery

  No response is necessary.

EDC3131
  The argument to a not (!) operator is constant.

  The compiler has detected a constant after the ! operator which may be a coding error.

  Recovery

  Remove the constant or ignore this message.

EDC3132
  There is more than one character in a character constant.

  Using more than one character in a character constant (for example, 'ab') may not be portable across machines.

  Recovery

  Remove the extra character(s) or change the character constant to a string constant.

EDC3133
  Possible pointer alignment problem with the "&1" operator.

  A pointer that points to a type with less strict alignment requirements is being assigned, cast, returned or passed as a parameter to a pointer that is a more strictly aligned type. This is a potential portability problem.

  Recovery

  Remove the pointer reference or change the alignment.

EDC3134
  A constant expression is being cast to a pointer.

  Casting a constant value to a pointer is not portable to other platforms.

  Recovery

  Remove the constant expression from the cast expression.

EDC3135
  Precision will be lost in assignment to (possibly sign-extended) bit-field "&1".

  A constant is being assigned to a signed bit field that cannot represent the constant. Precision may be lost and the stored value will be incorrect.

  Recovery

  Increase the size of the bit field.

EDC3136
  Precision will be lost in assignment to bit-field "&1".

  A constant is being assigned to a bit field, and because the bit field has a smaller size, the precision will be lost.

  Recovery

  Change the assignment expression.

EDC3137
  Enumeration type clash with the "&1" operator.

  Operands from two different enumerations are used in an operation.

  Recovery

  Ensure both operands are from the same enumeration.

EDC3138
  Comparison of an unsigned value with a negative constant.

  An unsigned value is being compared to a negative number. The unsigned value will always compare greater than the negative number. This may be a programming error.

  Recovery

  Remove the comparison or change the type.

EDC3139
  Unsigned comparison is always true or always false.

  The comparison is either "unsigned >= 0", which is always true, or "unsigned < 0", which is always false.

  Recovery

  Remove or change the comparison.

EDC3140
  Comparison is equivalent to "unsigned value &1 0".

  The comparison is either "unsigned > 0" or "unsigned <= 0", and could be written as "unsigned != 0" or "unsigned == 0".

  Recovery

  Change the comparison.

EDC3141
  Argument &1 for "&2" must be of type "&3".

  The indicated function requires an argument of a particular type. However, the argument specified is of a different type than the type required.

  Recovery

  Ensure that the argument is of the correct type.

EDC3142
  The operand for the "#line" directive must be an integer in the range 1 to 32767.

  The operand of the "#line" directive must be an integer in the specified range.

  Recovery

  Ensure that the operand is in the specified range.

EDC3143
  Definition of "&1" is not allowed.

  You cannot define a type in a type cast or a conversion function declaration.

  Recovery

  Move the definition to a new location, or remove it.

EDC3144
  Reference to "&1" is not allowed.

  The name has a special meaning in a C++ program and cannot be referenced in this way.

  Recovery

  Remove the reference.

EDC3145
  Escape sequence &1 is out of the range 0-&2. Value is truncated.

  Recovery

  Make the escape sequence small enough to fit the specified range.

EDC3146
  A wide character constant is larger than the size of a "wchar_t". Only the last character is used.

  A wide character constant can only contain one character. This error may be caused by a literal containing a multibyte character if the multibyte character compile option is not used.

  Recovery

  Make the wide character constant smaller.

EDC3147
  A character constant is larger than the size of an "int". Only the rightmost &1 characters are used.

  Recovery

  Make the character constant smaller.

EDC3148
  Linkage specification must be at file scope.

  A linkage specification may only be defined at file scope, that is, outside all functions and classes.

  Recovery

  Move the linkage specification or remove it.

EDC3149
  Default initializers cannot be followed by uninitialized arguments.

  If a default initializer is specified in an argument list, all following arguments must also have default initializers.

  Recovery

  Remove the default initializers, or provide them for the following arguments, or move the arguments to the end of the list.

EDC3150
  You cannot take the address of "&1".

  You cannot take the address of a constructor, a destructor or a reference member.

  Recovery

  Remove the address operator (&) from the expression or remove the expression.

EDC3151
  &1 compiler temporary of type "&2" has been generated.

  The compiler has generated a temporary variable. This variable will be destroyed automatically when it goes out of scope. This messages is generated for your information only, it does not necessarily indicate a problem with your program.

  Recovery

  Ensure that your program does not attempt to reference the temporary variable outside of its scope.

EDC3152
  An error was detected while writing to file "&1".

  The compiler detected an error while writing to the specified file.

  Recovery

  Ensure the file name is correct and that the disk is ready to be written to.

EDC3153
  Duplicate qualifier "&1" ignored.

  The keyword has been specified more than once. Extra occurrences are ignored.

  Recovery

  Remove one of the duplicate qualifiers.

EDC3154
  "&1" operator cannot be overloaded.

  The specified operator cannot be overloaded using an operator function. The following operators cannot be overloaded :colon. . .* :colon. :colon. ? :colon.

  Recovery

  Remove the overloading declaration or definition.

EDC3155
  At least one argument of "&1" must be of class or enum type.

  The non-member operator function must have at least one argument which is of class or enum type.

  Recovery

  Add an argument of class or enum type.

EDC3156
  Call matches built-in operator.

  The compiler detected an operator that is similar to the built-in one, and is providing additional information.

  Recovery

  Ensure this is the desired match.

EDC3157
  The divisor for the modulus or division operator cannot be zero.

  Recovery

  Change the expression used in the divisor.

EDC3158
  The address of the bit-field "&1" cannot be taken.

  An expression attempts to take the address of a bit-field, or to use the bit-field to initialize a reference variable or argument.

  Recovery

  Remove the expression causing the error.

EDC3159
  "&1" must not have default initializers.

  Default initializers are not allowed within the declaration of an operator function or a template function.

  Recovery

  Remove the default initializers.

EDC3160
  The &1 "&2" cannot be initialized because it does not have a default constructor.

  The specified base class or member cannot be constructed since it is not initialized in the constructor initializer list and its class has no default constructor.

  Recovery

  Specify a default constructor for the class or initialize it in the constructor initializer list.

EDC3161
  Line is too long for proper generation of test coverage information.

  To generate test coverage information, statements cannot start to the right of column 65536.

  Recovery

  Shorten the line.

EDC3162
  There are too many statements for proper generation of test coverage information.

  There can be no more than 65536 statements (not source lines) in a module when test coverage information is to be generated.

  Recovery

  Reduce the number of statements.

EDC3163
  Template class "&1" has the wrong number of arguments.

  A template class instantiation has a different number of template arguments than the template declaration.

  Recovery

  Ensure that the template class has the same number of declarations as the template declaration.

EDC3164
  Non-&1 member function "&2" cannot be called for a &1 object.

  The member function is being called for a const or volatile object but the member function has not been declared with the const or volatile qualifier.

  Recovery

  Supply a version of the member function with the correct set of "const" and "volatile" qualifiers.

EDC3165
  Null statement.

  Possible extraneous semi-colon has been specified.

  Recovery

  Check for extra semi-colons in statement.

EDC3166
  Bit-field "&1" cannot be used in a conditional expression that is to be modified.

  The bit-field is part of a conditional expression that is to be modified. Only objects that can have their address taken are allowed as part of such an expression, and you cannot take the address of a bit field.

  Recovery

  Remove the bit-field from the conditional expression.

EDC3167
  The "&1" qualifier cannot be applied to "&2".

  The qualifier is being applied to a name or a type for which it is not valid.

  Recovery

  Remove the qualifier.

EDC3168
  Local type "&1" cannot be used as a &2 argument.

  The type cannot be used as a function argument or in the instantiation of a template because the scope of the type is limited to the current function.

  Recovery

  Remove the local type.

EDC3169
  Exception specification for function "&1" does not match previous declaration.

  If an exception specification is given in more than one declaration of a function, it must be the same in all such declarations.

  Recovery

  Ensure that all exception specifications match.

EDC3170
  Default initializers for non-type template arguments are only allowed for class templates.

  Default initializers have been given for non-type template arguments, but the template is not declaring a class.

  Recovery

  Remove the default initializers.

EDC3171
  A function argument must not have type "void".

  A function argument may be an expression of any object type. However, "void" is not the type of any object, and cannot be used as an argument type.

  Recovery

  Change the type of the function argument.

EDC3172
  Insufficient memory in line &1 of file "&2".

  The compiler ran out of memory during compilation.

  Recovery

  End unnecessary processes and recompile.

EDC3174
  An object of abstract class "&1" cannot be created.

  You cannot create instances of abstract classes. An abstract class is a class that has or inherits at least one pure virtual function.

  Recovery

  Derive another object from the abstract class.

EDC3175
  Invalid use of an abstract class.

  An abstract class must not be used as an argument type, as a function return type, or as the type of an explicit conversion.

  Recovery

  Derive another class from the abstract, instantiate it so it becomes a concrete object, and then use it instead.

EDC3176
  "&1" has been used more than once in the same base class list.

  A base class may only be specified once in the base class list for a derived class.

  Recovery

  Remove one of the specifications.

EDC3177
  Template argument &1 of type "&2" does not match declared type "&3".

  A non-type template argument must have a type that exactly matches the type of the corresponding argument in the template declaration.

  Recovery

  Ensure that the types match.

EDC3178
  Template argument &1 of type "&2" is not an allowable constant value or address.

  A non-type template argument must be a constant value or the address of an object, function, or static data member that has external linkage. String literals cannot be used as template arguments because they have no name, and therefore no linkage.

  Recovery

  Change the template argument.

EDC3179
  Template argument list is empty.

  At least one template argument must be specified in a template declaration.

  Recovery

  Specify a template argument in the declaration.

EDC3180
  Formal template argument &1 is of type "&2" which is not an allowable integral, enumeration, or pointer type.

  A non-type template argument must be of integral, or enumeration, or pointer type, so that it can be matched with a constant integral value.

  Recovery

  Change the template argument.

EDC3181
  "&1" is defined in a template declaration but it is not a static member.

  A member of a template class defined in a template declaration must be a static member.

  Recovery

  Make the member static or remove it from the template declaration.

EDC3182
  Template argument "&1" is not used in the declaration of the name or the argument list of "&2".

  All template arguments for a non-class template must be used in the declaration of the name or the function argument list.

  Recovery

  Ensure all template arguments are used in the declaration of the name or the function argument list.

EDC3183
  Template declaration does not declare a class, a function, or a template class member.

  Following the template argument, a template declaration must declare a class, a function, or a static data member of a template class.

  Recovery

  Change the template declaration to declare a class, a function, or a template class member.

EDC3184
  Return type "&1" for function "&2" differs from previous return type of "&3".

  The declaration of the function differs from a previous declaration in only the return type.

  Recovery

  Change the return type so that it matches the previous return type.

EDC3185
  "&1" is a member of "&2" and cannot be used without qualification.

  The specified name is a class member, but no class qualification has been used to reference it.

  Recovery

  Add a class qualification to the class member.

EDC3186
  The expression is not a valid preprocessor constant expression.

  The expression in an "#if" or "#elif" preprocessor directive is either not a valid expression or not a constant expression. No keywords are recognized in such an expression and non-macro identifiers are replaced by the constant 0.

  Recovery

  Change the expression for the preprocessor directive.

EDC3187
  "&1" cannot be initialized multiple times.

  An initializer was already specified in the constructor definition.

  Recovery

  Remove the additional initializer.

EDC3188
  A macro parameter is expected after the "#" operator.

  The "#" operator in a macro replacement list must be followed by a macro parameter.

  Recovery

  Add a macro parameter after the "#" operator.

EDC3189
  "##" operator is at the start or end of the replacement list.

  The "##" operator must be preceded and followed by valid tokens in the macro replacement list.

  Recovery

  Move the "##" operator in the replacement list.

EDC3190
  One or more "#endif" statements are missing at end of file.

  The end of file has been reached and there are still "#if", "#ifdef" or "#ifndef" statements without a matching "#endif" statement.

  Recovery

  Ensure that all "#if", "#ifdef", and "#ifndef" statements have matching "#endif" statements.

EDC3191
  No suitable copy assignment operator exists to perform the assignment.

  A copy assignment operator exists but it does not accept the type of the given parameter.

  Recovery

  Change the copy assignment operator.

EDC3192
  Identifier "&1" in preprocessor expression is assigned 0.

  Identifiers are not recognized in a preprocessor expression. The specified identifier has been treated as a non-macro identifier and assigned the constant 0.

EDC3193
  Explicit call to constructor "&1" is not allowed.

  You cannot call a constructor explicitly. It is called implicitly when an object of the class is created.

  Recovery

  Remove the call to the constructor.

EDC3194
  "catch(&1)" will never be reached because of previous "catch(&2)".

  The catch clause can never be reached since any exception type that matches it will also be matched by the specified previous catch clause.

  Recovery

  Change or remove one of the catch clauses.

EDC3195
  No default constructor exists for "&1".

  An array of class objects must be initialized by calling the default constructor, but one has not been declared.

  Recovery

  Declare a default constructor for the array.

EDC3196
  More than one default constructor exists for "&1".

  An array of class objects must be initialized by calling the default constructor, but the call is ambiguous.

  Recovery

  Ensure that only one default constructor exists.

EDC3197
  It is invalid to have a throw expression with type "&1".

  You cannot throw a function or an expression of type "void".

  Recovery

  Change the type or remove the throw expression.

EDC3198
  The exception specification is ignored in this declaration.

  The declaration contains a function declarator with an exception specification but is not the declaration of a function. The exception specification is ignored.

  Recovery

  Change the function declarator so that it is the declaration of a function.

EDC3199
  The compiler cannot generate a default copy constructor for "&1".

  The default copy constructor cannot be generated for this class because there exists a member or base class that has a private copy constructor, or there are ambiguous base classes, or this class has no name.

  Recovery

  Ensure that a member or base class does not have a private copy constructor. If not then ensure the class is named and there are no ambiguous references to base classes.

Summary of Compiler Error Messages