1.2 List of the armcc error and warning messages

A list of the error and warning messages that armcc produces.

Note:

0: unknown error
1: last line of file ends without a newline
2: last line of file ends with a backslash
3: #include file <entity> includes itself
4: out of memory
5: cannot open <entity> input file <filename>: <reason>

For example:

#include <file.h>

results in the message:

Error: #5: cannot open source input file "file.h": No such file or directory

because file.h does not exist in the system include directory.

6: comment unclosed at end of file

Comment started with /* but no matching */ to close the comment.

7: unrecognized token
8: missing closing quote

For example:

char foo[] = {"\"};

In this example, the backslash causes the following quote " to be treated as a literal character rather than closing the string. To fix this, use:

char foo[] = {"\\"};
9: nested comment is not allowed

For example:

/*nested
/*comment*/
10: "#" not expected here
11: unrecognized preprocessing directive

For example:

#foo
12: parsing restarts here after previous syntax error
13: expected a file name

For example:

#include <>
14: extra text after expected end of preprocessing directive

For example:

#if EMBEDDED foo

or:

#include <stdio.h> foo

or:

#ifdef SOMETHING
:
#endif SOMETHING

The #endif does not expect or require any argument. Enclosing the trailing part of the line in a comment fixes the problem:

#endif /* SOMETHING */
16: <entity> is not a valid source file name
17: expected a "]"
18: expected a ")"
19: extra text after expected end of number

For example:

int a = 37r;
20: identifier <entity> is undefined

For example, when compiled for C++, the code:

void foo( arg ) { }

results in the message:

Error: #20: identifier <arg> is undefined

Another example of code that can cause this error is:

int foo(void)
{
  int a = 4;
  a = i;
}

which results in the message:

Error: #20: identifier "i" is undefined

because i has not been declared.

21: type qualifiers are meaningless in this declaration
22: invalid hexadecimal number
23: integer constant is too large
24: invalid octal digit

For example:

int a = 0378;
25: quoted string should contain at least one character

For example:

char a ='';
26: too many characters in character constant

For example, the following code produces this warning because the multibyte character consists of more bytes than can fit into an int:

int a ='abcde';
27: character value is out of range

This error can occur when a character value described by a hex constant is too large to be represented in a char variable, for example:

char x = '\x100';
28: expression must have a constant value
29: expected an expression
30: floating constant is out of range
31: expression must have integral type
32: expression must have arithmetic type
33: expected a line number
34: invalid line number
35: #error directive: <entity>
36: the #if for this directive is missing
37: the #endif for this directive is missing

An open #if was still active, but was not closed with #endif before the end of file.

38: directive is not allowed -- an #else has already appeared
39: division by zero
40: expected an identifier

This error is raised if preprocessor statements are incorrectly formatted, for example if an identifier which must immediately follow a #define preprocessor command is missing.

This error can also occur when code uses a keyword as an identifier, for example:

int if =0;
41: expression must have arithmetic or pointer type
42: operand types are incompatible (<type> and <type>)
44: expression must have pointer type
45: #undef may not be used on this predefined name
46: <entity> is predefined; attempted redefinition ignored
47: incompatible redefinition of macro <entity>

A macro has been defined twice, with different replacement strings.

For example:

#define TEST 0
#define TEST 1

causes the compiler to produce:

Warning: #47-D: incompatible redefinition of macro "TEST" (declared at line 1)

If it is necessary to do this, undefine the macro using #undef before the second definition.

If you want to define a macro, unless it already has a definition, you can use conditional preprocessing, for example:

#ifndef TEST
#define TEST 0
#endif

Compiling this with armcc -c foo.c defines TEST to be 0 (the default).

Compiling this with armcc -c -DTEST=1 foo.c defines TEST to be 1.

49: duplicate macro parameter name
50: "##" may not be first in a macro definition
51: "##" may not be last in a macro definition
52: expected a macro parameter name
53: expected a ":"
54: too few arguments in invocation of <entity>
55: too many arguments in invocation of <entity>
56: operand of sizeof may not be a function
57: this operator is not allowed in a constant expression
58: this operator is not allowed in a preprocessing expression
59: function call is not allowed in a constant expression
60: this operator is not allowed in an integral constant expression
61: integer operation result is out of range
62: shift count is negative
63: shift count is too large
64: declaration does not declare anything

For example:

int; 
65: expected a ";"
66: enumeration value is out of "int" range

This diagnostic message is generated by the compiler when an enum constant is outside the range of a signed int.

For example, the compiler generates this warning when the following code is compiled in C mode:

typedef enum
{
  Bit31 = 0x80000000
} Bits;

Note:

This description applies to RVCT 2.2 and later.

C mode:

  • the warning is produced but the compiler promotes the constants to unsigned

  • the switch --strict always produces this message as an error.

C++ mode:

  • by default the out-of-range constants are promoted to unsigned without a warning and also when --strict is used

As a work around for cases where the message is an error use the following code example:

typedef enum
{
  Bit31 = (int)0x80000000
} Bits;

An overflow no longer occurs, and so no error is reported.

Note:

The value of Bit31 is now negative because it is a signed int.

See the following in the armcc User Guide:

Structures, unions, enumerations, and bitfields.

67: expected a "}"
68: integer conversion resulted in a change of sign

The constant is too large to be represented in a signed long, and therefore has been given unsigned type.

Example:

long l = 2147483648;
69: integer conversion resulted in truncation
70: incomplete type is not allowed

Example:

typedef struct {
  unsigned char size;
  char string[];
} FOO;

By not declaring a size for the array in the structure, the compiler is not able to allocate a size of the structure. Incomplete types are permitted in --gnu and --c99 modes.

71: operand of sizeof may not be a bit field
75: operand of \"*\" must be a pointer
76: argument to macro is empty
77: this declaration has no storage class or type specifier
78: a parameter declaration may not have an initializer
79: expected a type specifier

The ellipses to denote variadic functions, such as printf(), must follow at least one parameter. For example, change:

int foo( ... );

to:

int foo( int bar, ... ); 
80: a storage class may not be specified here
81: more than one storage class may not be specified
82: storage class is not first
83: type qualifier specified more than once
84: invalid combination of type specifiers

The type name or type qualifier cannot be used in the same declaration as the second type name or type qualifier. For example:

typedef int int;
85: invalid storage class for a parameter
86: invalid storage class for a function
87: a type specifier may not be used here
88: array of functions is not allowed
89: array of void is not allowed
90: function returning function is not allowed
91: function returning array is not allowed
92: identifier-list parameters may only be used in a function definition
93: function type may not come from a typedef
94: the size of an array must be greater than zero

Zero-sized arrays are permitted only when in --gnu mode, for example:

char name[0];

See the following in the armcc User Guide:

95: array is too large

There is a limit of 4GB on the maximum size of arrays or structures.

96: a translation unit must contain at least one declaration
97: a function may not return a value of this type
98: an array may not have elements of this type
99: a declaration here must declare a parameter
100: duplicate parameter name
101: <entity> has already been declared in the current scope
102: forward declaration of enum type is nonstandard
103: class is too large
104: struct or union is too large

There is a limit of 4GB on the maximum size of arrays or structures.

105: invalid size for bit field

Bit fields must not be larger than the size of the type.

For example, with --strict:

struct X{
  int y:5000;
};
106: invalid type for a bit field

Bit fields must have integral type.

Example:

struct X{
  float x:5;
  float y:2;
};
107: zero-length bit field must be unnamed
108: signed bit field of length 1
109: expression preceding parentheses of apparent call must have (pointer-to-) function type
110: expected either a definition or a tag name
111: statement is unreachable
112: expected "while"
114: <entity> was referenced but not defined
115: a continue statement may only be used within a loop
116: a break statement may only be used within a loop or switch

Example:

void foo(void){
  int a=0;
  continue;
}

or:

void bar(void){
  int a=0;
  break;
}
117: non-void <entity> should return a value
118: a void function may not return a value
119: cast to type <type> is not allowed
120: return value type does not match the function type
121: a case label may only be used within a switch
122: a default label may only be used within a switch
124: default label has already appeared in this switch
125: expected a "("
126: expression must be an lvalue
127: expected a statement
128: loop is not reachable
129: a block-scope function may only have extern storage class
130: expected a "{"
131: expression must have pointer-to-class type
132: expression must have pointer-to-struct-or-union type
133: expected a member name
134: expected a field name
135: <entity> has no member <entity>
136: <entity> has no field <entity>
137: expression must be a modifiable lvalue
138: taking the address of a register variable is not allowed
139: taking the address of a bit field is not allowed
140: too many arguments in function call

Function declaration does not match the number of parameters in an earlier function prototype.

Example:

extern void foo(int x);
void bar(void)
{
  foo(1,2);
}
141: unnamed prototyped parameters not allowed when body is present
142: expression must have pointer-to-object type
143: program too large or complicated to compile
144: a value of type <type> cannot be used to initialize an entity of type <type>

The initializing string for a fixed size character array is exactly as long as the array size, leaving no room for a terminating \0, for example:

char name[5] = "Hello";

The name array can hold up to 5 characters. "Hello" does not fit because C strings are always null-terminated (for example, "Hello\0"). The compiler reports:

Error: #144: a value of type "const char [6]" cannot be used to initialize an entity of type "char [5]"

A similar error is also raised if there is an implicit cast of non-zero int to pointer.

For example:

void foo_func( void )
{
  char *foo=1;
}

results in the message:

#144: a value of type "int" cannot be used to initialize an entity of type "char *"

For the cast, this error can be suppressed with the use of the --loose_implicit_cast switch.

145: <entity> may not be initialized
146: too many initializer values
147: declaration is incompatible with <entity>

The following incorrect C code causes an error in all modes. This can be downgraded from an error to a warning by using --diag_warning 147, or suppressed completely by using --diag_suppress 147.

typedef enum { e } E;
typedef enum { f } F;
E g(void);
F g(void);
148: <entity> has already been initialized
149: a global-scope declaration may not have this storage class
150: a type name may not be redeclared as a parameter
151: a typedef name may not be redeclared as a parameter
152: conversion of nonzero integer to pointer
153: expression must have class type
154: expression must have struct or union type
155: old-fashioned assignment operator
156: old-fashioned initializer
157: expression must be an integral constant expression
158: expression must be an lvalue or a function designator
159: declaration is incompatible with previous <entity>
160: external name conflicts with external name of <entity>
161: unrecognized #pragma
163: could not open temporary file <entity>
164: name of directory for temporary files is too long (<entity>)
165: too few arguments in function call

Function prototype is defined with a number of parameters that does not match the number of parameters passed in the function call.

For example:

extern void foo(int x);
void bar(void)
{
  foo();
}
166: invalid floating constant
167: argument of type <type> is incompatible with parameter of type <type>
168: a function type is not allowed here
169: expected a declaration

This can occur when attempting to compile some C++ header files with the C compiler instead of the C++ compiler.

170: pointer points outside of underlying object
171: invalid type conversion
172: external/internal linkage conflict with previous declaration
The compiler suppresses errors about linkage disagreements, where functions are implicitly declared as extern and later re-declared as static, unless the --strict option is used. For example:
extern void foo(void);
static void foo(void){}
173: floating-point value does not fit in required integral type
174: expression has no effect
175: subscript out of range
177: <entity> was declared but never referenced

By default, unused declaration warnings are given for:

  • Local (within a function) declarations of variables, typedefs, and functions.

  • Labels (always within a function).

  • Top-level static functions and static variables.

The --diag_suppress 177 option suppresses these warnings.

178: "&" applied to an array has no effect
179: right operand of "%" is zero
180: argument is incompatible with formal parameter
181: argument is incompatible with corresponding format string conversion

For example when compiling with --strict, the following code:

unsigned long foo = 0x1234;
printf("%08X", foo);

results in the warning:

Warning: #181-D: argument is incompatible with corresponding format string conversion

To avoid the warning, the code could be rewritten as follows:

unsigned long foo = 0x1234;
printf("%0lX", foo);

or alternatively:

unsigned int foo = 0x1234;
printf("%0X", foo);

%0X can be used for char, short or int. Use lX for a long integer, even though both ints and longs are 32-bits wide on an ARM processor.

182: could not open source file <entity> (no directories in search list)
183: type of cast must be integral
184: type of cast must be arithmetic or pointer
185: dynamic initialization in unreachable code
186: pointless comparison of unsigned integer with zero

For example:

unsigned short foo;
if (foo<0) printf("This never happens");

gives a warning that the comparison between an unsigned value, for example char or int, with zero always evaluates to false.

187: use of "=" where "==" may have been intended

For example:

int main(void)
{
  int a;
  const int b =1;
  if (a=b);
}

If the assignment in the if statement is intentional, then you can avoid the warning by adding an explicit comparison. For example, change the if statement in the example to:

  if ((a=b)!=0);
188: enumerated type mixed with another type
189: error while writing <entity> file
190: invalid intermediate language file
191: type qualifier is meaningless on cast type

The C specification states that a cast does not yield an lvalue, so a cast to a qualified type has the same effect as a cast to the unqualified version of the type. This warning is to inform you that the type qualifier has no effect, although the code is still legal. The warning is suppressible with --diag_suppress 191.

For example:

val2 = (const float)val1;

is equivalent to:

val2 = (float)val1;
192: unrecognized character escape sequence

This error is commonly associated with the attempted use of non-ASCII character sets, such as 16-bit Unicode characters. The compiler supports multibyte character sets, such as Unicode. Source files are compiled according to the selected locale of that machine. It is possible to use Escape processing (as recommended by Kernighan and Ritchie, section A2.5.2) to encode specific values instead.

For example:

char *p = "\x12\x34\x56\x78"; // 12 34 56 78

In character and string escapes, if the character following the \ has no special meaning, the value of the escape is the character itself, for example, \s is the same as s and the warning is given.

193: zero used for undefined preprocessing identifier <entity>
194: expected an asm string
195: an asm function must be prototyped
196: an asm function may not have an ellipsis
219: error while deleting file <entity>
220: integral value does not fit in required floating-point type
221: floating-point value does not fit in required floating-point type
222: floating-point operation result is out of range
223: function <entity> declared implicitly

This is a common warning that occurs where there is no prototype for a function.

For example:

void foo(void)
{
  printf("foo");
}

To fix this, add #include <stdio.h> to include the prototype for printf().

For ANSI C, you can suppress this warning with --diag_suppress 223. This is useful when compiling old-style C in ANSI C mode.

224: the format string requires additional arguments
225: the format string ends before this argument
226: invalid format string conversion
227: macro recursion
228: trailing comma is nonstandard
229: bit field cannot contain all values of the enumerated type
230: nonstandard type for a bit field

In strict ANSI C90, the only types permitted for a bit field are int, signed int, and unsigned int.

For example:

struct X {
   char y:2;
};
231: declaration is not visible outside of function
232: old-fashioned typedef of "void" ignored
233: left operand is not a struct or union containing this field
234: pointer does not point to struct or union containing this field
235: variable <entity> was declared with a never-completed type
236: controlling expression is constant
237: selector expression is constant
238: invalid specifier on a parameter
239: invalid specifier outside a class declaration
240: duplicate specifier in declaration
241: a union is not allowed to have a base class
242: multiple access control specifiers are not allowed
243: class or struct definition is missing
244: qualified name is not a member of class <type> or its base classes
245: a nonstatic member reference must be relative to a specific object
246: a nonstatic data member may not be defined outside its class
247: <entity> has already been defined

A typical example of this is where a variable name has been used more than once.

This can sometimes occur when compiling legacy code that relies on tentative declarations. Tentative declarations permit a variable to be declared and initialized as separate statements such as:

int a;
int a = 1;

Tentative declarations are permitted by default for C code, but produce an error with C++ code.

248: pointer to reference is not allowed
249: reference to reference is not allowed
250: reference to void is not allowed
251: array of reference is not allowed
252: reference <entity> requires an initializer
253: expected a ","
254: type name is not allowed

This occurs when a typedef name is being used directly in an expression, for example:

typedef int footype;
int x = footype; // reports Error: #254: type name is not allowed

To fix this, first create an instance of that type, for example, a variable of the new type:

typedef int footype;
footype bar = 1;
int x = bar;
255: type definition is not allowed
256: invalid redeclaration of type name <entity>
257: const <entity> requires an initializer
258: "this" may only be used inside a nonstatic member function
259: constant value is not known
260: explicit type is missing ("int" assumed)
261: access control not specified (<entity> by default)
262: not a class or struct name
263: duplicate base class name
264: invalid base class
265: <entity> is inaccessible

For C++ only, the --diag_warning 265 option downgrades access control errors to warnings.

For example:

class A { void f() {}; }; // private member
A a;
void g() { a.f(); } // erroneous access

results in the message:

Error: #265-D: function "A::f" is inaccessible
266: <entity> is ambiguous
267: old-style parameter list (anachronism)
268: declaration may not appear after executable statement in block
269: conversion to inaccessible base class <type> is not allowed
274: improperly terminated macro invocation
276: name followed by "::" must be a class or namespace name
277: invalid friend declaration
278: a constructor or destructor may not return a value
279: invalid destructor declaration
280: declaration of a member with the same name as its class
281: global-scope qualifier (leading "::") is not allowed
282: the global scope has no <entity>
283: qualified name is not allowed
284: NULL reference is not allowed
285: initialization with "<...>" is not allowed for object of type <type>
286: base class <type> is ambiguous
287: derived class <type> contains more than one instance of class <type>
288: cannot convert pointer to base class <type> to pointer to derived class <type> -- base class is virtual
289: no instance of constructor <entity> matches the argument list
290: copy constructor for class <type> is ambiguous
291: no default constructor exists for class <type>
292: <entity> is not a nonstatic data member or base class of class <type>
293: indirect nonvirtual base class is not allowed
294: invalid union member -- class <type> has a disallowed member function
296: invalid use of non-lvalue array
297: expected an operator
298: inherited member is not allowed
299: cannot determine which instance of <entity> is intended
300: a pointer to a bound function may only be used to call the function
301: typedef name has already been declared (with same type)
302: <entity> has already been defined
304: no instance of <entity> matches the argument list
305: type definition is not allowed in function return type declaration
306: default argument not at end of parameter list
307: redefinition of default argument
308: more than one instance of <entity> matches the argument list:
309: more than one instance of constructor <entity> matches the argument list:
310: default argument of type <type> is incompatible with parameter of type <type>
311: cannot overload functions distinguished by return type alone
312: no suitable user-defined conversion from <type> to <type> exists
314: only nonstatic member functions may be virtual
315: the object has type qualifiers that are not compatible with the member function
316: program too large to compile (too many virtual functions)
317: return type is not identical to nor covariant with return type <type> of overridden virtual function <entity>
318: override of virtual <entity> is ambiguous
319: pure specifier ("= 0") allowed only on virtual functions
320: badly-formed pure specifier (only "= 0" is allowed)
321: data member initializer is not allowed
322: object of abstract class type <type> is not allowed:
323: function returning abstract class <type> is not allowed:
324: duplicate friend declaration
325: inline specifier allowed on function declarations only
326: "inline" is not allowed
327: invalid storage class for an inline function
328: invalid storage class for a class member
329: local class member <entity> requires a definition
330: <entity> is inaccessible
332: class <type> has no copy constructor to copy a const object
333: defining an implicitly declared member function is not allowed
334: class <type> has no suitable copy constructor
335: linkage specification is not allowed
336: unknown external linkage specification
337: linkage specification is incompatible with previous <entity>

If the linkage for a function is redeclared with an incompatible specification to a previous declaration this error is produced.

For example:

int foo(void);
int bar(void)
{
  int x;
  x = foo();
  return x;
}
extern "C" int foo(void)
{
  return 0;
}

results in the message:

Error: #337: linkage specification is incompatible with previous "foo" (declared at line 1)
338: more than one instance of overloaded function <entity> has "C" linkage
339: class <type> has more than one default constructor
340: value copied to temporary, reference to temporary used
341: "operator<entity>" must be a member function
342: operator may not be a static member function
343: no arguments allowed on user-defined conversion
344: too many parameters for this operator function
345: too few parameters for this operator function
346: nonmember operator requires a parameter with class type
347: default argument is not allowed
348: more than one user-defined conversion from <type> to <type> applies:
349: no operator <entity> matches these operands
350: more than one operator <entity> matches these operands:
351: first parameter of allocation function must be of type "size_t"
352: allocation function requires "void *" return type
353: deallocation function requires "void" return type
354: first parameter of deallocation function must be of type "void *"
356: type must be an object type
357: base class <type> has already been initialized
358: base class name required -- <type> assumed (anachronism)
359: <entity> has already been initialized
360: name of member or base class is missing
361: assignment to "this" (anachronism)
362: "overload" keyword used (anachronism)
363: invalid anonymous union -- nonpublic member is not allowed
364: invalid anonymous union -- member function is not allowed
365: anonymous union at global or namespace scope must be declared static
366: <entity> provides no initializer for:
367: implicitly generated constructor for class <type> cannot initialize:
368: <entity> defines no constructor to initialize the following:

This indicates that you have a const structure or a structure containing a const. It is issued as a friendly warning to assist with error 369. This can safely be ignored providing that the const members of structures are appropriately initialized.

369: <entity> has an uninitialized const or reference member

This indicates that you have an instance of a const structure or a structure containing a const that has not been correctly initialized. You must either initialize it correctly for every instance or provide a constructor to initialize it.

370: <entity> has an uninitialized const field
371: class <type> has no assignment operator to copy a const object
372: class <type> has no suitable assignment operator
373: ambiguous assignment operator for class <type>
375: declaration requires a typedef name
377: "virtual" is not allowed
378: "static" is not allowed
379: cast of bound function to normal function pointer (anachronism)
380: expression must have pointer-to-member type
381: extra ";" ignored

In C, this can be caused by an unexpected semicolon at the end of a declaration line, for example:

int x;;

This might occur inadvertently when using macros.

Similarly, in C++, this might be caused by constructions like:

class X { ... } ; ;

This probably resulted from some macro usage, for example:

#define M(c) class c { ... } ;
M(X);

The extra semicolon is illegal because empty declarations are illegal.

382: in-class initializer for nonstatic member is nonstandard
384: no instance of overloaded <entity> matches the argument list
386: no instance of <entity> matches the required type
387: delete array size expression used (anachronism)
389: a cast to abstract class <type> is not allowed:
390: function "main" may not be called or have its address taken
391: a new-initializer may not be specified for an array
392: member function <entity> may not be redeclared outside its class
393: pointer to incomplete class type is not allowed
394: reference to local variable of enclosing function is not allowed
395: single-argument function used for postfix <entity> (anachronism)
397: implicitly generated assignment operator cannot copy:
398: cast to array type is nonstandard (treated as cast to <type>)
399: <entity> has an operator new<entity>() but no default operator delete<entity>()
400: <entity> has a default operator delete<entity>() but no operator new<entity>()
401: destructor for base class <entity> is not virtual
403: invalid redeclaration of member <entity>
404: function "main" may not be declared inline
405: member function with the same name as its class must be a constructor
406: using nested <entity> (anachronism)
407: a destructor may not have parameters
408: copy constructor for class <type> may not have a parameter of type <type>
409: <entity> returns incomplete type <type>
410: protected <entity> is not accessible through a <type> pointer or object
411: a parameter is not allowed
412: an "asm" declaration is not allowed here
413: no suitable conversion function from <type> to <type> exists
414: delete of pointer to incomplete class
415: no suitable constructor exists to convert from <type> to <type>
416: more than one constructor applies to convert from <type> to <type>:
417: more than one conversion function from <type> to <type> applies:
418: more than one conversion function from <type> to a built-in type applies:
424: a constructor or destructor may not have its address taken
426: temporary used for initial value of reference to non-const (anachronism)
427: qualified name is not allowed in member declaration
428: enumerated type mixed with another type (anachronism)
429: the size of an array in "new" must be non-negative
430: returning reference to local temporary
432: \"enum\" declaration is not allowed
433: qualifiers dropped in binding reference of type <type> to initializer of type <type>
434: a reference of type <type> (not const-qualified) cannot be initialized with a value of type <type>
435: a pointer to function may not be deleted
436: conversion function must be a nonstatic member function
437: a template declaration is not allowed here
438: expected a "<"
439: expected a ">"
440: template parameter declaration is missing
441: argument list for <entity> is missing
442: too few arguments for <entity>
443: too many arguments for <entity>
445: %n1 is not used in declaring the parameter types of %n2
446: two nested types have the same name: %no1 and %nod2 (cfront compatibility)
447: global %no1 was declared after nested %nod2 (cfront compatibility)
449: more than one instance of %n matches the required type
450: the type "long long" is nonstandard
451: omission of <entity> is nonstandard
452: return type may not be specified on a conversion function
456: excessive recursion at instantiation of <entity>
457: <entity> is not a function or static data member
458: argument of type <type> is incompatible with template parameter of type <type>
459: initialization requiring a temporary or conversion is not allowed
460: declaration of <entity> hides function parameter
461: initial value of reference to non-const must be an lvalue
463: "template" is not allowed
464: <type> is not a class template
466: \"main\" is not a valid name for a function template
467: invalid reference to <entity> (union/nonunion mismatch)
468: a template argument may not reference a local type
469: tag kind of <entity> is incompatible with declaration of <entity>
470: the global scope has no tag named <entity>
471: <entity> has no tag member named <entity>
472: member function typedef (allowed for cfront compatibility)
473: <entity> may be used only in pointer-to-member declaration
475: a template argument may not reference a non-external entity
476: name followed by "::~" must be a class name or a type name
478: type used as destructor name does not match type <type>
479: <entity> redeclared "inline" after being called
481: invalid storage class for a template declaration
482: %nd is an inaccessible type (allowed for cfront compatibility)
484: invalid explicit instantiation declaration
485: <entity> is not an entity that can be instantiated
486: compiler generated <entity> cannot be explicitly instantiated
487: inline <entity> cannot be explicitly instantiated
489: %n cannot be instantiated -- no template definition was supplied
490: <entity> cannot be instantiated -- it has been explicitly specialized
493: no instance of %n matches the specified type
494: declaring a void parameter list with a typedef is nonstandard

When the compiler is not in C99 mode, this error is produced by a function declaration f(V) where V is a void type.

Using a parameter that is a typedef to void to mean that the function has no parameters is only permitted in C99 mode.

495: global %n1 used instead of %n2 (cfront compatibility)
496: template parameter <entity> may not be redeclared in this scope
497: declaration of <entity> hides template parameter
498: template argument list must match the parameter list
500: extra parameter of postfix \"operator%s\" must be of type \"int\"
501: an operator name must be declared as a function
502: operator name is not allowed
503: <entity> cannot be specialized in the current scope
504: nonstandard form for taking the address of a member function

The C++ standard requires that a pointer to a member be named using a qualifier and an ampersand character, for example &A::f.

505: too few template parameters -- does not match previous declaration (declared <entity>)
506: too many template parameters -- does not match previous declaration (declared <entity>)
507: function template for operator delete(void *) is not allowed
508: class template and template parameter may not have the same name
510: a template argument may not reference an unnamed type
511: this operation on an enumerated type requires an applicable user-defined operator function
512: type qualifier on a reference type is not allowed
513: a value of type <type> cannot be assigned to an entity of type <type>
514: pointless comparison of unsigned integer with a negative constant
515: cannot convert to incomplete class <type>
516: const object requires an initializer
517: object has an uninitialized const or reference member
518: nonstandard preprocessing directive
519: <entity> may not have a template argument list
520: initialization with "<...>" expected for aggregate object
521: pointer-to-member selection class types are incompatible (<type> and <type>)
522: pointless friend declaration
523: \".\" used in place of \"::\" to form a qualified name
524: non-const function called for const object (anachronism)
525: a dependent statement may not be a declaration
526: a parameter may not have void type

For example:

void foo(void a) { }
529: this operator is not allowed in a template argument expression
530: try block requires at least one handler
531: handler requires an exception declaration
532: handler is masked by default handler
533: handler is potentially masked by previous handler for type <type>
534: use of a local type to specify an exception
535: redundant type in exception specification
536: exception specification is incompatible with that of previous <entity>
540: support for exception handling is disabled; use --exceptions to enable
541: allowing all exceptions is incompatible with previous <entity>
542: could not create instantiation request file <entity>
543: non-arithmetic operation not allowed in nontype template argument
544: use of a local type to declare a nonlocal variable
545: use of a local type to declare a function
546: transfer of control bypasses initialization of:

Example:

int main(void){
   int choice = 1;
   int z =1;
   switch(choice)
   {
     case 1:
       int y = 1;
       z = y + z;
       break;
     case 2:
     break;
   }
   return 0;

In this example, y is an initialized variable that is in scope but is unused in the other cases. A transfer from the condition of the switch statement to a case label, bypassing the initialization of y, conflicts with the C++ Standard.

The usual way to fix this is to enclose the case that declares y in braces. The following code limits the scope of y to case 1, so an attempt to use it elsewhere causes an error:

case 1:   {
  int y = 1;
  z = y + z;
}
break;

Because y is a Plain Old Data (POD) type, an alternative is to not use initialization:

case 1:
 int y;
 y = 1;
 z = y + z;
 break;

This approach has the disadvantage that if code outside of case 1 uses y, and accidentally expects it to have the value assigned in case 1, no warning is given.

548: transfer of control into an exception handler
549: <entity> is used before its value is set
550: <entity> was set but never used
551: <entity> cannot be defined in the current scope
552: exception specification is not allowed
553: external/internal linkage conflict for <entity>
554: <entity> will not be called for implicit or explicit conversions
555: tag kind of <entity> is incompatible with template parameter of type <type>
556: function template for operator new(size_t) is not allowed
558: pointer to member of type <type> is not allowed
559: ellipsis is not allowed in operator function parameter list
560: <entity> is reserved for future use as a keyword
561: invalid macro definition:
562: invalid macro undefinition:
563: invalid <entity> output file <filename>
564: cannot open <entity> output file <filename>: <reason>
565: IL file name must be specified if input is
570: error in debug option argument
571: invalid option:
572: back end requires name of IL file
573: could not open IL file
574: invalid number:
575: incorrect host CPU id
576: invalid instantiation mode:
578: invalid error limit:
585: virtual function tables can only be suppressed when compiling C++
586: anachronism option can be used only when compiling C++
587: instantiation mode option can be used only when compiling C++
588: automatic instantiation mode can be used only when compiling C++
589: implicit template inclusion mode can be used only when compiling C++
590: exception handling option can be used only when compiling C++
591: strict mode is incompatible with K&R mode
592: strict mode is incompatible with cfront mode
593: missing source file name
594: output files may not be specified when compiling several input files
595: too many arguments on command line
596: an output file was specified, but none is needed
597: IL display requires name of IL file
598: a template parameter may not have void type
599: excessive recursive instantiation of %n due to instantiate-all mode
600: strict mode is incompatible with allowing anachronisms
601: a throw expression may not have void type
602: local instantiation mode is incompatible with automatic instantiation
603: parameter of abstract class type <type> is not allowed:
604: array of abstract class <type> is not allowed:
605: floating-point template parameter is nonstandard
606: this pragma must immediately precede a declaration
607: this pragma must immediately precede a statement
608: this pragma must immediately precede a declaration or statement
609: this kind of pragma may not be used here
611: overloaded virtual function <entity> is only partially overridden in <entity>
612: specific definition of inline template function must precede its first use
613: invalid error tag in diagnostic control option:
614: invalid error number in diagnostic control option:
615: parameter type involves pointer to array of unknown bound
616: parameter type involves reference to array of unknown bound
617: pointer-to-member-function cast to pointer to function
618: struct or union declares no named members
619: nonstandard unnamed field
620: nonstandard unnamed member
624: <entity> is not a type name
625: cannot open precompiled header input file <entity>: <reason>
626: precompiled header file <entity> is either invalid or not generated by this version of the compiler
627: precompiled header file <entity> was not generated in this directory
628: header files used to generate precompiled header file <entity> have changed
629: the command line options do not match those used when precompiled header file <entity> was created
630: the initial sequence of preprocessing directives is not compatible with those of precompiled header file <entity>
631: unable to obtain mapped memory for <entity>: <reason>

This can occur if you are trying to use a large Precompiled Header (PCH), and you have a size limitation on the TMP directory that the ARM Compiler toolchain uses. A possible workaround is to remove the TMP environment variable. This forces the tools to create temporary files in the current working directory.

See the following in the Getting Started Guide:

TMP and TMPDIR environment variables for temporary file directories.

See the following in the armcc User Guide:

Precompiled Header (PCH) files.

632: "<entity>": using precompiled header file "<entity>"
633: "<entity>": creating precompiled header file "<entity>"
634: memory usage conflict with precompiled header file <entity>

This can occur if a PCH file cannot be mapped back into the build because the required parts of the address space of the compiler are not available.

See also error 631.

635: invalid PCH memory size
636: PCH options must appear first in the command line
637: insufficient memory for PCH memory allocation
638: precompiled header files may not be used when compiling several input files
639: insufficient preallocated memory for generation of precompiled header file (<entity> bytes required)
640: very large entity in program prevents generation of precompiled header file
641: <entity> is not a valid directory
642: cannot build temporary file name
643: "restrict" is not allowed
644: a pointer or reference to function type may not be qualified by "restrict"
646: a calling convention modifier may not be specified here
647: conflicting calling convention modifiers
648: strict mode is incompatible with Microsoft mode
649: cfront mode is incompatible with Microsoft mode
650: calling convention specified here is ignored
651: a calling convention may not be followed by a nested declarator
652: calling convention is ignored for this type
654: declaration modifiers are incompatible with previous declaration
655: the modifier <entity> is not allowed on this declaration
656: transfer of control into a try block
657: inline specification is incompatible with previous <entity>
658: closing brace of template definition not found
659: wchar_t keyword option can be used only when compiling C++
660: invalid packing alignment value
661: expected an integer constant
662: call of pure virtual function

A pure virtual function is being called, for example:

struct T { T(); virtual void pvfn() = 0; };
                   // a pure virtual function
T::T() { pvfn(); } // warning given here

By default, calling a pure virtual function results in:

  1. a call to the library function __cxa_pure_virtual()

  2. the __cxa_pure_virtual() function raising the signal SIGPVFN

  3. the signal being trapped by the default_signal_handler

  4. the handler displaying Pure virtual fn called on the console using semihosting.

See the following in the armcc User Guide:

Calling a pure virtual function.

663: invalid source file identifier string
664: a class template cannot be defined in a friend declaration
665: "asm" is not allowed
666: "asm" must be used with a function definition
667: "asm" function is nonstandard
668: ellipsis with no explicit parameters is nonstandard
669: "&..." is nonstandard
670: invalid use of "&..."
672: temporary used for initial value of reference to const volatile (anachronism)
673: a reference of type <entity> cannot be initialized with a value of type <entity>
674: initial value of reference to const volatile must be an lvalue
675: SVR4 C compatibility option can be used only when compiling ANSI C
676: using out-of-scope declaration of <entity>
677: strict mode is incompatible with SVR4 C mode
678: call of <entity> cannot be inlined
679: <entity> cannot be inlined
680: invalid PCH directory:
681: expected __except or __finally
682: a __leave statement may only be used within a __try
688: <entity> not found on pack alignment stack
689: empty pack alignment stack
690: RTTI option can be used only when compiling C++
691: <entity>, required for copy that was eliminated, is inaccessible
692: <entity>, required for copy that was eliminated, is not callable because reference parameter cannot be bound to rvalue
693: <typeinfo> must be included before typeid is used
694: <entity> cannot cast away const or other type qualifiers
695: the type in a dynamic_cast must be a pointer or reference to a complete class type, or void *
696: the operand of a pointer dynamic_cast must be a pointer to a complete class type
697: the operand of a reference dynamic_cast must be an lvalue of a complete class type
698: the operand of a runtime dynamic_cast must have a polymorphic class type
699: bool option can be used only when compiling C++
701: an array type is not allowed here
702: expected an "="
703: expected a declarator in condition declaration
704: <entity>, declared in condition, may not be redeclared in this scope
705: default template arguments are not allowed for function templates
706: expected a "," or ">"
707: expected a template parameter list
708: incrementing a bool value is deprecated
709: bool type is not allowed
710: offset of base class <entity> within class <entity> is too large
711: expression must have bool type (or be convertible to bool)
712: array new and delete option can be used only when compiling C++
713: <entity> is not a variable name
714: __based modifier is not allowed here
715: __based does not precede a pointer operator, __based ignored
716: variable in __based modifier must have pointer type
717: the type in a const_cast must be a pointer, reference, or pointer to member to an object type
718: a const_cast can only adjust type qualifiers; it cannot change the underlying type
719: mutable is not allowed
720: redeclaration of <entity> is not allowed to alter its access
722: use of alternative token "<:" appears to be unintended
723: use of alternative token "%:" appears to be unintended
724: namespace definition is not allowed
725: name must be a namespace name
726: namespace alias definition is not allowed
727: namespace-qualified name is required
728: a namespace name is not allowed
729: invalid combination of DLL attributes
730: <entity> is not a class template
731: array with incomplete element type is nonstandard
732: allocation operator may not be declared in a namespace
733: deallocation operator may not be declared in a namespace
734: <entity> conflicts with using-declaration of <entity>
735: using-declaration of <entity> conflicts with <entity>
736: namespaces option can be used only when compiling C++
737: using-declaration ignored -- it refers to the current namespace
738: a class-qualified name is required
742: %n has no actual member %sq
744: incompatible memory attributes specified
745: memory attribute ignored
746: memory attribute may not be followed by a nested declarator
747: memory attribute specified more than once
748: calling convention specified more than once
749: a type qualifier is not allowed
750: <entity> was used before its template was declared
751: static and nonstatic member functions with same parameter types cannot be overloaded
752: no prior declaration of <entity>
753: a template-id is not allowed
754: a class-qualified name is not allowed
755: <entity> may not be redeclared in the current scope
756: qualified name is not allowed in namespace member declaration
757: <entity> is not a type name
758: explicit instantiation is not allowed in the current scope
759: <entity> cannot be explicitly instantiated in the current scope
760: <entity> explicitly instantiated more than once
761: typename may only be used within a template
762: special_subscript_cost option can be used only when compiling C++
763: typename option can be used only when compiling C++
764: implicit typename option can be used only when compiling C++
765: nonstandard character at start of object-like macro definition
766: exception specification for virtual <entity> is incompatible with that of overridden <entity>
767: conversion from pointer to smaller integer
768: exception specification for implicitly declared virtual <entity> is incompatible with that of overridden <entity>
769: <entity>, implicitly called from <entity>p2, is ambiguous
770: option "explicit" can be used only when compiling C++
771: "explicit" is not allowed
772: declaration conflicts with <entity> (reserved class name)
773: only "()" is allowed as initializer for array <entity>
774: "virtual" is not allowed in a function template declaration
775: invalid anonymous union -- class member template is not allowed
776: template nesting depth does not match the previous declaration of <entity>
777: this declaration cannot have multiple "template <...>" clauses
778: option to control the for-init scope can be used only when compiling C++
779: <entity>, declared in for-loop initialization, may not be redeclared in this scope
780: reference is to <entity> -- under old for-init scoping rules it would have been <entity>
781: option to control warnings on for-init differences can be used only when compiling C++
782: definition of virtual <entity> is required here
783: empty comment interpreted as token-pasting operator "##"
784: a storage class is not allowed in a friend declaration
785: template parameter list for <entity> is not allowed in this declaration
786: <entity> is not a valid member class or function template
787: not a valid member class or function template declaration
788: a template declaration containing a template parameter list may not be followed by an explicit specialization declaration
789: explicit specialization of <entity> must precede the first use of <entity>
790: explicit specialization is not allowed in the current scope
791: partial specialization of <entity> is not allowed
792: <entity> is not an entity that can be explicitly specialized
793: explicit specialization of <entity> must precede its first use
794: template parameter <entity> may not be used in an elaborated type specifier
795: specializing <entity> requires "template<>" syntax
798: option "old_specializations" can be used only when compiling C++
799: specializing <entity> without "template<>" syntax is nonstandard
800: this declaration may not have extern "C" linkage
801: <entity> is not a class or function template name in the current scope
802: specifying a default argument when redeclaring an unreferenced function template is nonstandard
803: specifying a default argument when redeclaring an already referenced function template is not allowed
804: cannot convert pointer to member of base class <type> to pointer to member of derived class <type> -- base class is virtual
805: exception specification is incompatible with that of <entity><entity>
806: allowing all exceptions is incompatible with <entity>
807: unexpected end of default argument expression
808: default-initialization of reference is not allowed
809: uninitialized <entity> has a const member
810: uninitialized base class <type> has a const member
811: const <entity> requires an initializer -- class <type> has no user-provided default constructor
812: const object requires an initializer -- class <type> has no user-provided default constructor
813: option \"implicit_extern_c_type_conversion\" can be used only when compiling C++
814: strict mode is incompatible with long preserving rules
815: type qualifier on return type is meaningless

For example:

__packed void foo( void ) { }

The __packed qualifier is ignored because the return type cannot be __packed.

816: in a function definition a type qualifier on a "void" return type is not allowed
817: static data member declaration is not allowed in this class
818: template instantiation resulted in an invalid function declaration
819: "..." is not allowed
820: option \"extern_inline\" can be used only when compiling C++
821: extern inline <entity> was referenced but not defined
822: invalid destructor name for type <type>
824: destructor reference is ambiguous -- both <entity> and <entity> could be used
825: virtual inline <entity> was never defined
826: <entity> was never referenced
827: only one member of a union may be specified in a constructor initializer list
828: support for "new[]" and "delete[]" is disabled
829: "double" used for "long double" in generated C code
830: <entity> has no corresponding operator delete<entity> (to be called if an exception is thrown during initialization of an allocated object)
831: support for placement delete is disabled
832: no appropriate operator delete is visible
833: pointer or reference to incomplete type is not allowed
834: invalid partial specialization -- <entity> is already fully specialized
835: incompatible exception specifications
836: returning reference to local variable
837: omission of explicit type is nonstandard ("int" assumed)

A function has been declared or defined with no return type.

Example, with the code:

foo(void){
    int a;
}

an int result is assumed.

If you want it to return no result, use void as the return type. This is widespread in old-style C.

The --diag_suppress 837 option suppresses this warning.

See also message number 938, that is a special case of this message for main().

838: more than one partial specialization matches the template argument list of <entity>
840: a template argument list is not allowed in a declaration of a primary template
841: partial specializations may not have default template arguments
842: <entity>1 is not used in or cannot be deduced from the template argument list of <entity>
844: the template argument list of the partial specialization includes a nontype argument whose type depends on a template parameter
845: this partial specialization would have been used to instantiate <entity>
846: this partial specialization would have made the instantiation of <entity> ambiguous
847: expression must have integral or enum type
848: expression must have arithmetic or enum type
849: expression must have arithmetic, enum, or pointer type
850: type of cast must be integral or enum
851: type of cast must be arithmetic, enum, or pointer
852: expression must be a pointer to a complete object type
854: a partial specialization nontype argument must be the name of a nontype parameter or a constant
855: return type is not identical to return type <type> of overridden virtual function <entity>
856: option "guiding_decls" can be used only when compiling C++
857: a partial specialization of a class template must be declared in the namespace of which it is a member
858: <entity> is a pure virtual function
859: pure virtual <entity> has no overrider
860: __declspec attributes ignored
861: invalid character in input line
862: function returns incomplete type <type>
863: effect of this "#pragma pack" directive is local to <entity>
864: <entity> is not a template
865: a friend declaration may not declare a partial specialization
866: exception specification ignored
867: declaration of "size_t" does not match the expected type <type>
868: space required between adjacent ">" delimiters of nested template argument lists (">>" is the right shift operator)
869: could not set locale <entity> to allow processing of multibyte characters
870: invalid multibyte character sequence
871: template instantiation resulted in unexpected function type of <type> (the meaning of a name may have changed since the template declaration -- the type of the template is <type>)
872: ambiguous guiding declaration -- more than one function template <entity> matches type <type>
873: non-integral operation not allowed in nontype template argument
874: option \"embedded_c++\" can be used only when compiling C++
875: Embedded C++ does not support templates
876: Embedded C++ does not support exception handling
877: Embedded C++ does not support namespaces
878: Embedded C++ does not support run-time type information
879: Embedded C++ does not support the new cast syntax
880: Embedded C++ does not support using-declarations
881: Embedded C++ does not support \"mutable\"
882: Embedded C++ does not support multiple or virtual inheritance
883: invalid Microsoft version number:
884: pointer-to-member representation <entity> has already been set for <entity>
885: <type> cannot be used to designate constructor for <type>
886: invalid suffix on integral constant
887: operand of __uuidof must have a class or enum type for which __declspec(uuid(\"...\")) has been specified
888: invalid GUID string in __declspec(uuid(\"...\"))
889: option \"vla\" can be used only when compiling C
890: variable length array with unspecified bound is not allowed
891: an explicit template argument list is not allowed on this declaration
892: an entity with linkage cannot have a type involving a variable length array
893: a variable length array cannot have static storage duration
894: <entity> is not a template
896: expected a template argument
898: nonmember operator requires a parameter with class or enum type
899: option \"enum_overloading\" can be used only when compiling C++
901: qualifier of destructor name %t1 does not match type %t2
902: type qualifier ignored
903: option \"nonstd_qualifier_deduction\" can be used only when compiling C++
904: a function declared \"dllimport\" may not be defined
905: incorrect property specification; correct form is __declspec(property(get=name1,put=name2))
906: property has already been specified
907: __declspec(property) is not allowed on this declaration
908: member is declared with __declspec(property), but no \"get\" function was specified
909: the __declspec(property) \"get\" function %sq is missing
910: member is declared with __declspec(property), but no \"put\" function was specified
911: the __declspec(property) \"put\" function %sq is missing
912: ambiguous class member reference -- <entity> used in preference to <entity>
916: cannot convert pointer to member of derived class <type> to pointer to member of base class <type> -- base class is virtual
917: invalid directory for instantiation files:
918: option \"one_instantiation_per_object\" can be used only when compiling C++
921: an instantiation information file name may not be specified when compiling several input files
922: option \"one_instantiation_per_object\" may not be used when compiling several input files
923: more than one command line option matches the abbreviation "--<entity>":
925: type qualifiers on function types are ignored
927: late/early tiebreaker option can be used only when compiling C++
928: incorrect use of va_start

This error can be generated if you have references to older ARM® tools on your PATH environment variable, and for the following ARM environment variables:

  • ARMCONF
  • ARMDLL
  • ARMHOME
  • ARMINC
  • ARMLIB

Remove these environment variables and any references to older tools on your PATH, then repeat the compilation.

The following example shows the use of va_start():

#include <stdio.h>
#include <stdarg.h>

void error(char *fmt, ...)
{
	va_list args;

	va_start(args, fmt);
	vprintf(format, args);
	va_end(args);
}
929: incorrect use of va_arg
930: incorrect use of va_end
931: pending instantiations option can be used only when compiling C++
932: invalid directory for #import files:
933: an import directory can be specified only in Microsoft mode
934: a member with reference type is not allowed in a union
935: "typedef" may not be specified here
936: redeclaration of <entity> alters its access
937: a class or namespace qualified name is required
938: return type "int" omitted in declaration of function "main"

main() has been declared or defined with no return type.

For example:

main(void){
  int a;
}

is reported as an error by the compiler if compiled with --strict.

If you want it to return no result, use void as the return type. This is widespread in old-style C.

For ANSI C, the --diag_suppress 938 option suppresses this warning.

For C++, this always results in an error.

See also message number 837 for more general cases.

939: pointer-to-member representation <entity> is too restrictive for <entity>
940: missing return statement at end of non-void <entity>

A return type has been defined for a function, but no value is returned.

Example:

int foo(int a)
{
  printf("Hello %d", a);
}
941: duplicate using-declaration of <entity> ignored
942: enum bit-fields are always unsigned, but enum <type> includes negative enumerator
943: option "class_name_injection" can be used only when compiling C++
944: option "arg_dep_lookup" can be used only when compiling C++
945: option "friend_injection" can be used only when compiling C++
946: name following "template" must be a template
948: nonstandard local-class friend declaration -- no prior declaration in the enclosing scope
949: specifying a default argument on this declaration is nonstandard
950: option \"nonstd_using_decl\" can be used only when compiling C++
951: return type of function "main" must be "int"
952: a nontype template parameter may not have class type
953: a default template argument cannot be specified on the declaration of a member of a class template outside of its class
954: a return statement is not allowed in a handler of a function try block of a constructor
955: ordinary and extended designators cannot be combined in an initializer designation
956: the second subscript must not be smaller than the first
957: option \"designators\" can be used only when compiling C
958: option \"extended_designators\" can be used only when compiling C
959: declared size for bit field is larger than the size of the bit field type; truncated to <entity> bits
960: type used as constructor name does not match type <type>
961: use of a type with no linkage to declare a variable with linkage
962: use of a type with no linkage to declare a function
963: return type may not be specified on a constructor
964: return type may not be specified on a destructor
965: incorrectly formed universal character name
966: universal character name specifies an invalid character
967: a universal character name cannot designate a character in the basic character set
968: this universal character is not allowed in an identifier
969: the identifier __VA_ARGS__ can only appear in the replacement lists of variadic macros
970: the qualifier on this friend declaration is ignored
971: array range designators cannot be applied to dynamic initializers
972: property name cannot appear here
973: \"inline\" used as a function qualifier is ignored
974: option \"compound_literals\" can be used only when compiling C
975: a variable-length array type is not allowed
976: a compound literal is not allowed in an integral constant expression
977: a compound literal of type <type> is not allowed
978: a template friend declaration cannot be declared in a local class
979: ambiguous "?" operation: second operand of type <type> can be converted to third operand type <type>, and vice versa
980: call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type
982: there is more than one way an object of type <type> can be called for the argument list:
983: typedef name has already been declared (with similar type)
984: operator new and operator delete cannot be given internal linkage
985: storage class "mutable" is not allowed for anonymous unions
986: invalid precompiled header file
987: abstract class type <type> is not allowed as catch type:
988: a qualified function type cannot be used to declare a nonmember function or a static member function
989: a qualified function type cannot be used to declare a parameter
990: cannot create a pointer or reference to qualified function type
991: extra braces are nonstandard
992: invalid macro definition:

Incorrect use of -D on the compile line, for example, "-D##"

993: subtraction of pointer types <type> and <type> is nonstandard
994: an empty template parameter list is not allowed in a template template parameter declaration
995: expected "class"
996: the "class" keyword must be used when declaring a template template parameter
997: <entity> is hidden by <entity> -- virtual function override intended?
998: a qualified name is not allowed for a friend declaration that is a function definition
999: <entity> is not compatible with <entity>
1000: a storage class may not be specified here
1001: class member designated by a using-declaration must be visible in a direct base class
1003: Sun mode is incompatible with cfront mode
1004: strict mode is incompatible with Sun mode
1005: Sun mode is only allowed when compiling C++
1006: a template template parameter cannot have the same name as one of its template parameters
1007: recursive instantiation of default argument
1009: <entity> is not an entity that can be defined
1010: destructor name must be qualified
1011: friend class name may not be introduced with "typename"
1012: a using-declaration may not name a constructor or destructor
1013: a qualified friend template declaration must refer to a specific previously declared template
1014: invalid specifier in class template declaration
1015: argument is incompatible with formal parameter
1016: prefix form of ARM function qualifier not permitted in this position
1017: Duplicate ARM function qualifiers not permitted
1018: ARM function qualifiers not permitted on this declaration/definition

Examples of ARM function qualifiers are __svc, __pure, and __irq.

See the following in the armcc User Guide:

Keywords and operators.

1019: function qualifier <entity> not permitted on a non-static member function
1020: __irq functions must take no arguments
1021: __irq functions must return no result
1022: cannot have pointer nor reference to <entity> function
1023: __global_reg not allowed on this declaration
1024: invalid global register number; 1 to 8 allowed

An invalid register is being used in __global_reg.

Example:

__global_reg(786) int x;
1025 : __svc parameter <entity> is not within permitted range (0 to 0xffffff) for ARM SVC instruction

SVC numbers are limited to the range 0 to 0xffffff for ARM code, and 0 to 0xFF for Thumb code.

For standard semihosting SVCs, 0x123456 is used for ARM code and 0xAB is used for Thumb code.

1026: taking the address of a global register variable is not allowed
1027: __svc_indirect function must have arguments
1028: conflicting global register declaration with <entity>
1029: __packed ignored for non-pointer parameter
1030: <entity> <type> previously declared without __packed
1031: Definition of <type> in packed <type> must be __packed

The compiler faults a non-packed child structure contained in a packed parent structure. This includes the case where the substructure is an array.

For example:

typedef struct ChildStruct {
 int a;
 } ChildStruct;
typedef __packed struct ParentStruct {
   ChildStruct child[1];
 } ParentStruct;

results in the message:

Error: #1031: Definition of "ChildStruct" in packed "ParentStruct" must be __packed

See the following in the armcc User Guide:

__packed.

1032: Definition of nested anonymous <entity> in packed <type> must be __packed
1033: <entity> incompatible with function definition
1034: __irq functions must not be the target of a function call
1035: single-precision operand implicitly converted to double-precision
1037: __global_reg is not valid on this declaration
1038: invalid alignment specified; only integer powers of 2 allowed
1039: conflicting alignment declaration with <entity>
1040: under-alignment not allowed
1041: alignment for an auto object may not be larger than 8

For example:

int main(void){
  __align(16) int foo = 10;
}

__align is not permitted for a local variable foo, so the error is given.

See the following in the armcc User Guide:

__align.

1042: <entity> cannot be dynamically initialized when compiled position independent
1043: <entity> cannot be const because it contains a mutable member

For example:

struct foo { int a; mutable int b; };
extern const struct foo bar;

When the compiler is in ROPI or RWPI mode, it disallows const objects from containing mutable members.

The reason for this restriction is that in these modes, the compiler addresses read-only data differently from read-write data. It therefore must know whether an object is in the RO or RW data section. In the following example, this restriction means that bar cannot contain any mutable members and is therefore in the RO data section:

struct foo;
extern const struct foo bar;
const struct foo *get_foo()  { return &bar; }

See the following in the armcc User Guide:

--apcs=qualifier...qualifier.

1044: option "dep_name" can be used only when compiling C++
1045: loop in sequence of "operator->" functions starting at class <type>
1046: <entity> has no member class <entity>
1047: the global scope has no class named <entity>
1048: recursive instantiation of template default argument
1049: access declarations and using-declarations cannot appear in unions
1050: <entity> is not a class member
1051: nonstandard member constant declaration is not allowed
1052: option \"ignore_std\" can be used only when compiling C++
1053: option "parse_templates" can be used only when compiling C++
1054: option "dep_name" cannot be used with "no_parse_templates"
1055: language modes specified are incompatible
1056: invalid redeclaration of nested class
1057: type containing an unknown-size array is not allowed
1058: a variable with static storage duration cannot be defined within an inline function
1059: an entity with internal linkage cannot be referenced within an inline function with external linkage
1060: argument type <type> does not match this type-generic function macro
1062: friend declaration cannot add default arguments to previous declaration
1063: <entity> cannot be declared in this scope
1064: the reserved identifier <entity> may only be used inside a function
1065: this universal character cannot begin an identifier
1066: expected a string literal
1067: unrecognized STDC pragma
1068: expected \"ON\", \"OFF\", or \"DEFAULT\"
1069: a STDC pragma may only appear between declarations in the global scope or before any statements or declarations in a block scope
1070: incorrect use of va_copy
1071: <entity> can only be used with floating-point types
1072: complex type is not allowed
1073: invalid designator kind
1074: floating-point value cannot be represented exactly
1075: complex floating-point operation result is out of range
1076: conversion between real and imaginary yields zero
1077: an initializer cannot be specified for a flexible array member
1078: imaginary *= imaginary sets the left-hand operand to zero
1079: standard requires that <entity> be given a type by a subsequent declaration ("int" assumed)
1080: a definition is required for inline <entity>
1081: conversion from integer to smaller pointer
1082: a floating-point type must be included in the type specifier for a _Complex or _Imaginary type
1083: Inline assembler syntax error

In ARM Compiler 4.1p2 and earlier, this error can be generated when inline assembly code contains instructions that are not supported by the inline assembler (for example, the WFI instruction). In 4.1p3 and later, including all ARM Compiler 5 versions, the following error is raised instead:

1084: This instruction not permitted in inline assembler
1084: This instruction not permitted in inline assembler
1085: Missing operand
1086: Operand is wrong type
1087: Operand should be constant
1088: Wrong number of operands
1089: Invalid PSR operand
1090: Expected PSR operand
1091: Invalid shift specified
1092: Should be acc0
1093: Must be a modifiable lvalue
1094: Expected a register expression
1095: Expected a label or function name
1096: Instruction cannot be conditional
1097: Expected a [ or ]
1098: Expected a shift operation
1099: Unexpected ]
1100: Register specified shift not allowed
1101: Pre-Indexed addressing not allowed
1102: Post-Indexed addressing not allowed
1103: Writeback not allowed in the addressing mode
1104: Expected {
1105: Expected }
1106: Too many registers in register list
1107: Only ^ valid here
1108: Cannot mix virtual register and C/C++ expressions in register list
1109: Only virtual registers can be specified in a register range
1110: User mode register selection/CPSR update not supported in inline assembler. Use embedded assembler or out-of-line assembler
1111: Expected a coprocessor name
1112: Expected a coprocessor register name

These errors are given by the inline assembler if either of the following occurs:

  • the coprocessor number is accidentally omitted from an MCR or MRC instruction

  • an invalid coprocessor number or coprocessor register number has been given.

This is an example of correct use:

void foo()
{
  int reg0;
  __asm
  {
    MRC p15, 0, reg0, c1, c0, 0
  }
}
1113: Inline assembler not permitted when generating Thumb code
1114: this feature not supported on target architecture/processor

Example when compiled with armcc --cpu 4T:

int main(void) {
  int a,b,c;
  __asm {
  QADD a,b,c
  }
  return(a);
}

results in an error message because the saturated add instruction is only supported in ARMv5TE and later.

1115: Cannot assign to const operand
1116: Register list cannot be empty
1117: Unqualified virtual function not allowed
1118: Expected a newline
1119: Reference to static variable not allowed in __asm function
1120: Reference to static function not allowed in __asm function
1121: Pointer to data member not allowed in __asm function
1123: base class <type> is a virtual base class of <type>
1124: base class <type> is not virtual base class of <type>
1125: <entity> has no member function <entity>
1126: "__asm" is not allowed in this declaration
1127: Member initializer list not permitted for __asm constructors
1128: try block not permitted for __asm constructors
1129: Order of operands not compatible with previous compiler versions
1130: __align not permitted in typedef
1131: Non portable instruction (LDM with writeback and base in reg. list, final value of base unpredictable)
1132: Non portable instruction (STM with writeback and base not first in reg. list, stored value of base unpredictable)
1133: Expression operands not permitted with virtual base register
1134: literal treated as "long long"

The constant is too large to be represented in a signed long, and therefore has been treated as a (signed) long long.

For example:

int foo(unsigned int bar) 
{   return (bar == 2147483648); 
} 

gives a warning because 2147483648 is one greater than the maximum value permitted for a signed long. To eliminate the warning, if the constant should be treated as a (64-bit) long long type rather than a signed long, explicitly add an ll or LL suffix, or, if it should be treated as an unsigned integer, add a U suffix.

For example:

int foo(unsigned int bar) 
{ 
  return (bar == 2147483648U); 
} 

See the following in the armcc User Guide:

long long.

1135: literal treated as "unsigned long long"

The constant is too large to be represented in a signed long long, and therefore has been given type unsigned long long. See also error number 1134.

1137: Expected a comma
1138: Unexpected comma after this expression
1139: MRRC operation opcode must lie in range 0-15
1140: MCRR operation opcode must lie in range 0-15
1141: CDP operation opcode must lie in range 0-15
1142: MRC operation opcode must lie in range 0-7
1143: MCR operation opcode must lie in range 0-7
1144: opcode_2 must lie in range 0-7
1145: LDC/STC extra opcode must lie in range 0-255
1146: LDC/STC offset must lie in range -1020 to +1020 and be word aligned
1147: Constant operand out of range
1148: floating-point operator is not permitted with --fpu=none
1149: floating-point return type in function definition is not permitted with --fpu=none
1150: floating-point parameter type in function definition is not permitted with --fpu=none
1151: floating-point variable definition with initialiser is not permitted with --fpu=none
1152: polymorphic base classes need to be exported as well
1153: Cannot assign physical registers in this register list
1154: Can only specify an even-numbered physical register here
1155: Can only specify an assignment to a physical register here
1156: Can only specify an assignment from a physical register here
1157: Can only specify physical registers in a corrupted register list
1158: PSR operand not valid here
1159: Expected an unambiguous label or function name
1160: Calls to destructors for temporaries will overwrite the condition flags updated by this instruction
1161: Cannot directly modify the stack pointer SP (r13)
1162: Cannot directly modify the link register LR (r14)
1163: Cannot directly modify the program counter PC (r15)
1164: Offset must be word-aligned
1165: types cannot be declared in anonymous unions
1166: returning pointer to local variable
1167: returning pointer to local temporary
1168: option "export" can be used only when compiling C++
1169: option "export" cannot be used with "no_dep_name"
1170: option "export" cannot be used with "implicit_include"
1171: declaration of <entity> is incompatible with a declaration in another translation unit
1172: the other declaration is <entity>
1175: a field declaration cannot have a type involving a variable length array
1176: declaration of <entity> had a different meaning during compilation of <entity>
1177: expected "template"
1178: "export" cannot be used on an explicit instantiation
1179: "export" cannot be used on this declaration
1180: a member of an unnamed namespace cannot be declared "export"
1181: a template cannot be declared "export" after it has been defined
1182: a declaration cannot have a label
1183: support for exported templates is disabled
1185: <entity> already defined during compilation of <entity>
1186: <entity> already defined in another translation unit
1187: a nonstatic local variable may not be used in a __based specification
1188: the option to list makefile dependencies may not be specified when compiling more than one translation unit
1190: the option to generate preprocessed output may not be specified when compiling more than one translation unit
1191: a field with the same name as its class cannot be declared in a class with a user-declared constructor
1192: "implicit_include" cannot be used when compiling more than one translation unit
1193: exported template file <entity> is corrupted
1194: <entity> cannot be instantiated -- it has been explicitly specialized in the translation unit containing the exported definition
1196: the object has type qualifiers that are not compatible with the member <entity>
1197: no instance of <entity> matches the argument list and object (the object has type qualifiers that prevent a match)
1198: an attribute specifies a mode incompatible with <type>
1199: there is no type with the width specified
1200: invalid alignment value specified by attribute
1201: invalid attribute for <type>
1202: invalid attribute for <entity>
1204: attribute <entity> does not take arguments
1206: expected an attribute name
1207: unknown attribute <attribute>
1208: attributes may not appear here
1209: invalid argument to attribute <entity>
1211: in "goto *expr", expr must have type "void *"
1212: "goto *expr" is nonstandard
1213: taking the address of a label is nonstandard
1214: file name specified more than once:
1215: #warning directive: <entity>
1217: the "transparent_union" attribute only applies to unions, and <type> is not a union
1218: the "transparent_union" attribute is ignored on incomplete types
1219: <type> cannot be transparent because <entity> does not have the same size as the first field
1220: <type> cannot be transparent because it has a field of type <type> which is not the same size as the first field
1222: attribute <attribute> does not apply to local variables
1224: attributes are not permitted in a function definition
1226: the second constant in a case range must be larger than the first
1227: an asm name is not permitted in a function definition
1228: an asm name is ignored in a typedef
1229: unknown register name "<entity>"
1230: modifier letter '<entity>' ignored in asm operand
1231: unknown asm constraint modifier '<entity>'
1232: unknown asm constraint letter '<entity>'
1233: asm operand has no constraint letter
1234: an asm output operand must have one of the '=' or '+' modifiers
1235: an asm input operand may not have the '=' or '+' modifiers
1237: too many colons in asm statement
1238: register "<entity>" used more than once
1239: register "<entity>" is both used and clobbered
1240: register "<entity>" clobbered more than once
1241: register "<entity>" has a fixed purpose and may not be used in an asm statement
1242: register "<entity>" has a fixed purpose and may not be clobbered in an asm statement
1243: an empty clobbers list must be omitted entirely
1244: expected an asm operand
1245: expected a register to clobber
1246: "format" attribute requires an ellipsis parameter
1247: first substitution argument is not the first variable argument
1248: format argument index is greater than number of parameters
1249: format argument does not have string type
1250: the "template" keyword used for syntactic disambiguation may only be used within a template
1253: attribute does not apply to non-function type <type>
1254: arithmetic on pointer to void or function type
1255: storage class must be auto or register
1256: <type> would have been promoted to <type> when passed through the ellipsis parameter; use the latter type instead
1257: <entity> is not a base class member
1258: __super cannot appear after \"::\"
1259: __super may only be used in a class scope
1260: __super must be followed by \"::\"
1262: mangled name is too long
1263: Offset must be half-word aligned
1264: Offset must be double-word aligned
1265: converting to and from floating-point type is not permitted with --fpu=none
1266: Operand should be a constant expression
1267: Implicit physical register <entity> should be defined as a variable
1268: declaration aliased to undefined entity <entity>
1269: declaration does not match its alias <entity>
1270: entity declared as alias cannot have definition
1271: variable-length array field type will be treated as zero-length array field type
1272: nonstandard cast on lvalue ignored
1273: unrecognized flag name
1274: void return type cannot be qualified
1275: the auto specifier is ignored here (invalid in standard C/C++)
1276: a reduction in alignment without the "packed" attribute is ignored
1277: a member template corresponding to <entity> is declared as a template of a different kind in another translation unit
1278: excess initializers are ignored
1279: va_start can appear only in a function with an ellipsis parameter
1280: the \"short_enums\" option is only valid in GNU C and GNU C++ modes
1281: invalid export information file %sq1 at line number %s2
1282: variable <entity> cannot be used in a register range
1283: A physical register name is required here
1284: A register range cannot be specified here
1285: Implicit physical register <entity> has not been defined
1286: LDRD/STRD instruction will be expanded

When LDRD and STRD instructions are used in inline assembler the compiler expands these into two LDR or STR instructions before being passed through the compiler optimization stage.

The optimization stage normally combines the two LDR or STR instruction back into a single LDRD or STRD instruction, however it is possible in some cases that a LDRD or STRD is not used.

1287: LDM/STM instruction may be expanded

The compiler expands LDM and STM instructions in inline assembly code into a number of LDR or STR instructions, before passing through the compiler optimization stage.

The optimization stage normally changes the LDR or STR instructions back into LDM or STM instructions, although it is possible that in some cases a single LDM or STM instruction is not used.

1288: Implicit ARM register <entity> was not defined due to name clash
1289: statement expressions are only allowed in block scope
1291: an asm name is ignored on a non-register automatic variable
1293: assignment in condition

In a context where a boolean value is required, for example in the controlling expression for an if, while, or for statement, or the first operand of a conditional expression, the expression contains one of the following instead:

  • A bitwise not operator (~). It is likely that a logical not operator (!) was intended.

  • An assignment operator (=). This could be a mis-typed equality operator (==). For example:

    int main(void) 
    { 
      int a,b; 
      if (a=b); 
    } 
    

In either case, if the operator was used intentionally, it might be possible to suppress the warning by adding an explicit comparison against zero.

For example, change the if statement in the example to:

  if ((a=b)!=0);

This warning can also be suppressed by using the --diag_suppress 1293 option.

See also message number 187, which applies when you compare against a constant.

1294: Old-style function <entity>

The compiler accepts both old-style and new-style function declarations. The difference between them is shown in the following example:

// new style 
int add2(int a, int b) 
{ 
  return a+b; 
} 
// old style 
int oldadd2(a,b) 
int a; 
int b; 
{ 
  return a+b; 
} 

When compiling old-style functions in C mode, the compiler reports:

Warning: #1294-D: Old-style function oldadd2 
1295: Deprecated declaration <entity> - give arg types

This warning is normally given when a declaration without argument types is encountered in ANSI C mode. In ANSI C, declarations like this are deprecated. However, it is sometimes useful to suppress this warning with the --diag_suppress 1295 option when porting old code.

In C++:

void foo(); 

means:

void foo(void); 

and no warning is generated.

1296: extended constant initialiser used

The expression used as a constant initializer might not be portable.

This warns that there is a constant initializer that does not follow the strict rules of ANSI C.

The solution is to rewrite your code to be ANSI compliant.

The following examples show code that generates this warning, and suggest potential alternatives for achieving the same goal with ANSI C compliant code.

Compiling with --diag_suppress 1296 suppresses the warning.

Example 1:

This code generates warning 1296 when x and y are static objects, that is, global variables or static local variables, because the C standard does not permit a cast of a pointer to an integer in a constant expression:

int x;
int y = (int) &x;

ANSI C requires the initializer for a static object to be a constant expression. (int) &x is not considered to be a constant expression.

Be aware that addresses are not arithmetic types, so this example C code is disallowed for ANSI C. Unfortunately, this is a common ANSI non-compliance amongst other compilers, and can result in problems when porting legacy code to ARM. This is why the ARM compiler issues a warning rather than an error.

An ANSI C compliant alternative method would be to rewrite the code so that y is a pointer to x:

int x;
int* y = &x;

Example 2:

This code, compiled with the --c90 switch, generates warning 1296:

const int foo_table[] = { (int)"foo", 0, 1, 2}; 

An ANSI C compliant alternative method would be to rewrite the code as follows:

const char* foo_table[] = { "foo", 0, (char*)1, (char*)2};

Example 3:

This code generates warning 1296 because the C standard does not permit a cast of a pointer to a long integer in a constant expression:

char value;
long array[] = {
    (long)&value,
    (long)"string"
};

An ANSI C compliant alternative method would be to rewrite the code to use pointers:

char value;
char *array[] = {
    (char*)&value,
    (char*)"string"
};

This solution works because pointer-to-pointer casts are allowed in C.

1297: Header file not guarded against multiple inclusion

This warning is given when an unguarded header file is #included.

An unguarded header file is a header file not wrapped in a declaration such as:

#ifdef foo_h 
#define foo_h 
/* body of include file */ 
#endif 

This warning is off by default. It can be enabled with:

--diag_warning 1297
1298: Header file is guarded by '<entity>', but does not #define it

Example:

#ifndef MYHEADER_H 
//#define MYHEADER_H 
#endif 

To correct the code, remove the comment slashes (//). This warning is off by default. It can be enabled with:

--diag_warning 1298
1299: members and base-classes will be initialized in declaration order, not in member initialisation list order
1300: <entity> inherits implicit virtual

This warning is issued when a non-virtual member function of a derived class hides a virtual member of a parent class. For example:

struct Base { virtual void f(); };
struct Derived : Base { void f(); };

results in the message:

Warning: #1300-D: f inherits implicit virtual
struct Derived : Base { void f(); };
                             ^

Adding the virtual keyword in the derived class prevents the warning. For C++, specifying the --diag_suppress 1300 option suppresses the implicit virtual warning.

1301: padding inserted in struct <entity>

For the members of the structure to be correctly aligned, some padding has been inserted between members. This warning is off by default and can be enabled with --diag_warning 1301 or --remarks.

For example:

struct X {
  char x;
  int y;
}

results in the message:

Warning: #1301-D: padding inserted in struct X

The compiler can also warn of padding added at the end of a struct or between structs, see message number 2530.

1302: type too large to be returned in registers - __value_in_regs ignored
1303: using --force_new_nothrow: added "throw()"
1304: operator new missing exception specification
1305: using --force_new_nothrow: added "(::std::nothrow)"
1307: floating point argument not permitted with --fpu=none
1308: Base class <type> of __packed class <type> must be __packed
1309: unrecognized UPC pragma
1310: shared block size does not match one previously specified
1311: bracketed expression is assumed to be a block size specification rather than an array dimension
1312: the block size of a shared array must be greater than zero
1313: multiple block sizes not allowed
1314: strict or relaxed requires shared
1315: THREADS not allowed in this context
1316: block size specified exceeds the maximum value of <entity>
1317: function returning shared is not allowed
1319: one dimension of an array of a shared type must be a multiple of THREADS when the number of threads is nonconstant
1320: shared type inside a struct or union is not allowed
1321: parameters may not have shared types
1322: a dynamic THREADS dimension requires a definite block size
1323: shared variables must be static or extern
1324: argument of upc_blocksizeof is a pointer to a shared type (not shared type itself)
1325: affinity expression ignored in nested upc_forall
1326: branching into or out of a upc_forall loop is not allowed
1327: affinity expression must have a shared type or point to a shared type
1328: affinity has shared type (not pointer to shared)
1329: shared void* types can only be compared for equality
1330: UPC mode is incompatible with C++ and K&R modes
1331: null (zero) character in input line ignored
1332: null (zero) character in string or character constant
1333: null (zero) character in header name
1334: declaration in for-initializer hides a declaration in the surrounding scope
1335: the hidden declaration is <entity>
1336: the prototype declaration of <entity>fd is ignored after this unprototyped redeclaration
1338: <entity>pd must have external C linkage
1339: variable declaration hides declaration in for-initializer
1340: typedef <entity> may not be used in an elaborated type specifier
1341: call of zero constant ignored
1342: parameter <entity> may not be redeclared in a catch clause of function try block
1343: the initial explicit specialization of <entity> must be declared in the namespace containing the template
1344: \"cc\" clobber ignored
1345: "template" must be followed by an identifier
1346: MYTHREAD not allowed in this context
1347: layout qualifier cannot qualify pointer to shared
1348: layout qualifier cannot qualify an incomplete array
1349: declaration of <entity> hides handler parameter
1350: nonstandard cast to array type ignored
1351: this pragma cannot be used in a _Pragma operator (a #pragma directive must be used)
1352: field uses tail padding of a base class
1353: GNU C++ compilers may use bit field padding
1355: abstract class <type> has a non-virtual destructor, calling delete on a pointer to this class is undefined behaviour
1356: an asm name is not allowed on a nonstatic member declaration
1357: static initialisation of <entity> using address of <entity> may cause link failure -ropi

See error number 1359.

1358: static initialisation of extern const <entity> using address of <entity> cannot be lowered for ROPI
1359: static initialisation of <entity> using address of <entity> may cause link failure -rwpi

Warnings 1357 and 1359 highlight code constructs that are not position independent (PI) and that might cause a subsequent link step to fail.

The following code, when compiled with --apcs /ropi:

char *str = "test"; /* global pointer */

results in the message:

Warning: #1357-D: static initialisation of variable "str" using address of string literal may cause link failure --ropi

because the global pointer str must be initialized to the address of the char string test in the .constdata section, but absolute addresses cannot be used in a PI system.

The following code, when compiled with --apcs /rwpi:

int bar;
int *foo = &bar; /* global pointer */

results in the message:

Warning: #1359-D: static initialisation of variable "foo" using address of bar may cause link failure --rwpi

because the global pointer foo must be initialized to the address of bar in the .data section, but absolute addresses cannot be used in a PI system.

The following workarounds are possible:

  • Change your code to avoid use of a global pointer. You can, for example, use a global array or local pointer instead.

  • Do the initialization at run-time, for example:

    int bar;
    int *foo;
    

    Then write code inside a function that sets foo = &bar;. This is because when generating code as opposed to statically initializing data, the compiler has scope to work around the ROPI/RWPI constraints.

See also the linker error L6248E.

1360: static initialisation of extern const <entity> using address of <entity> cannot be lowered for RWPI

For example, when compiled with --apcs /rwpi:

extern int y;
int* const x = &y;
int* foo()
{
  return(x);
}

produces a warning because prefixing y by extern prevents the compiler defining a direct address offset between the variables x and y.

1361: <entity> was declared "deprecated"
1362: unrecognized format function type <entity> ignored
1363: base class <entity> uses tail padding of base class <entity>
1364: the \"init_priority\" attribute can only be used for definitions of static data members and namespace scope variables of class types
1365: requested initialization priority is reserved for internal use
1366: this anonymous union/struct field is hidden by <entity>
1367: invalid error number
1368: invalid error tag
1369: expected an error number or error tag
1370: size of class is affected by tail padding
1371: labels can be referenced only in function definitions
1372: transfer of control into a statement expression is not allowed
1374: this statement is not allowed inside of a statement expression
1375: a non-POD class definition is not allowed inside of a statement expression
1376: destructible entities are not allowed inside of a statement expression
1377: a dynamically-initialized local static variable is not allowed inside of a statement expression
1378: a variable-length array is not allowed inside of a statement expression
1379: a statement expression is not allowed inside of a default argument
1381: Type of result operand is narrower than actual result
1382: nonstandard conversion between pointer to function and pointer to data
1383: interface types cannot have virtual base classes
1384: interface types cannot specify "private" or "protected"
1385: interface types can only derive from other interface types
1386: <type> is an interface type
1387: interface types cannot have typedef members
1388: interface types cannot have user-declared constructors or destructors
1389: interface types cannot have user-declared member operators
1390: interface types cannot be declared in functions
1392: interface types cannot have data members
1393: interface types cannot contain friend declarations
1395: interface types cannot be nested class types
1396: interface types cannot have member templates
1397: interface types cannot have static member functions
1398: this pragma cannot be used in a __pragma operator (a #pragma directive must be used)
1399: qualifier must be base class of <type>
1400: declaration must correspond to a pure virtual member function in the indicated base class
1401: integer overflow in internal computation due to size or complexity of <type>
1402: integer overflow in internal computation
1403: __w64 can only be specified on int, long, and pointer types
1404: potentially narrowing conversion when compiled in an environment where int, long, or pointer types are 64 bits wide
1405: current value of pragma pack is <entity>
1406: arguments for pragma pack(show) are ignored
1409: earlier __declspec(align(...)) ignored
1410: expected an argument value for the <entity> attribute parameter
1411: invalid argument value for the <entity> attribute parameter
1412: expected a boolean value for the <entity> attribute parameter
1413: a positional argument cannot follow a named argument in an attribute
1414: attribute <entity> has no parameter named <entity>
1415: expected an argument list for the <entity> attribute
1416: expected a "," or "]"
1417: attribute argument <entity> has already been given a value
1418: a value cannot be assigned to the <entity> attribute
1419: a throw expression may not have pointer-to-incomplete type
1420: alignment-of operator applied to incomplete type
1421: <entity> may only be used as a standalone attribute
1422: <entity> attribute cannot be used here
1424: attributes are not allowed here
1425: invalid argument value for the <entity> attribute parameter
1426: too many attribute arguments
1427: conversion from inaccessible base class <type> is not allowed
1428: option "export" requires distinct template signatures
1429: string literals with different character kinds cannot be concatenated
1430: GNU layout bug not emulated because it places virtual base <entity> outside <entity> object boundaries
1431: virtual base <entity> placed outside <entity> object boundaries
1432: nonstandard qualified name in namespace member declaration
1433: reduction in alignment ignored
1434: const qualifier ignored
1436: __breakpoint argument must be an integral compile-time constant
1437: __breakpoint argument must be within 0-65535 when compiling for ARM
1438: __breakpoint argument must be within 0-255 when compiling for Thumb
1439: BKPT instruction is not supported on target architecture/processor
1440: oversize bitfield layout will change -- consider preceeding with "<entity>:0;"
1441: nonstandard cast on lvalue

The C specification states "An assignment operator shall have a modifiable lvalue as its left operand" and "a cast does not yield an lvalue".

1442: polymorphic base classes need to be exported if they are to be used for exported derivation
1443: polymorphic base classes inherited via virtual derivation need to be exported
1444: polymorphic base classes inherited via virtual derivation need all virtual functions to be exported
1445: invalid GNU asm qualifiers
1446: non-POD class type passed through ellipsis
1447: a non-POD class type cannot be fetched by va_arg

The ISO C++ standard defines that the non-required arguments of a variadic function must be of type Plain Old Data (POD), such as an int or a char, but not structs or classes.

To avoid the error or warning, the address of a class or struct could be given instead.

1448: the 'u' or 'U' suffix must appear before the 'l' or 'L' suffix in a fixed-point literal
1449: option \"fixed_point\" can be used only when compiling C
1450: integer operand may cause fixed-point overflow
1451: fixed-point constant is out of range
1452: fixed-point value cannot be represented exactly
1453: constant is too large for long long; given unsigned long long type (nonstandard)
1454: layout qualifier cannot qualify pointer to shared void
1455: duplicate THREADS in multidimensional array type
1456: a strong using-directive may only appear in a namespace scope
1457: <entity> declares a non-template function -- add <> to refer to a template instance
1458: operation may cause fixed-point overflow
1459: expression must have integral, enum, or fixed-point type
1460: expression must have integral or fixed-point type
1461: function declared with "noreturn" does return
1462: asm name ignored because it conflicts with a previous declaration
1463: class member typedef may not be redeclared
1464: taking the address of a temporary
1465: attributes are ignored on a class declaration that is not also a definition
1466: fixed-point value implicitly converted to floating-point type
1467: fixed-point types have no classification
1468: a template parameter may not have fixed-point type
1469: hexadecimal floating-point constants are not allowed
1470: option \"named_address_spaces\" can be used only when compiling C
1471: floating-point value does not fit in required fixed-point type
1472: value cannot be converted to fixed-point value exactly
1473: fixed-point conversion resulted in a change of sign
1474: integer value does not fit in required fixed-point type
1475: fixed-point operation result is out of range
1476: multiple named address spaces
1477: variable with automatic storage duration cannot be stored in a named address space
1478: type cannot be qualified with named address space
1479: function type cannot be qualified with named address space
1480: field type cannot be qualified with named address space
1481: fixed-point value does not fit in required floating-point type
1482: fixed-point value does not fit in required integer type
1483: value does not fit in required fixed-point type
1484: option \"named_registers\" can be used only when compiling C
1485: a named-register storage class is not allowed here
1486: <entity> redeclared with incompatible named-register storage class
1487: named-register storage class cannot be specified for aliased variable
1488: named-register storage specifier is already in use
1489: option \"embedded_c\" cannot be combined with options to control individual Embedded C features
1490: invalid EDG_BASE directory:
1492: invalid predefined macro entry at line <entity>: <reason>
1493: invalid macro mode name <entity>
1494: incompatible redefinition of predefined macro <entity>
1495: redeclaration of <entity> is missing a named-register storage class
1496: named register is too small for the type of the variable
1497: arrays cannot be declared with named-register storage class
1498: const_cast to enum type is nonstandard
1499: option \"embedded_c\" can be used only when compiling C
1500: __svc parameter <entity> is not within permitted range (0 to 0xff) for Thumb SVC instruction
1501: too many arguments for __svc or __svc_indirect function
1502: arguments for __svc or __svc_indirect function must have integral type
1503: __svc_indirect function must have arguments
1504: first argument for __svc_indirect function must have integral type
1505: result of __svc or __svc_indirect function must be returned in integer registers
1506: source file <entity> has bad format
1507: error while writing <entity> file: <reason>
1508: cannot overload functions distinguished by function qualifier alone
1509: function qualifier <entity> not permitted on a virtual member function
1510: function "__attribute__((__<entity>__))" present on overridden virtual function <entity> must be present on overridding function
1511: function qualifier <entity> is not identical on overridden virtual function <entity>
1512: function qualifier <entity> present on overridden virtual function <entity> must be present on overridding function
1513: a named address space qualifier is not allowed here
1514: an empty initializer is invalid for an array with unspecified bound
1515: function returns incomplete class type <type>
1516: <entity> has already been initialized; the out-of-class initializer will be ignored
1517: declaration hides <entity>
1518: a parameter cannot be allocated in a named address space
1519: invalid suffix on fixed-point or floating-point constant
1520: a register variable cannot be allocated in a named address space
1521: expected \"SAT\" or \"DEFAULT\"
1522: <entity> has no corresponding member operator delete<entity> (to be called if an exception is thrown during initialization of an allocated object)
1523: a thread-local variable cannot be declared with "dllimport" or "dllexport"
1524: a function return type cannot be qualified with a named address space
1525: an initializer cannot be specified for a flexible array member whose elements have a nontrivial destructor
1526: an initializer cannot be specified for an indirect flexible array member
1527: invalid GNU version number:
1528: variable attributes appearing after a parenthesized initializer are ignored
1529: the result of this cast cannot be used as an lvalue
1530: negation of an unsigned fixed-point value
1531: this operator is not allowed at this point; use parentheses
1533: register names can only be used for register variables
1534: named-register variables cannot have void type
1536: parameters cannot have link scope specifiers
1537: multiple link scope specifiers
1538: link scope specifiers can only appear on functions and variables with external linkage
1539: a redeclaration cannot weaken a link scope
1540: link scope specifier not allowed on this declaration
1541: nonstandard qualified name in global scope declaration
1542: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
1543: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
1544: conversion from pointer to same-sized integral type (potential portability problem)
1546: friend specifier is not allowed in a class definition; friend specifier is ignored
1547: only static and extern variables can use thread-local storage
1548: multiple thread-local storage specifiers
1549: virtual <entity> was not defined (and cannot be defined elsewhere because it is a member of an unnamed namespace)
1550: carriage return character in source line outside of comment or character/string literal
1551: expression must have fixed-point type
1552: invalid use of access specifier is ignored
1553: pointer converted to bool
1554: pointer-to-member converted to bool
1555: storage specifier ignored
1556: dllexport and dllimport are ignored on class templates
1557: base class dllexport/dllimport specification differs from that of the derived class
1558: redeclaration cannot add dllexport/dllimport to <entity>

If this message is suppressed, the behavior is as though the dllexport or dllimport had been omitted. For example:

void f(void);
__declspec(dllimport) void f(void) { } /* suppress treats as
                                          void f(void) { } */
1559: dllexport/dllimport conflict with <entity>od; dllexport assumed

This indicates that an entity is marked as both dllimport and dllexport. In this case, the compiler assumes that the entity is dllexport.

In the following example, the function definition foo() conflicts with the declaration __declspec(dllimport) void foo(). In this situation, the compiler assumes dllexport.

---test.cpp---
__declspec(dllimport) void foo();
void foo()
{
}
------------
armcc -c test.cpp
"test.cpp", line 3: Warning: #1559-D: dllexport/dllimport conflict with "foo" (declared at line 1); dllexport assumed
fromelf –s test.o
...
# Symbol Name   Value       Bind Sec Type Vis Size
====================================================================
6 _Z3foov       0x00000000  Gb   1   Code Pr  0x4
...

The warning message and the symbol visibility indicate that the function foo() is dllexport assumed.

1560: cannot define dllimport entity
1561: dllexport/dllimport requires external linkage
1562: a member of a class declared with dllexport/dllimport cannot itself be declared with such a specifier
1563: field of class type without a DLL interface used in a class with a DLL interface
1564: parenthesized member declaration is nonstandard
1565: white space between backslash and newline in line splice ignored
1566: dllexport/dllimport conflict with <entity>od; dllimport/dllexport dropped
1567: invalid member for anonymous member class -- class <type> has a disallowed member function
1568: nonstandard reinterpret_cast
1569: positional format specifier cannot be zero
1570: a local class cannot reference a variable-length array type from an enclosing function
1571: member <entity> already has an explicit dllexport/dllimport specifier
1572: a variable-length array is not allowed in a function return type
1573: variable-length array type is not allowed in pointer to member of type <type>
1574: the result of a statement expression cannot have a type involving a variable-length array
1575: Load/Store with translation not supported in inline assembler. Use embedded assembler or out-of-line assembler
1576: Flag-setting multiply instructions not supported in inline assembler. Use embedded assembler or out-of-line assembler
1577: Flag-setting MOV/MVN instructions with constant operand not supported in inline assembler. Use embedded assembler or out-of-line assembler
1578: an asm name is ignored on an automatic variable
1579: Could not inline: Unknown exception handling code
1581: Could not optimize: Loop profiling inhibited for this function - max needed as intrinsic
1582: Could not optimize: This variable-size private array inhibits concurrency
1583: Not allowed to write to output file. Output suppressed
1584: Could not optimize: Unable to transform temporary variables
1585: Feature-dependent error
1586: Mixed data sizes in one loop disabled by user
1587: Could not optimize: A data type in this line prevents optimization of the loop
1588: Could not optimize: This loop exit could not be translated
1589: Illegal array dimensions
1590: Could not optimize: Too large to optimize - reduce file or loop size
1591: Illegal arithmetic expression
1592: Unbalanced parentheses
1593: Could not optimize: Use of unsigned index prevents optimization
1594: Could not optimize: Loop parameters must be integer for full optimization
1595: Illegal number of arguments to intrinsic function
1596: Could not optimize: Function reference prevents high-level loop optimization
1597: String of length 0 is not allowed
1598: Could not optimize: Feedback of scalar value from one loop pass to another
1599: Could not optimize: Not enough useful work to optimize
1600: Could not optimize: Cannot translate this type conversion
1601: Improper elseif statement
1602: Illegal subroutine
1603: Improper nesting of loops
1604: Could not optimize: Reference to this function inhibits optimization
1605: Statement expands line past size of buffer
1606: Problem in writing output file -- check permissions
1607: Array not declared
1608: Switch error - incorrect keyword
1609: Could not optimize: Routine too big for certain optimizations
1610: Loop has no exit
1611: Illegal syntax in specification statement
1612: Could not optimize: Potential multiple store conflict
1613: Could not optimize: Multiple store conflict
1614: Illegal symbol
1615: Could not optimize: Potential feedback between loop iterations
1616: Could not optimize: Feedback of array elements
1617: Could not optimize: Loop too complex
1618: Could not optimize: Mixed data types with non-unit stride
1619: Number of subscripts declared and used do not match
1620: Internal fault: translation failed. Please contact your supplier
1621: Optimization: Dead code eliminated
1622: Unreferenced label
1623: Missing label
1624: Could not optimize: Too many overlapping conditions for efficient translation
1625: Conditional scatter not handled
1627: Could not optimize: Loop parameters too complicated
1628: Could not optimize: Character data type prevents optimization
1629: Could not optimize: Iteration count too short for array optimization
1630: Missing >
1631: Unknown statement
1632: Optimization: Promoted scalar eliminated
1633: No implicit data type given for this symbol
1634: Could not optimize: Branch into loop
1635: Could not optimize: Loop nest too deep
1636: Could not optimize: Complicated use of variable
1637: Unknown pragma - ignored
1638: Unable to determine last value of scalar temporary
1639: Use nolstval directive if possible
1640: Could not optimize: Use of scalar under different condition causes feedback
1641: Could not optimize: Too many data dependency problems
1642: Might not be able to optimize: Possible data dependency due to equivalence - please check
1643: Optimization: Wrap-around scalar promoted
1644: Expected left parenthesis
1645: Expected variable name
1646: Expected array subscript
1647: Expected right parenthesis
1648: Expected end of line
1649: Error in equivalence
1651: Could not optimize: A data type used in this loop is not available
1652: Global flow traverse (forward) failed
1653: Global flow traverse (backward) failed
1654: Formal parameters may not be equivalenced
1655: Optimization: Vector version made with run-time unit-stride test
1656: Problem in pragma syntax
1657: Wrong type for intrinsic function argument
1658: 32-bit integer multiply not supported in hardware
1659: Could not optimize: Store overlaps load - cannot analyze alignment
1661: Could not optimize: Backward transfers cannot be optimized
1662: Could not optimize: Last value of promoted scalar required
1663: Could not optimize: Branches out of the loop prevent translation
1665: Optimization: Repeated subexpression eliminated
1666: Argument shapes do not match
1667: Indirect addressing is turned off
1668: Optimization: Array delinearized
1669: Illegal function statement
1670: Optimization: If loop converted to for loop
1671: Cannot find input file
1672: Could not optimize: Data size larger than int not supported
1673: Optimization: If loop converted to while loop
1674: Assumed shape, size, allocatable or pointer not allowed
1675: Could not optimize: Loop index already used by outer loop
1676: Could not optimize: This statement prevents loop optimization
1677: Internal error: unknown lexing state. Please contact your supplier
1678: Could not optimize: Vectorization not possible for this loop
1679: Optimization: Loop vectorized
1680: Dimension value of arrays in common must be constant
1681: Switch input error
1682: Could not optimize: Split-out conditional reduction prevents loop translation
1683: Could not optimize: Store into function
1684: Ampersand operator on array ignored
1685: Mismatch of operands and operators
1686: Could not optimize: Colon syntax prevents analysis
1687: Could not optimize: Reduction function suppressed - needs associative transformation
1688: Ambiguous subscript resolved
1689: Unsupported operation
1690: Could not optimize: Unsupported data type for explicit vector operations
1691: Optimization: Loop fused with previous loop
1692: Null int
1693: Zero sized object
1694: Could not optimize: Loop too large
1695: Illegal character:
1696: Feedback of array elements, conflict on line %s1. (%s2)
1697: Could not optimize: This I/O statement prevents optimization of loop
1698: Return is not optimizable
1699: Stop is not optimizable
1700: A constant parameter may not be assigned a new value
1701: Optimization: Branch removal used
1702: Variable used but undefined at this point
1703: This definition is not used
1704: User functions not allowed here
1705: Variable used but never defined
1706: Illegal statement
1707: Could not optimize: Branching too complex to optimize at this optimization level
1708: Could not optimize: Line too long - split into smaller lines
1709: Could not optimize: Conditional scalar prevents optimization of outer loop
1710: Could not optimize: User function references in iteration count
1711: Null loop body
1712: Internal temporary eliminated
1713: Could not optimize: Outer loop sets inner loop iteration count
1714: Could not optimize: Outer loop conditionally executes inner loop
1715: Could not optimize: Automatic array prevents inline expansion
1716: Could not optimize: Line too long - split into smaller lines
1717: Internal fault: translation of program stopped. Please contact your supplier
1718: Could not optimize: Pointers associated with loop variables prevent analysis
1719: Automatic array cannot be put in common area
1720: Could not optimize: This statement inhibits loop translation
1724: User logical directive prevents translation
1729: Potential bit overflow of store into bitwidth variable
1730: No indexing done along this loop
1731: Could not optimize: Inner dependence creates outer dependence
1732: Constant is too many digits or characters
1733: Array used in directive but not declared
1734: Unbalanced endif
1735: Missing endif(s)
1736: Could not optimize: Branch into if block
1739: Excess characters following pragma
1740: Variable defined but never used
1741: Could not optimize: Potential feedback (equivalence)
1742: Could not optimize: Feedback of array elements (equivalenced arrays)
1743: Could not optimize: Loop parameters reset in loop
1745: Could not optimize: Potential data dependency due to pointer, use restrict qualifier if ok
1746: Subroutine name may not be used as variable
1749: Inconsistent number of arguments in function references
1750: Optimization: Loop re-rolled
1751: Might not be able to optimize: Input contains reserved word
1752: Illegal use of =
1754: Dim and mask arguments are not handled
1755: Could not optimize: These vector constants cannot be handled
1756: Could not optimize: This transformational function cannot be translated
1757: Optimization: Associative transformation required to handle this function
1759: Could not optimize: Non-unit stride interferes with vector optimization
1760: Specified scope on this directive is not valid - ignored
1771: Could not optimize: Volatile items prevent analysis
1773: Could not optimize: Generated expression would be too complex
1774: Exceeded maximum number of symbols allowed after optimization
1775: Could not optimize: GNU extension prevents inlining
1789: Could not optimize: Array dimension too small for optimization
1790: Invalid parameter statement
1791: Source for routine not found
1792: Error reading expansion file
1793: Expansion routine is too big for automatic expansion
1794: Error encountered parsing expansion routine
1795: Invalid argument expression on expansion call
1796: Argument directory table overflow
1797: Argument mismatch between call and expansion routine
1798: Could not optimize: Nesting level too deep for automatic expansion
1799: Internal fault: too many new labels generated. Please contact your supplier
1800: Could not optimize: Exceeded maximum number of expanded functions
1801: Optimization: Function expanded
1802: Source for function not found in input file
1803: Could not optimize: Increment of loop is 0
1805: Could not optimize: Bit constants not handled
1807: Could not optimize: table overflow in inline expansion
1808: Variable appears only as formal argument
1809: Function in expanded routine conflicts with non-function
1810: Overflow in iteration count expression
1811: Argument constant on left hand side of assignment statement
1812: Function references with conflicting number of arguments
1813: Conflicting function definitions
1814: Could not optimize: code size affects optimizations
1816: Missing if or braces
1819: Missing end of for
1820: Conversion between these two data types is not possible
1821: Error in logical expression
1822: Could not optimize: Data too complex for this reduction operation to vectorize
1823: Could not optimize: Function was passed as an argument
1824: Could not optimize: Not enough vector operations to justify translation
1825: Could not optimize: Cannot vectorize complex conditionals
1826: Could not optimize: Parallel syntax prevents expansion
1828: Character illegal in this context
1829: Could not optimize: Byte data type not supported for vectorization
1831: Optimization: Constant propagated
1832: Definition deleted
1833: Conflicting declaration for generated function
1834: Error opening output file (possibly permission denied)
1835: Inappropriate placement of directive - ignored
1838: Inappropriate argument to permutation directive - ignored
1840: Order of arithmetic operations may have been changed
1841: Stripmining required for this loop
1842: Repeated redimension declaration - directive ignored
1843: Duplicate label in expansion routine
1844: Too many labels in expansion routine
1845: Arithmetic expression reduces to illegal divide by 0
1846: Integer constant is not in the permitted range
1847: Could not optimize: Use of pointer variable
1849: Argument must be a nonnegative integer constant or parameter
1850: Could not optimize: Unrolling parameter too large
1853: Could not optimize: Loop contains too many statements to unroll
1858: Could not optimize: Reduction scalar type mismatch
1861: Could not optimize: This store into array prevents optimization of outer loop
1864: Could not optimize: Not enough work to justify concurrency optimization
1866: Could not optimize: Non-integer subscript
1877: Could not optimize: Use of loop index outside the loop
1885: Could not optimize: Loop bounds exceed array dimensions
1886: Optimization: Loops optimized with parallel section
1887: Reservations required
1888: Could not optimize: Inappropriate data type for vectorization
1889: Could not optimize: Alternate code generation suppressed due to program size
1890: Nesting of command files greater than 9
1891: Invalid program statement
1892: Could not optimize: Use of logical arrays prevents vectorization
1893: Error in -k option -- ignored
1894: Optimization: Iterations peeled from loop in order to avoid dependence
1895: Optimization: Redundant if eliminated
1896: Optimization: Logical clause simplified
1902: Actual argument dimensions are less than temporary argument dimensions
1903: Data types of arguments do not match
1904: Could not optimize: Scalar actual argument passed to temporary array argument
1909: Could not optimize: Width of temporary array does not match width of actual array
1910: Could not optimize: Statement inhibits expansion
1911: Could not optimize: Subroutine used as a function reference
1912: Could not optimize: Function used in a call statement prevents expansion
1913: Improper argument list in directive
1915: Could not optimize: Switch inhibits expansion with character arguments
1916: Could not optimize: Constant argument inhibits inline expansion
1917: Could not optimize: Constant argument is the destination of a read
1918: Could not optimize: User parallel directives inhibit transformation
1919: Could not optimize: Could not determine character substring length
1920: A label on an include statement is not allowed
1921: May be used before defined
1922: Could not optimize: Width of temporary array and/or actual array cannot be determined
1923: Could not optimize: Functions in arithmetic if statements are not expanded
1924: Potential discrepancy between actual and temporary array widths
1925: Illegal use of unsubscripted array
1926: Cannot have constant or function on left-hand side of assignment
1927: Parameter on left-hand side of assignment is illegal
1928: Left-hand side of assignment has more than 1 operand
1930: Expected equal sign, remainder of line ignored
1931: Expected closing parenthesis, one is assumed
1932: Could not optimize: Too many symbols for automatic expansion
1933: Could not optimize: Array or constant argument passed to do-loop index prevents expansion
1935: Directive has invalid or missing argument list
1936: Expected positive integer - invalid argument
1937: Expected a variable - invalid argument
1938: Variable not found
1939: Table overflow
1942: Could not optimize: Not enough vectorizable work to justify translation
1945: Could not optimize: Inline assembly block found
1947: Could not optimize: Cannot transform this combination of data types and operations
1948: PGO: hot loop; optimization defaults overridden.
1949: PGO: cold loop; optimization suppressed.
1950: PGO: hot function; optimization defaults overriden.
1951: PGO: cold function; optimization suppressed.
1952: PGO: hot loop; invariant IF removal done.
1953: PGO: cold loop; invariant IF removal suppressed.
1954: PGO: hot loop; default inlining criteria overridden.
1955: PGO: cold loop; inlining suppressed.
1956: PGO: hot loop; unrolling enabled.
1970: Could not optimize: Conformability problems
1971: Repeated switch parameters not allowed
1972: Could not optimize: Statement function contains optimization inhibitors
1973: Optimization: Moved invariant if outside of an inner loop
1974: Optimization: Inner loop stripped and strip loop moved outside outer loop
1975: Could not optimize: Store into array with missing subscript inhibits outer loop
1976: Could not optimize: Unable to make conditional arrays conformable
1977: Could not optimize: Problems in inner loop prevent optimization of outer loop
1978: Could not optimize: Unable to optimize user-selected loop
1979: Could not optimize: This operation inhibits loop transformation
1980: Optimization: Moved invariant if outside of an outer loop
1981: Could not optimize: Incompatible options (fixed, free) prevent expansion
1982: Could not optimize: Incompatible options (onetrip, noonetrip) prevent expansion
1983: Could not optimize: Incompatible options (mixed, nomixed) prevent expansion
1984: Could not optimize: Incompatible option (autodbl) prevents expansion
1985: Optimization: Loop chopped (size)
1986: Optimization: Loop chopped (intrinsic)
1987: Optimization: Loop switched
1988: Optimization: Alternate code generated
1991: More data items than variables in data statement
1992: More variables than data items in data statement
1993: Number of arguments does not match
1994: Argument data types do not match
1995: Constant or expression passed to modified variable
1997: Optimization: Constant-length loop unrolled
1999: Optimization: Loop will be split to avoid cache conflicts between arrays
2000: Local variable declared but never used
2001: Dummy argument declared but never used
2002: Dummy argument redefined as do variable
2003: Could not optimize: Constant/expression passed to possibly modified variable
2004: Redimensioned array is passed as an argument
2005: Redimensioned array is equivalenced
2006: Optimization: Parallel calls found
2007: Could not optimize: Writes in both subtrees, preventing parallel calls
2008: Optimization: Parallel loop found
2009: Could not optimize: Array used with varying dimensions
2011: Could not optimize: Incompatible option (intlog) prevents expansion
2012: Could not optimize: Recursive function/chain
2062: Could not optimize: Varargs must be pointer of same type
2063: Could not optimize: This array not allowed to have adjustable dimensions
2064: Could not optimize: multiple usage of varargs
2065: internal fault: symbol table circular link. Please contact your supplier
2067: Could not optimize: directives prevent inlining
2068: Unknown input file suffix requires conversion option
2071: Illegal data length
2090: Could not optimize: Internal table capacity reached
2091: Optimization: Loop unrolled
2092: Could not optimize: Long double data type not supported for vectorization
2093: Could not optimize: array notation on non-matching argument prevents analysis
2094: Repeated declaration of attribute
2098: Could not optimize: actual array used in assigned goto statement
2099: Could not optimize: I/O statement in called routine
2106: Could not optimize: External name conflicts with internal name
2107: Use of structure inhibits expansion
2135: Improper file name
2136: No other options are allowed if trace option is specified
2137: No other options are allowed if flint option is specified
2138: No input file name found on command line
2139: Unknown option
2140: This object cannot be equivalenced
2142: Could not optimize: Expansion inhibited by passing arguments by value
2143: Doall directive misplaced
2146: Could not optimize: Shared variable in data statement
2147: Could not optimize: Passing of char substring prevents function expansion
2148: Could not optimize: Cannot determine alignment of arrays
2149: Could not optimize: Actual argument was a do-loop index that is redefined
2151: Constant parameter cannot be dimensioned
2153: Internal fault: interprocedural analysis. Please contact your supplier
2155: This statement function reference inhibits expansion
2157: Could not optimize: unable to apply suitable transformation
2165: Could not optimize: definition of function return value prevents transformation
2168: Optimization: Outer loop moved inside inner loop(s)
2169: Optimization: Inner loop moved outside outer loop(s)
2170: Optimization: Invariant expression moved outside of outer loop
2171: Optimization: Outer loop unrolled inside inner loop
2172: Optimization: Loop nest collapsed into a single loop
2173: Illegal operand or operator in an initialization expression
2174: Entity cannot be used with an initialization expression
2175: Could not optimize: function type mismatch
2176: Illegal parallel syntax
2177: Function return value never set
2180: Target architecture:
2184: Could not optimize: could not handle this combination of data types
2189: Optimization: Loop unrolled and rotated
2190: Optimization: Loop unrolled and optimized
2191: Optimization: Some loads lifted to top of loop
2192: Optimization: Loop optimized for scalar execution
2194: Potential side effect of expanding function in I/O list
2218: Idiom detected and optimized
2219: Multiple ordered directives must not be executed in same iteration
2225: Illegal function reference in array dimensions
2226: Illegal function value in array dimensions
2297: The access identifier (only objects) must be public
2298: Digit in a binary constant must be a 0 or 1
2299: Digit in an octal constant must be a 0 through 7
2300: Might not be able to optimize: Feedback of scalar value from one loop pass to another. Conflict on line <entity>. Loop index is <entity> (<filename>,<entity>)"
2301: Might not be able to optimize: Feedback of scalar value from one loop pass to another. Conflict on line <entity>. Loop index is <entity> (<filename>)
2302: Might not be able to optimizee: Feedback of scalar value from one loop pass to another. Conflict on line <entity>. (<entity>,<filename>)
2303: Might not be able to optimize: Feedback of scalar value from one loop pass to another. Conflict on line <entity>. (<entity>)
2304: Might not be able to optimize: Potential multiple store conflict between loop iterations. Conflict on line <entity>. Loop index is <entity> (<filename>,<entity>)
2305: Might not be able to optimize: Potential multiple store conflict between loop iterations. Conflict on line <entity>. Loop index is <entity> (<filename>)
2306: Might not be able to optimize: Potential multiple store conflict between loop iterations. Conflict on line <entity>. (<entity>,<filename>)
2307: Might not be able to optimize: Potential multiple store conflict between loop iterations. Conflict on line <entity>. (<entity>)
2308: Might not be able to optimize: Potential feedback between loop iterations. Conflict on line <entity>. Loop index is <entity> (<filename>,<entity>)
2309: Might not be able to optimize: Potential feedback between loop iterations. Conflict on line <entity>. Loop index is <entity> (<filename>)
2310: Might not be able to optimize: Potential feedback between loop iterations. Conflict on line <entity>. (<entity>,<filename>)
2311: Might not be able to optimize: Potential feedback between loop iterations. Conflict on line <entity>. (<entity>)
2312: Could not optimize: Potential pointer aliasing - use restrict qualifier if ok. Conflict on line <entity>. Loop index is <entity> (<filename>,<entity>)
2313: Could not optimize: Potential pointer aliasing - use restrict qualifier if ok. Conflict on line <entity>. Loop index is <entity> (<filename>)
2314: Could not optimize: Potential pointer aliasing - use restrict qualifier if ok. Conflict on line <entity>. (<entity>,<filename>)
2315: Could not optimize: Potential pointer aliasing - use restrict qualifier if ok. Conflict on line <entity>. (<entity>)
2324: Could not optimize: erroneous argument list
2335: Could not optimize: automatic array present
2351: Loop nest fused with following nest(s)
2352: Premature end of input file
2353: Creation of automatic array is needed for parallelization
2355: Invalid combination of switches -xj, -ym, -yh
2357: Could not optimize: function return value as loop index
2358: This constant declaration inhibits inline expansion
2362: Could not optimize: cannot parallelize I/O statements
2365: Feature currently restricted
2368: Could not optimize: dummy argument array with intrinsic function
2376: Pointer variable inhibits inline expansion
2377: Array section in argument to subroutine prevents optimization
2378: Cannot open input file
2380: Parallel routine generated
2381: Parallel directive missing begin or end of block structure
2382: Could not optimize: routine name too long
2383: Nested force parallel directives not allowed
2384: Incorrect placement of forcepardo directive
2385: Incorrect placement of forcereduction directive
2386: Label must be inside forced parallel loop or forced parallel case
2387: Reduction variable not used in parallel loop as reduction
2389: Missing, bad nesting, or misuse of directive
2391: Ordered directive without ordered directive on work-sharing construct
2392: Cannot branch into or out of construct
2393: Do-loop index must be of type integer
2394: Only one clause allowed on parallel construct
2396: Internal error: input line buffer overflow. Please contact your supplier
2398: End of file reached before end of block
2399: Missing semicolon (;)
2400: Syntax error
2401: Internal fault: table overflow. Please contact your supplier
2402: Variable not declared
2403: Multiply defined variable
2404: Conflicting storage classes specified on declaration
2405: Conflicting type definition specified on declaration
2406: Identifier not typed
2407: Illegal array definition
2408: Not enough memory to optimize
2409: Internal fault. Please contact your supplier
2410: Illegal typedef declaration
2411: Internal fault: illegal expression pointer. Please contact your supplier
2412: Internal fault: tree build error. Please contact your supplier
2413: Internal fault: illegal token. Please contact your supplier
2414: Internal fault: end of output string not found. Please contact your supplier
2415: Undefined structure/union reference
2416: Illegal structure/union definition
2417: Illegal declaration in structure/union
2418: Illegal enum declaration
2419: Unbalanced expression
2420: Illegal indirection
2421: Illegal operation on constant
2422: Illegal pointer operation
2423: Cannot assign to constant
2424: Illegal combination of pointers
2425: Internal fault: unbalanced blocks. Please contact your supplier
2429: Could not inline: External definition conflicts with non-external definition
2430: Could not inline: Conflicting structure definitions
2431: Could not inline: Conflicting structure typedef usage
2432: Could not inline: Recursive function
2433: Could not inline: Static variables in function
2434: Could not inline: Structure name conflict
2435: Could not inline: Inlined function not by itself
2436: Not used
2437: Could not inline: Nesting level too deep
2438: Could not inline: Void function used in expression
2439: Could not inline: Identifier declaration
2440: Could not inline: Argument levels of indirection do not match
2441: Could not inline: Conflicting enumerator declaration
2442: Could not inline: Cannot remove function from expression
2443: Could not inline: Cannot resolve multi-dimensional argument
2444: Could not inline: A local variable conflicts with a global variable
2445: Illegal shape statement
2446: Illegal dimensions on partially specified shape object
2447: Illegal dimensions on fully specified shape object
2448: Multiple shape information
2449: A valid shape identifier must follow the ':'
2450: Must declare a type for parallel variable
2451: Illegal use of left indexing
2452: Parallel variable has illegal shape information
2453: Could not translate: unknown shape information
2454: Could not translate parallel function
2455: Invalid argument or number of arguments in function
2456: Must allocate an unspecified or partially specified shape
2457: Allocating shape that exceeds the maximum assumed
2458: Requested rank does not match partially defined shape rank
2459: Cannot translate DPC or C*
2460: Rank of shape exceeds assumed rank of compiler
2461: All dimensions of left indexing must be specified, if any
2462: Number of left indices exceeds maximum
2463: Unsupported feature:
2464: Number of initializers cannot exceed number of aggregate members
2465: A structure or union type may not contain a parallel member
2466: Bitfield must be non-negative integer constant
2467: Incompatible shapes in expression
2468: Identifiers ending with _ are reserved
2469: Function prototype specifies a parallel argument
2470: Could not inline: function returns pointer to function
2471: Could not inline: could not handle formal argument of this type
2472: Could not inline: reference to static function
2473: Internal fault: error during transformation. Please contact your supplier
2474: Could not optimize parallel pointers
2475: Cannot create void descriptor for global symbol, try renaming
2476: Could not resolve reference to overloaded function
2477: Dpce keyword not recognized
2478: Must declare at least one declarator, tag, or enum member
2479: Improper use of keyword
2480: Cannot take the address of an element of a parallel operand
2481: Fully specified shapes cannot be assigned
2482: First operand of a conditional expression must have scalar type
2483: Illegal operator for nonparallel left-hand side and parallel right-hand side
2484: Illegal prototype definition
2485: Incompatible shape definitions
2486: Shape expressions of 'void' must be a prototype or pointer
2487: An object of type void cannot be declared
2488: A shape-specifier must only follow type-specifier
2489: A nodal or elemental function must specify a parameter list
2490: An elemental function must not contain parallel objects
2491: An elemental function must not contain parallel syntax
2492: An elemental function must only call elemental functions
2493: An elemental function cannot have static variables
2494: A nodal function must only call nodal and elemental funcs
2495: A nodal function must not reference file-scope identifiers
2496: An elemental function cannot return shape- or parallel-type
2497: An elemental function cannot have parallel-type parameters
2498: A nodal function may not have non-void parallel arguments
2499: Array dimension must be a constant integral expression greater than zero
2500: File scope shape-definition must be a constant integral expression
2501: Shape-definition must be an integral expression greater than zero
2502: A structure or union may not contain a shape-type member
2503: Operation between two pointer types is not allowed here
2504: Operation between a pointer type and a non-integral type is not allowed here
2505: Arguments of a conditional expression must be compatible parallel types
2506: Parallel operand of ? operator must have scalar element type
2507: Operands of ? operator must have compatible types
2508: Operands of ? operator must be compatible struct or union
2509: Operands of ? operator must be pointers to compatible types
2510: Cannot take the address of an lvalue with parallel index
2511: Cannot optimize this expression as it is not of integral type
2512: Cannot cast between a parallel pointer and a non-parallel pointer
2513: Block or scale specifier must be integral value greater than zero
2514: Function reference under context
2515: Expression too complex to be inlined
2516: High Level Optimization halted: assembly code in routine
2517: attempt to obtain value of write-only object
2518: assignment to write-only bit fields is not supported
2519: Unable to determine constant iteration count for this loop
2520: Function may have side effects that prevent optimization
2521: Casts of typedefs inhibit optimization
2522: Could not inline function: address of constant argument taken
2523: use of inline assembler is deprecated
2524: #pragma pop with no matching #pragma push

#pragma push and #pragma pop save and restore the current pragma state.

Each pop must be paired with a push, so an error is raised for the following code:

#pragma push
;
#pragma pop
;
#pragma pop
2525: #pragma push with no matching #pragma pop

#pragma push and #pragma pop save and restore the current pragma state.

Each push must be paired with a pop.

2529: expression must be an integral constant in range <entity> to <entity>
2530: padding added to end of struct <entity>

The compiler can warn of padding added at the end of a struct or between structs. This warning is off by default. You can enable it with --diag_warning 2530 or --remarks.

For example:

typedef struct { 
  int x; 
  char y; 
} A; 
typedef struct { 
  int p; 
  int q; 
} B; 

results in the message:

Warning: #2530-D: padding added to end of struct 'anonymous' 

The compiler can also warn of padding inserted within a struct, see message number 1301.

2531: dllimport/dllexport applied to a member of an unnamed namespace
2532: support for trigraphs is disabled
2533: the <entity> attribute can only appear on functions and variables with external linkage
2534: strict mode is incompatible with treating namespace std as an alias for the global namespace
2540: invalid symbolic operand name <entity>
2541: a symbolic match constraint must refer to one of the first ten operands
2542: use of __if_exists is not supported in this context
2543: __if_exists block not closed in the same scope in which it was opened
2544: thread-local variable cannot be dynamically initialized
2545: conversion drops \"__unaligned\" qualifier
2546: some enumerator values cannot be represented by the integral type underlying the enum type
2547: default argument is not allowed on a friend class template declaration
2548: multicharacter character literal (potential portability problem)
2549: expected a class, struct, or union type
2550: second operand of offsetof must be a field
2551: second operand of offsetof may not be a bit field
2552: cannot apply offsetof to a member of a virtual base
2553: offsetof applied to non-POD types is nonstandard
2554: default arguments are not allowed on a friend declaration of a member function
2555: default arguments are not allowed on friend declarations that are not definitions
2556: redeclaration of <entity> previously declared as a friend with default arguments is not allowed
2557: invalid qualifier for <type> (a derived class is not allowed here)
2558: invalid qualifier for definition of class <type>
2559: no prior push_macro for %sq
2560: wide string literal not allowed
2562: %sq is only allowed in C
2563: __ptr32 and __ptr64 must follow a \"*\"
2564: __ptr32 and __ptr64 cannot both apply
2565: template argument list of <entity> must match the parameter list
2566: an incomplete class type is not allowed
2567: complex integral types are not supported
2568: __real and __imag can only be applied to complex values
2569: __real/__imag applied to real value
2570: <entity> was declared deprecated (<entity>)
2571: invalid redefinition of <entity>
2572: __thiscall can only appear on nonstatic member function declarations
2573: __thiscall not allowed on function with ellipsis parameter
2574: explicit specialization of <entity> must precede its first use (<entity>)
2575: a sealed class type cannot be used as a base class
2576: duplicate class modifier
2577: a member function cannot have both the "abstract" and "sealed" modifiers
2578: a sealed member cannot be pure virtual
2579: nonvirtual function cannot be declared with "abstract" or "sealed" modifier
2580: member function declared with "override" does not override a base class member
2581: cannot override sealed <entity>
2582: <entity> was declared with the class modifier "abstract"
2659: duplicate function modifier
2660: invalid character for char16_t literal
2661: __LPREFIX cannot be applied to char16_t or char32_t literals
2662: unrecognized calling convention <entity>, must be one of:
2666: underlying type of enum type must be an integral type
2667: some enumerator constants cannot be represented by <type>
2668: <entity> not allowed in current mode
2669: type traits helpers option can be used only when compiling C++
2670: attribute \"sentinel\" requires an ellipsis parameter
2671: argument must be a constant null pointer value
2672: insufficient number of arguments for sentinel value
2673: sentinel argument must correspond to an ellipsis parameter
2674: __declspec(implementation_key(...) can appear only between #pragma start_map_region and #pragma stop_map_region
2675: #pragma start_map_region already active: pragma ignored
2676: no #pragma start_map_region is currently active: pragma ignored
2677: <entity> cannot be used to name a destructor (a type name is required)
2678: nonstandard empty wide character literal treated as L'\0'
2679: "typename" may not be specified here
2680: a non-placement operator delete must be visible in a class with a virtual destructor
2681: name linkage conflicts with previous declaration of <entity>
2682: alias creates cycle of aliased entities
2684: a variable with static storage duration allocated in a specific register cannot be declared with an initializer
2685: a variable allocated in a specific register must have POD type
2686: predefined meaning of <entity> discarded
2687: declaration hides built-in <entity>
2688: declaration overloads built-in <entity>
2689: static member function not permitted here
2691: designator may not specify a non-POD subobject
2693: anonymous union qualifier is nonstandard
2694: anonymous union qualifier is ignored
2696: __declspec(%s) ignored (it has no meaning for a C struct)
2697: specifiers after comma between declarations are nonstandard
2698: nonstandard specifier ignored
2699: attributes are ignored on an enum declaration that is not also a definition
2700: declaring a reference with \"mutable\" is nonstandard
2701: a condition declaration for an array is always true
2702: static assertion failed with %sq
2703: visibility attribute ignored because it conflicts with a previous declaration
2704: field name resolves to more than one offset -- see %nod1 and %nod2
2705: %sq is not a field name
2706: case label value has already appeared in this switch %p
2707: a member function cannot have internal linkage
2708: the option to list macro definitions may not be specified when compiling more than one translation unit
2709: unexpected parenthesis after declaration of %n (malformed parameter list or invalid initializer?)
2710: parentheses around a string initializer are nonstandard
2712: a variable declared with an auto type specifier cannot appear in its own initializer
2713: cannot deduce \"auto\" type
2714: initialization with \"{...}\" is not allowed for \"auto\" type
2715: \"auto\" type cannot appear in top-level array type
2716: \"auto\" type cannot appear in top-level function type
2717: a member of type %t cannot have an in-class initializer
2718: a member with an in-class initializer must be const
2719: cannot deduce \"auto\" type (initializer required)
2720: \"auto\" type is %t1 for this entity, but was previously implied to be %t2
2721: invalid constructor declaration
2722: invalid use of a type qualifier
2723: a union cannot be abstract or sealed
2724: \"auto\" is not allowed here
2725: definition of base class type not completed yet
2726: \"extern template\" cannot refer to a specialization of static %nd
2727: \"extern template\" cannot follow explicit instantiation of %n
2728: __declspec(restrict) requires a function returning a pointer type
2729: the \"report_gnu_extensions\" option is only valid in GNU C and GNU C++ modes
2730: variable-length array types are nonstandard
2731: designators are nonstandard
2732: this designator syntax is a GNU extension
2733: compound literals are nonstandard
2734: statement expressions are a GNU extension
2735: asm name ignored for previously defined entity
2736: attributes are a GNU extension
2737: extended asm syntax is a GNU feature
2738: volatile asm declarations are a GNU extension
2739: asm name specifiers are a GNU extension
2740: the \"__restrict\" qualifier is nonstandard
2741: \"typeof\" is a GNU extension
2742: modifying the size or signedness of a typedef is nonstandard
2743: zero-length arrays are a GNU extension
2744: flexible array members are nonstandard
2745: attribute \"nonnull\" references nonpointer parameter
2746: argument for attribute \"nonnull\" is larger than number of parameters
2747: no parameter has pointer type
2748: null argument provided for parameter marked with attribute \"nonnull\"
2749: the destructor for %t1 has been suppressed because the destructor for %t2 is inaccessible
2750: the suppressed destructor for %t is needed
2751: routine is both "inline" and "noinline"
2752: invalid cleanup routine
2753: attribute \"cleanup\" requires automatic storage duration
2754: attribute \"cleanup\" does not apply to parameters
2755: cleanup routine has invalid type
2756: call of cleanup routine requires suspect conversion
2757: __sptr and __uptr must follow a \"*\"
2758: __sptr and __uptr cannot both be specified
2759: widening pointer conversion from %t1 to %t2 extends sign bit
2760: __sptr and __uptr do not apply to pointer-to-member types
2761: the declaration of the copy assignment operator for %t has been suppressed because %n is const
2762: the declaration of the copy assignment operator for %t has been suppressed because %n has reference type
2763: the declaration of the copy assignment operator for %t1 has been suppressed because that of %t2 was suppressed
2764: the declaration of the copy assignment operator for %t1 has been suppressed because that of %t2 is ambiguous
2765: the declaration of the copy assignment operator for %t1 has been suppressed because that of %t2 is inaccessible
2766: the declaration of the copy constructor for %t1 has been suppressed because that of %t2 was suppressed
2767: the declaration of the copy constructor for %t1 has been suppressed because that of %t2 is ambiguous
2768: the declaration of the copy constructor for %t1 has been suppressed because that of %t2 is inaccessible
2769: the destructor for %t1 will not be called because it is inaccessible and the destructor for %t2 was suppressed
2770: definition at end of file not followed by a semicolon or a declarator
2771: first argument must be a pointer to integer or enumeration type
2772: synchronized operations are valid only on objects of size 1, 2, 4, or 8
2773: extra arguments ignored
2774: '=' assumed following macro name %sq in command-line definition
2775: white space is required between the macro name %sq and its replacement text
2776: result of call is not used
2777: attribute \"warn_unused_result\" is ignored for void return type
2779: dllimport/dllexport is ignored on redeclaration using a qualified name
2780: too many characters in character literal -- extra leading characters ignored
2781: %n cannot be declared inline after its definition %p
2784: __fp16 cannot be specified as the type of a function argument
2785: __fp16 cannot be specified as the return type of a function
2786: support for wchar_t has been disabled
2787: __attribute__((at)) missing for bitbanded variable
2788: a template argument may not reference a type with no name linkage
2789: \"virtual\" is ignored here
2790: a template argument may not reference a variable-length array type
2791: a universal character name cannot designate a surrogate code point
2792: #include_next cannot be used in the primary source file
2793: %no1 cannot be specified in a template member definition -- %no2 assumed instead
2794: attribute %sq is ignored on local function declaration
2795: concatenation with %sq in %n does not create a valid token
2796: %no is ambiguous (%n2 assumed)
2797: a type qualifier is not allowed on a static member function
2798: a type qualifier is not allowed on a constructor or destructor
2799: a type qualifier is not allowed on operator new or operator delete
2800: a type qualifier is not allowed on a nonmember function
2801: __assume expression with side effects discarded
2802: requested constructor/destructor priority is reserved for internal use
2803: unrecognized GCC pragma
2804: unrecognized GCC visibility pragma directive
2805: unrecognized visibility kind
2806: visibility pragma was still active
2807: no matching visibility push
2808: typeid of incomplete type
2810: array %n assumed to have one element
2811: restrict qualifier is ignored
2812: attributes ignored here
2813: empty dependent statement in if-statement

This remark indicates that an if statement has no dependent statement, and is not followed by an else statement. For example:

if (x <= 0); // remark 2813 is generated here
{
    foo(x);
}

You can enable this remark by using --diag_warning 2813 or --remarks. When using the --remarks option, you can suppress this remark by using --diag_suppress 2813.

2814: empty dependent statement in \"else\" clause of if-statement
2815: empty dependent statement in while-statement

This remark indicates that a while statement has no dependent statement. For example:

while (x != 0);

You can enable this remark by using --diag_warning 2815 or --remarks. When using the --remarks option, you can suppress this remark by using --diag_suppress 2815.

2816: static %n treated as extern because it was referenced but not defined
2817: temporary used for conditional class rvalue result (C++ core issue #446 resolution)
2818: %t1 reference to pointer to class is not supported; downgrading the severity from error will treat the type as pointer to class %t2
2819: class %t has an implicitly instantiated key function %no
2820: string literal too long -- excess characters ignored
2821: Could not optimize: Expression-temporary destructor prevents inlining
2822: Could not optimize: ARM virtual function elimination code prevents inlining
2823: Structure pointer inhibits loop optimization
2824: Could not inline: Data types of arguments do not match
2825: VLDM/VSTM are not supported in inline assembler
2826: LDRD/STRD with implicit second operand (rt2 = rt+1) not supported. Specify rt2 explicitly
2827: SETEND is not supported in inline assembler
2828: Cannot encode the shift
2829: Cannot perform desired action on condition flags
2830: Cannot do desired conditional execution
2831: Can only shift by 0, 8, 16 and 24
2832: Cannot encode requested width
2834: Cannot encode the shift type
2842: Cannot encode desired transfer size
2843: Cannot encode desired load/store mode
2846: bitfieldMsb not unsigned 5-bit immediate
2847: bitfieldLsb not unsigned 5-bit immediate
2848: (bitfieldMsb - bitfieldLsb) not unsigned 5-bit immediate
2851: Cannot encode instruction condition
2852: Cannot encode immediate in 8-bits and a rotation
2854: Cannot encode immediate in 8-bits, 8-bits shifted left or 8-bits duplicated in all, odd or even bytes
2855: Cannot encode shift by register
2856: rd and rn must be same register
2857: rd and rm must be same register
2858: rd,rn must be PC,LR
2861: Cannot encode desired IT condition sequence
2862: Cannot encode desired register list
2863: Cannot encode writeback
2864: Cannot encode writeback
2865: Cannot encode desired load/store multiple mode
2866: Cannot encode desired load/store multiple PSR / user-register mode
2867: Cannot encode desired load/store translate/sign-extend
2872: cannot encode M-profile system registers
2873: cannot encode desired status register
2874: cannot encode desired PSR mask
2876: Cannot encode desired cps aif action
2877: Cannot encode desired cps aif mask
2878: Cannot encode desired cps processor mode
2879: rn must be PC
2884: Cannot encode desired register sort
2885: Cannot encode desired compressed constant
2887: Cannot encode desired vtb length
2889: Cannot encode desired register list count
2890: Cannot encode desired register list spacing
2891: Cannot encode desired alignment hint
2897: Cannot encode instruction
2898: Instruction has unpredictable behaviour
2899: Instruction is deprecated and may not work in future architecture revisions
2900: Expected XScale accumulator register
2901: Expected an inline assembly instruction
2902: unrecognized Unicode source kind (must be one of UTF-8, UTF-16, UTF-16LE, UTF-16BE)
2903: Unicode character with hex value <entity> not representable in preprocessing output
2904: vector_size attribute requires an arithmetic or enum type
2905: vector size is too large
2906: vector size must be a power of two
2907: vector size must be a multiple of the element size
2908: mixed vector-scalar operation not allowed
2909: operation requires two vectors of the same size
2910: template-dependent vector size is not allowed
2913: vector_size attribute is not allowed with a complex element type
2915: vector operation requires identical element types
2916: vector operation does not apply to vector with non-integral type
2917: cannot open <entity> file <entity>
2918: cannot open <entity> file <entity>: <entity>
2933: IL output
2934: conversion drops "__restrict" qualifier
2935: unable to obtain mapped memory for <entity>: <entity>
2936: array of elements containing a flexible array member is nonstandard
2937: a template parameter may not have a vector type
2938: the initialization of <entity> will be done before that of <entity>

In the C++ standard, member variables are initialized in the order they are declared in the class, not in the order they are written in the initializer list. The compiler produces this warning when the order of the initializations in the initializer list does not match the order of declarations in the class. You can enable this warning with --diag_warning 2938 or --remarks.

For example:

class Foo {
    int x;
    char y;
public:
    Foo() : y(42), x(32) {}
};

results in the message:

Warning: #2938-D: the initialization of member "Foo::x" will be done before that of member "Foo::y"
2940: inheritance kind is ignored on an enum specifier
2942: modifier is ignored on an enum specifier
2943: identifier character cannot be represented in Unicode
2944: header name contains characters that cannot be represented in Unicode
2945: <entity> is not a valid locale name
2946: declaring a void parameter list with a template parameter is nonstandard
2947: lambdas option can be used only when compiling C++
2948: explicit capture matches default
2949: <entity> is not a variable
2950: a variable with static storage duration cannot be captured in a lambda
2951: \"this\" cannot be captured by reference
2952: \"this\" cannot be used inside the body of this lambda
2953: a member of an outer-scope anonymous union cannot be referenced inside the body of a lambda
2954: an enclosing-function local variable cannot be referenced in a lambda body unless it is in the capture list
2955: invalid reference to an outer-scope local variable in a lambda body
2956: a local variable outside the current function scope cannot be captured
2957: the enclosing-function \"this\" cannot be referenced in a lambda body unless it is in the capture list
2958: the body of a value-returning lambda with no explicit return type must be a single return statement
2959: lambda captured variable of type %t1 cannot be copied to closure class field of type %t2
2960: invalid template directory:
2968: enumeration value is outside the range of its underlying type (%t)
2969: "\" followed by white space is not a line splice
2970: this dynamic_cast cannot be done without runtime type information, which is disabled

The compiler produces this error when a dynamic_cast must perform runtime type checking but you have disabled support for RTTI by compiling using the --no_rtti option. For example the following code results in this error:

class Foo {
    virtual int foo() = 0;
};
class Bar {};
Bar *convert(Foo *x) {
    return dynamic_cast<Bar *>(x);
}
2971: conversion to <entity> is ambiguous; direct base selected
2972: an internal buffer would be too large
2973: C++ exception handler used, but exception handling semantics have not been specified
2974: type qualifier ignored on constructor
2975: a variable captured by a lambda cannot have a type involving a variable-length array
2976: conversion between incompatible vector types
2977: expected a \"{\" introducing a lambda body
2978: rvalue references option can be used only when compiling C++
2979: a type qualifier is not allowed on a lambda
2980: a name cannot appear more than once in a capture-list
2981: explicit template arguments ignored
2982: a lambda is not allowed in a constant expression
2983: <entity> is not a class type
2984: "delete" applied to a pointer-to-array type treated as delete[]

The compiler produces this warning when the programmer has used the wrong kind of delete operator and the compiler has automatically corrected it. For example, the following code results in this warning:

void f(char (*data)[10]) {
    delete data;
}
2985: "delete" applied to a pointer-to-array type is nonstandard; treated as delete[]

This warning has the same meaning as message number 2984. The compiler generates this instead of 2984 when you compile with --strict on the command line.

2986: %n cannot be called with the given argument list
2987: an rvalue reference cannot be bound to an lvalue
2988: a nontype template parameter cannot have rvalue reference type
2989: type qualifiers are ignored (underlying type is a reference)
2990: <entity>, declared using a local type, must be defined in this translation unit
2991: <entity>, declared using a type with no linkage, must be defined in this translation unit
2992: the operand of an rvalue reference dynamic_cast must have a complete class type
2993: \"= default\" can only appear on default constructors, copy/move constructors, copy/move assignment operators, and destructors
2994: \"= delete\" can only appear on the first declaration of a function
2995: %npd cannot be referenced -- it is a deleted function
2996: a lambda is not allowed in an unevaluated expression
2997: __builtin_va_arg_pack/__builtin_va_arg_pack_len can appear only in an inline function with an ellipsis parameter
2998: \"= default\" cannot be specified on a friend declaration
2999: expected a C++ keyword
3000: this cast to an rvalue reference type is invalid because the underlying type %t is incomplete
3001: offset is not constant
3002: unrecognized #pragma comment type <entity>
3003: option to control whether \"auto\" is a type specifier can be used only when compiling C++
3004: option to control whether \"auto\" is a storage class can be used only when compiling C++
3005: the type specifier and storage class specifier meanings of \"auto\" cannot both be disabled
3006: invalid string in #pragma comment
3007: deleted function overrides nondeleted %n
3008: nondeleted function overrides deleted %n
3009: the default constructor of %t cannot be referenced -- it is a deleted function
3010: an rvalue reference is not allowed as a catch type
3011: default arguments of <entity> is incompatible with a declaration in another translation unit
3012: default arguments of <entity> were different during compilation of <entity>
3013: %nd cannot be specialized because it is deleted
3014: initializer for <entity> is different in another translation unit
3015: initializer for <entity> was different during compilation of <entity>
3016: a designator into a template-dependent type is not allowed
3017: unrecognized conformance kind
3018: expected "on" or "off"
3019: #pragma conform(forScope) stack is empty
3020: no previous #pragma conform(forScope) entry matches <entity>
3021: forScope behavior is nonstandard
3022: forScope behavior is standard
3023: function \"main\" cannot be deleted
3024: type qualifiers are meaningless here
3025: invalid type for defaulted assignment operator
3026: function templates cannot be defaulted
3027: invalid type for defaulted constructor
3028: function call requires one argument
3029: function call requires a real floating-point argument
3030: a copy constructor with a default argument cannot be defaulted
3031: a predeclared function cannot be deleted
3032: %nfd, required for copy that was eliminated, cannot be referenced -- it is a deleted function
3033: nonstandard first parameter <entity> of "main", expected "int"
3034: nonstandard number of parameters for "main", expected zero or two parameters
3035: nonstandard second parameter <entity> of "main", expected "char *[]" or "char **"
3036: %sq was specified as both a system and non-system include directory -- the non-system entry will be ignored
3037: option to control move constructors and move assignment operators can be used only when compiling C++
3040: error while deleting file <entity>: <entity>
3041: volatile type qualifier ignored for variables with __global_reg storage class
3042: detected use of ARM inline assembly in a Thumb function; automatically promoted function to ARM
3043: automatic promotion of functions to ARM is deprecated; use \"#pragma arm\" instead
3044: \"#pragma arm\" preceded by incompatible inline assembly
3045: \"#pragma thumb\" preceded by incompatible inline assembly
3046: unfinished IT block
3047: conditional instruction will be emitted as a conditional branch and unconditional instruction
3048: inline assembly not permitted when generating Thumb1 code
3049: SWP instructions are deprecated in architecture ARMv6 and above
3050: FLDMX/FSTMX instructions are deprecated
3051: instruction is unpredictable in the current instruction set
3052: instruction is unpredictable with MSB < LSB
3053: instruction is unpredictable with the specified immediate value
3054: instruction is unpredictable with the specified condition
3055: instruction is unpredictable in IT block
3056: instruction is unpredictable with the specified special register
3057: instruction is unpredictable with the specified PSR mask
3058: immediate not in range <entity>
3059: immediate not a multiple of <entity>
3060: selected target does not have floating-point hardware
3061: unrecognized instruction opcode
3062: expected "<entity>"
3063: expected flag characters from "<entity>"
3064: expected special register for MSR/MRS
3065: deprecated special register name
3066: deprecated special register field specifier (use "<entity>" instead)
3067: MRS cannot select fields, use APSR, CPSR or SPSR directly
3068: expected a condition code
3069: VCVT conversion between these data types not available
3070: destination operand type or register sort incorrect
3071: source operand type or register sort incorrect
3072: data type specifiers do not match a valid encoding for this instruction
3073: missing data type specifier
3074: expected scalar operand
3075: expected data type specifier "<entity>" for destination operand
3076: expected data type specifier "<entity>" for source operand(s)
3077: writeback with no effect
3078: data type specifiers are not allowed on this instruction
3079: invalid instruction width qualifiers or data type specifiers
3080: unsupported special register
3081: expected end of line or a ";"
3082: option to enable GNU-C89-style inlining can be used only when compiling C
3083: function was previously declared without the "gnu_inline" attribute
3084: the "gnu_inline" attribute is ignored on non-inline functions
3092: anonymous unions are only supported in --gnu mode, or when enabled with #pragma anon_unions
3093: anonymous structs are only supported in --gnu mode, or when enabled with #pragma anon_unions
3094: __stack_chk_guard must be data
3095: __stack_chk_fail must be a function
3096: value of constant expression must fit fully within the bitmask <mask>
3097: a trailing return type requires the "auto" type specifier
3098: a trailing return type cannot appear in a nested declarator
3099: a function declarator with a trailing return type must be preceded by a simple "auto" type specifier
3100: "auto" function requires a trailing return type
3101: a member template cannot have a pure specifier
3102: option to control the nullptr keyword can be used only when compiling C++
3103: std::nullptr_t converted to bool
3106: attribute <attribute> does not allow an empty argument list
3107: attribute appears more than once
3108: attribute <attribute> does not apply here
3109: attribute <attribute> does not apply to bit fields
3110: attribute <attribute> requires a bit field
3111: attribute <attribute> does not apply to member functions
3112: attribute <attribute> requires a member function
3113: attribute <attribute> does not apply to virtual functions
3114: attribute <attribute> requires a virtual function
3115: attribute <attribute> does not apply to pure virtual functions
3116: attribute <attribute> requires a pure virtual function
3117: attribute <attribute> does not apply to register variables
3118: attribute <attribute> requires a register variable
3119: attribute <attribute> did not appear on original declaration
3120: attributes are not allowed here
3121: attribute <attribute> must appear in a class definition
3122: "final" applied to a pure virtual function
3123: cannot override "final" <entity>
3124: <entity> previously declared without the carries_dependency attribute
3125: invalid initializer for array <entity>
3126: must specify C++11 mode when building runtime library
3127: attribute <attribute> does not apply to function types
3128: attribute <attribute> requires a function type
3129: attribute <attribute> does not apply to nonstatic member functions
3130: attribute <attribute> does not apply to automatic variables
3131: attribute <attribute> requires an automatic variable
3132: attribute <attribute> does not apply to a variable or function with external linkage
3133: attribute <attribute> requires a local variable
3134: attributes ignored here
3135: attribute does not apply to any entity
3136: bad attribute argument substitution
3137: the argument of the "tls_model" attribute must be "global-dynamic", "local-dynamic", "initial-exec", or "local-exec"
3138: the declaration <enntity> specified a different "tls_model" argument
3139: attribute <attribute> does not apply to inline functions
3140: attribute <attribute> requires a inline function
3141: both file names in an include_alias pragma must use the same delimiter characters
3142: comparison between signed and unsigned operands
3143: attribute <attribute> ignored on unnamed type
3144: attribute <attribute> ignored because no definition follows
3145: thread locality is incompatible with a previous declaration of <entity>
3146: this enclosing-function local variable cannot be referenced in this lambda body because an enclosing lambda does not allow implicit captures
3147: this attribute argument contains unmatched parentheses, brackets, or braces
3148: a call to __builtin_fpclassify requires five integral arguments followed by one floating-point argument
3149: the last argument in a call to __builtin_fpclassify must have a real floating-point type
3150: alignment cannot be set to less than the default alignment
3151: attributes are not allowed on explicit instantiations
3152: attribute <attribute> does not apply to a definition
3153: attribute <attribute> requires a definition
3154: standard attributes cannot appear on friend declarations that are not definitions
3155: specified alignment (<n>) is different from alignment (<n>) specified on a previous declaration
3156: alignment attribute must also appear on definition <entity>
3157: <entity> may not be used in the type-id of the alias-declaration
3159: <type> cannot be transparent because its first field has a floating-point type
3160: <type> cannot be transparent because its first field is a bit field
3161: virtual function of a "base_check" class overrides a base class member but lacks the "override" attribute
3162: "hiding" attribute specified on a declaration that does not hide a base class declaration
3163: "hiding" attribute specified on a declaration referred to by the using-declaration <entity>
3164: attribute "hiding" is required on a declaration (in a "base_check" class) that hides <entity>
3165: <entity> is not defined in this translation unit but depends on a local type
3166: <entity> is not defined in this translation unit but depends on a type with no linkage
3167: attribute <attribute> is missing in another translation unit
3168: attribute <attribute> conflicts with another translation unit
3169: the "nonstd_gnu_keywords" option is only valid in GNU C and GNU C++ modes
3170: use of a const variable in a constant expression is nonstandard in C
3171: an initializer cannot be specified for a flexible array member with automatic storage duration
3173: a "final" class type cannot be used as a base class
3174: exported templates are no longer in the standard C++ language
3175: a template-dependent designator is not allowed
3176: second operand of offsetof may not be a field with reference type
3177: long lifetime temporaries are incompatible with other requested newer language features
3178: wide character string literal will not be quoted in diagnostics
3179: missing arguments for attribute <attribute>
3180: options "c++11" and "c++11_sfinae" require a different compiler configuration
3181: template parameter pack not at end of parameter list
3182: a parameter pack declaration is not allowed here
3183: a parameter pack cannot have a default
3184: C++/CLI can be enabled only in Microsoft C++ mode
3185: "value__" cannot be used as the name of an enumerator constant (it is a reserved name in this context)
3186: an explicit enumerator value is required in an enumeration type with boolean underlying type
3188: parameter pack <entity> was referenced but not expanded
3189: pack expansion does not make use of any argument packs
3190: pack %sq does not have the same number of elements as %sq2
3192: vector_size attribute is not allowed with an enumeration type
3193: a property cannot be both static and virtual
3194: an indexed property cannot be trivial
3195: this declaration cannot appear in a property definition
3196: a qualified function type cannot be used to declare an accessor function
3197: an accessor function cannot have an ellipsis parameter
3198: a "get" accessor was already declared for this property <property>
3199: a "set" accessor was already declared for this property <property>
3200: a "get" accessor cannot have a parameter
3201: return type of "get" accessor does not match property type
3202: return type of "set" accessor must be void
3203: a property cannot declare an empty list of indices
3204: a property index cannot have type void
3205: index type does not match the corresponding parameter in the "set" accessor
3206: index type does not match the corresponding parameter in the "get" accessor
3207: index type is missing in the "set" accessor
3208: index type is missing in the "get" accessor
3209: "set" accessor is missing its value parameter
3210: accessor function has too many parameters
3211: the last parameter of the \"set\" accessor does not match the property type
3212: %sq requires C++/CLI mode
3213: error in Win32 API "<entity>": <entity>
3214: #using may only be used at global scope
3216: member name %sq is reserved by %nd
3217: expected a "["
3218: C++/CLI mode requires microsoft_version >= 1600
3219: a default-indexed property cannot be static
3220: a property accessor cannot be both static and virtual
3221: a top-level visibility specifier cannot appear on a nested type declaration
3222: a top-level visibility specifier requires a type definition
3223: a trivial property cannot have a reference type
3224: a trivial property cannot have a const or volatile type
3225: %nd was previously declared as a different kind of enumeration type
3226: a variable captured by a lambda cannot have a managed class type
3227: virtual function overriding with a covariant return type is not allowed in a managed class
3228: array of handles is not allowed
3229: handle to array is not allowed
3230: handle to function is not allowed
3231: handle to void is not allowed
3232: handle to handle, pointer, or reference is not allowed
3233: tracking reference to function is not allowed
3235: a field cannot be a tracking reference
3236: a tracking reference cannot be combined with an ordinary reference in this way
3237: a variable with static storage duration cannot have a ref class type
3238: a managed class cannot be unnamed
3239: a managed class cannot be local
3240: %nd was previously declared as a different kind of class
3241: <entity> was previously declared as a different kind of class template
3242: literal data members can only be members of managed classes
3243: a literal data member must be initialized
3244: a literal data member of type %t is not allowed
3245: const has no effect on a literal data member
3246: initonly data members can only be members of managed classes
3247: const has no effect on an initonly data member
3248: <entity> has no "get" accessor
3249: <entity> has no "set" accessor
3250: a static constructor cannot have parameters
3251: a static constructor cannot be a member template
3252: a compound lvalue is not allowed as an asm output operand
3253: properties can only be members of managed classes
3254: a type qualifier is not allowed on a member function of a managed class
3255: an ordinary pointer to a C++/CLI ref class or interface class is not allowed
3256: an ordinary reference to a C++/CLI ref class or interface class is not allowed
3257: override specifier does not name a base class member function
3258: override specifier designates a nonvirtual member <entity>
3259: member function overrides <entity> which is already overridden by <entity>
3260: at most one visibility specifier is allowed
3261: type <type> used for delegate definition is not a function type
3262: delegate member types can only be members of managed classes
3263: a tracking reference to a delegate type is not allowed
3264: a delegate type is not allowed here
3265: this pack expansion produced an empty list of expressions, and an expression is needed here
3266: an event cannot be both static and virtual
3267: events can only be members of managed classes
3268: this declaration cannot appear in an event definition
3269: event type must be a handle-to-delegate type
3270: an \"add\" accessor was already declared for this event %p
3271: a \"remove\" accessor was already declared for this event %p
3272: a \"raise\" accessor was already declared for this event %p
3273: an event accessor cannot be both static and virtual
3274: return type of "add" and "remove" accessors must be void
3275: event accessor is missing its value parameter
3276: accessor function has too many parameters
3277: the type <entity> of the parameter of the event accessor does not match the event type (<entity>)
3278: the type of the "raise" accessor does not match the event's delegate invocation type
3279: an event definition must include both "add" and "remove" accessors
3280: a static conversion function must accept exactly one argument
3281: static operator must have a parameter type T, T&, T%%, or T^ with T = %t
3282: the operand of sizeof... must be a parameter pack name
3283: the sizeof... operator can be used only in a variadic template
3284: event name cannot appear here
3285: a handle to a non-managed class is not allowed
3286: a handle to an unscoped enum type is not allowed
3287: "property" attribute not allowed in managed class
3288: a pure specifier (\"= 0\") followed by a definition is nonstandard
3289: the managed nullptr type cannot be used here
3290: the \"&\" operator cannot be used to take the address of an object with a ref class type
3291: array of managed class is not allowed
3292: a variable with static storage duration cannot have a handle or tracking reference type
3293: a variable captured by a lambda cannot be a handle or tracking reference
3294: a C++/CLI parameter array requires a handle to a one-dimensional CLI array type
3295: could not import metadata from file %sq
3296: the cli namespace cannot be extended
3297: the element type of a cli::array must be a handle or value type
3298: invalid number of dimensions for cli::array type
3299: a cli::interior_ptr/cli::pin_ptr must point to a standard class, a value class, an integer, a handle, or a standard pointer
3300: <type> cannot be a class member
3301: a parameter of type cli::pin_ptr is not allowed
3302: invalid finalizer declaration
3303: a finalizer may not have parameters
3304: a type qualifier is not allowed on a finalizer
3305: a return type may not be specified on a finalizer
3306: a using-declaration may not name a finalizer
3307: a finalizer name must be qualified
3308: qualifier of finalizer name <entity> does not match type <type>
3309: <entity> cannot be used to name a finalizer (a type name is required)
3310: invalid finalizer name for type %t
3311: finalizer reference is ambiguous -- both <entity> and <entity> could be used
3312: a finalizer can only be a member of a ref class
3314: type used as finalizer name does not match type %t
3315: a finalizer does not exist for this type
3316: the \"%%\" operator can be used only on an object with a managed class type
3317: a pointer, handle, or reference to a cli::interior_ptr is not allowed
3318: a pointer, handle, or reference to a cli::pin_ptr is not allowed
3319: a pointer or reference to a C++/CLI array is not allowed
3320: a C++/CLI array type is not allowed here
3321: a C++/CLI ref class can only derive from a ref class or from interface classes
3322: a C++/CLI value class can only derive from interface classes
3323: a C++/CLI interface class can only derive from interface classes
3324: a ref class can have at most one direct ref base class (%t is already such a base)
3325: a standard class cannot derive from a managed class
3326: a managed class cannot have a virtual base
3327: a managed class cannot have a \"private\" or \"protected\" base
3328: the \"override\" modifier requires a virtual function declaration with an explicit \"virtual\" keyword
3329: the \"abstract\" modifier requires a virtual function declaration with an explicit \"virtual\" keyword
3330: the \"sealed\" modifier requires a virtual function declaration with an explicit \"virtual\" keyword
3331: a named override specifier requires a virtual function declaration with an explicit \"virtual\" keyword
3332: a cli::pin_ptr return type is not allowed
3333: attribute <entity> applies in C++/CLI mode only
3334: a simple (non-tracking) reference cannot be bound to an entity on the managed heap
3336: \"%s\" not loaded from default assemblies
3337: list initialization syntax is a C++11 feature
3338: operand of sizeof may not be a ref class type or interface class type
3339: invalid number of subscripts for this cli::array type
3340: a pointer-to-member is not valid for a managed class
3341: private virtual member function of managed class is not \"sealed\"
3342: modifier is not allowed on a destructor
3343: modifier is not allowed on a finalizer
3344: \"virtual\" has no effect on a destructor of a managed class
3345: "new" or "override" is required because this declaration matches <entity>
3346: "new" or "virtual" is required because this declaration matches <entity>
3347: \"new\" or \"override\" are not valid here because the matching %nd is a member of an interface
3348: \"new\" modifier without a matching base ref class member
3349: %nd overridden with reduced access
3350: a reference of type %t1 cannot be initialized with a value of type %t2
3351: a copy constructor cannot be declared in a value class
3352: a default constructor cannot be declared in a value class
3353: a destructor cannot be declared in a value class
3354: an assignment operator cannot be declared in a value class
3355: non-value class %t cannot be the type of a member of a value class
3356: option \"cppcli\" requires a different compiler configuration
3357: exception specifications are not allowed on member functions of managed classes
3358: a managed class cannot declare a friend
3361: a local class definition is not allowed in a member function of a managed class
3362: a local lambda is not allowed in a member function of a managed class
3363: a member function of a C++/CLI interface type cannot have a definition
3364: a property definition must include at least one accessor (\"get\" or \"set\")
3365: default-indexed property conflicts with %nd
3366: <entity> cannot be used because it follows a parameter pack and cannot be deduced from the parameters of <entity>
3367: this pack expansion produced more than one expression, and a single expression is needed here
3368: type must correspond to System::Boolean, System::Byte, System::SByte, System::Int16, System::UInt16, System::Int32, System::UInt32, System::Int64, or System::UInt64
3369: call of an object of a handle type without appropriate operator() or conversion functions to pointer-to-function type
3370: an unnamed parameter pack declaration cannot be parenthesized
3371: variadic templates can be enabled only when compiling C++
3372: property definition conflicts with <entity>
3375: a generic parameter cannot have a default
3376: a generic can only have type parameters
3377: to be used with "for each" statements, type <type> must provide nonstatic member function <entity>
3378: "for each" cannot use member <entity> because it is static
3379: in this \"for each\" statement, no instance of %no is callable with an empty argument list
3380: "for each" cannot use member function "MoveNext" because the return type is invalid
3381: a "for each" statement cannot operate on an expression of type <type>
3382: to be used with "for each" statements, type <type> must provide a non-indexed property <property>
3384: in this "for each" statement, <entity> is not a valid enumerator (returned by "GetEnumerator" of <entity>)
3385: expected "in"
3386: class %t has no suitable assignment operator (after operator synthesis)
3387: %sq is not a generic parameter
3388: <entity> is not a generic parameter of the innermost generic parameter list
3389: invalid generic constraint
3390: invalid use of event member (only subscription, unsubscription, and invocation are allowed)
3391: invoking an event with no "raise" accessor is invalid
3392: only \"+=\" and \"-=\" are valid for events
3393: typeid of a managed type is not allowed
3394: CLI typeid of a managed pointer type is not allowed
3395: name followed by \"::typeid\" must be a type name
3396: a member %sq of this type is reserved within a managed class -- destructor intended?
3397: a member <entity> of this type is reserved within a managed class -- finalizer intended?
3398: System::IDisposable::Dispose is missing or invalid
3399: System::Object::Finalize is missing or invalid
3400: <entity> does not override System::Object::Finalize
3401: the operand of a handle dynamic_cast must be a handle to a complete class type
3402: the operand of a tracking-reference dynamic_cast must be an lvalue of a complete class type
3403: the type in a dynamic_cast to a handle or tracking reference type must refer to a complete class
3404: an interior pointer cannot be cast to a native pointer
3405: explicit conversion operators can only be declared in ref and value class types
3406: explicit conversion operator cannot be virtual
3407: expression must have arithmetic or unscoped enum type
3408: expression must have arithmetic, unscoped enum, or pointer type
3409: expression must have integral or unscoped enum type
3410: expression must have integral, unscoped enum, or fixed-point type
3411: a built-in binary operator applied to a scoped enumeration requires two operands of the same type
3412: gcnew cannot allocate an entity of type <entity>
3413: placement syntax cannot be used with gcnew
3414: new can only be used with simple value types
3415: new cannot be used on a managed class (gcnew should be used instead)
3416: new cannot be used on a handle type
3417: gcnew for a C++/CLI array must have a new initializer or an array initializer
3418: an array initializer can only be used to initialize a C++/CLI array type
3419: gcnew does not allow auto
3420: too many array bounds
3421: too few array bounds
3422: too few arguments for <entity>
3423: too many arguments for <entity>
3425: no declaration of <entity> accepts the number of generic arguments supplied
3426: invalid delegate initializer -- must be a function
3427: invalid delegate initializer -- more than one function matches the delegate type
3428: invalid delegate initializer -- function does not match the delegate type
3429: invalid delegate initializer -- an object is needed in addition to a function
3430: invalid delegate initializer -- function is not a member of a managed class
3431: invalid delegate initializer -- object is not needed for the specified function
3432: invalid delegate initializer -- object has type %t1 but type %t2 is expected
3433: taking the address of a member function of a managed class is not allowed
3434: invalid delegate initializer -- expected either \"(<function-address>)\" or \"(<object-handle>, <member-address>)\"
3435: class fails to implement interface member %nd
3436: gcnew cannot be used to allocate a native array
3437: a C++/CLI interface class cannot declare an assignment operator
3438: a C++/CLI interface class cannot be sealed
3440: a destructor or finalizer declaration cannot include a named override specifier
3441: an override specifier cannot designate a destructor or finalizer
3442: a named override specifier is allowed only in a managed class
3443: no member designated by the named override specifier matches the type of this member
3444: a static constructor declaration cannot include a named override specifier
3445: a scoped enumeration type must have a name
3446: transfer of control into a finally block is not allowed
3447: return statement inside a finally block is not allowed
3448: try block requires at least one handler or finally clause
3449: a managed object must be thrown by handle
3450: a managed object must be caught by handle
3451: a break statement cannot be used in a finally block
3452: a continue statement cannot be used in a finally block
3453: builtin offsetof cannot be used when subscripting is overloaded
3454: duplicate constraint
3455: more than one class constraint: %t1 and %t2
3456: more than one constraint clause for %n
3457: initonly static data members must have an initializer or be initialized in a static constructor
3458: GNU attributes on a template redeclaration have no effect
3459: GNU attributes on a template redeclaration have no effect (the attributes of the original declaration <entity> apply instead)
3460: a C++/CLI parameter array must be the last parameter
3461: a function with a C++/CLI parameter array cannot have default arguments
3462: a C++/CLI parameter array cannot be followed by an ellipsis parameter
3463: a C++/CLI parameter array is not allowed in an operator function parameter list
3464: __inline and __forceinline are not allowed here
3465: a data member cannot have a C++/CLI interface class type
3466: a variable cannot have a C++/CLI interface class type
3467: a parameter cannot have a C++/CLI interface class type
3468: a function return type cannot be an C++/CLI interface class type
3469: an array of generic parameter type is not allowed
3470: a pointer, handle, or reference to a generic parameter type is not allowed
3471: an initonly field cannot have a ref class type
3472: a reference cannot be bound to an initonly field
3473: taking the address of an initonly field is not allowed
3474: an initonly field can only be modified by the instance constructor of its containing class
3475: a static initonly field can only be modified by the static constructor of its containing class
3476: member function will be invoked on a copy of the initonly field
3477: expression must have pointer or handle type
3478: a move constructor or move assignment operator is used to copy an lvalue here, which may destroy the source object
3479: member selection on a C++/CLI generic entity must use the "->" syntax, not "."
3480: a ref class type cannot derive from <type>
3481: a generic class must be managed (i.e., a ref class, a value class, or an interface class)
3482: a sealed class cannot be used as a constraint
3483: the type in a dynamic_cast cannot be a generic type that might be a value type
3484: a universal character name must designate a valid code point
3485: generic constraints do not match those of <entity>
3486: __underlying_type only applies to enumeration types
3487: expected only one operand expression for this cast
3488: Unicode character with hex value <value> not representable in the system default code page
3489: nonstandard conversion of bound pointer-to-member to a function pointer
3490: access specifier <entity> is deprecated -- use <entity> instead
3491: a static accessor function is not permitted in a nonstatic property or event definition
3492: <type> has both a value class and ref class constraint
3493: <type> and <type> involve circular naked type constraints
3494: <type> is not a valid type constraint
3495: precompiled header file %sq not used (because it is incomplete)
3496: %t is not a valid generic argument
3497: assembly_info attribute applied to an invalid type
3498: <type> does not satisfy the ref class constraint of generic parameter <type>
3499: <type> does not satisfy the value class constraint of generic parameter <type>
3500: %t1 does not satisfy the gcnew constraint of generic parameter %t2 because it is abstract
3501: %t1 does not satisfy the gcnew constraint of generic parameter %t2 because it does not have a public default constructor
3502: generic parameter %t1 does not satisfy the gcnew constraint of generic parameter %t2 because it does not have the gcnew constraint
3503: <entity> does not satisfy the <entity> type constraint of generic parameter <entity>
3504: constraint on generic parameter <type> differs from previous declaration (<entity>)
3505: a member of a managed class cannot be a standard array
3506: a member of a non-managed class cannot be a handle
3507: a member of a non-managed class cannot be a tracking reference
3508: unsafe reinterpret_cast of handle
3509: a template argument may not reference a generic type parameter
3510: an expression list is not allowed in this subscript operation (use parentheses around a top-level comma operator)
3511: expression must have pointer-to-object or handle-to-CLI-array type
3512: unrecognized attribute <entity>
3513: a member of a managed class cannot be of a non-managed class type
3514: a member of a non-managed class cannot have a ref class type or interface class type
3516: a delegate may not be declared as a template
3517: a generic cannot be explicitly specialized
3518: a generic cannot be declared in a class template
3519: a template cannot be declared in a generic class
3520: a literal field cannot be declared "static"
3521: "long float" is a nonstandard extension -- use "double" instead
3522: a standard class cannot be nested in a managed class
3523: __clrcall is valid only in C++/CLI mode
3524: __clrcall not allowed on function with ellipsis parameter
3525: <entity> is not allowed here
3526: a trivial property or event cannot be used to override <entity>
3527: expected an iterator variable name
3528: the iterator type in this \"for each\" statement is %t, which is not a pointer type or an iterator-like class type
3529: the iterator type in this "for each" statement is <entity>, which is not a pointer type or an iterator-like class type
3530: the iterator type in this \"for each\" statement is %t, which is not a pointer type or an iterator-like class type
3531: packing attribute on the parent type is ignored for this field of non-POD type <type>
3532: <entity> not implemented because this declaration is not public and has no named override specifier
3533: this declaration is missing the gnu_inline attribute specified in the previous declaration <entity>
3534: a member function of a managed class cannot have an ellipsis parameter
3535: previously-declared %n invalid as iterator of \"for each\" statement
3536: calling convention ignored because the function type involves a generic parameter; __clrcall used instead
3537: a function type involving a generic parameter cannot have an ellipsis parameter
3538: \"virtual\" is required to override the matching %nd
3539: "virtual" is required to implement the matching <entity>
3540: an initonly data member cannot be volatile
3541: a member <entity> of this type is reserved within a managed class -- CLR operators must be declared using the keyword "operator"
3542: a tracking reference to non-const cannot be bound to a constant
3543: attributes ignored here because they do not apply to a declared entity
3544: a tracking reference to System::String is not allowed
3545: invalid use of a generic class <type> with pending constraints (probably caused by an invalid metadata file)
3546: a pending constraint clause is only allowed for generic class declarations (but not generic class definitions)
3547: empty initializer list not allowed here
3548: a template cannot be declared in a managed class
3549: a generic declaration is not allowed here
3550: interface types cannot have member generics
3551: Unicode character not Latin-1, truncated to low-order byte
3552: to be used with range-based "for" statements, type <type> must provide function <entity>
3553: the iterator type in this range-based "for" statement is <entity>, which is not a pointer type or an iterator-like class type
3554: the iterator type in this range-based "for" statement is <entity>, which is not a pointer type or an iterator-like class type
3555: the iterator type in this range-based "for" statement is <entity>, which is not a pointer type or an iterator-like class type
3556: a range-based \"for\" statement cannot operate on an array of unknown size or incomplete type %t
3557: return types for "begin" and "end" functions used in a range-based "for" statement must be the same ("begin" return type is <entity>, "end" return type is <entity>)
3558: <entity>, required to destroy temporary that was eliminated, is inaccessible
3559: in this range-based "for" statement, no instance of <entity> matches the argument list
3560: this range-based "for" statement requires a suitable <entity> function and none was found
3561: this "for each" statement requires a suitable <entity> function and none was found
3562: <entity> has a metadata representation not representable using C++/CLI
3563: expected \"...\"
3564: <type> in __implements list is not an interface
3565: an __implements list must precede virtual function declarations
3566: <type> specified "__implements ..." in its list of bases, but is missing a matching __implements list
3567: the result of dereferencing a handle to a ref or interface class type must be used
3569: expected a \")\"; pragma ignored
3570: a using-declaration or access declaration cannot appear in a managed class
3571: Note: %nd could have been called but was not considered because it is inaccessible
3572: an abstract member function of a C++/CLI managed class cannot have a definition
3573: declaring this unary \"operator*\" can change the meaning of dereferencing a handle (use static member operators to explicitly indicate applicable types)
3588: an interface class cannot contain a nonstatic data member
3589: #pragma GCC system_header cannot be used in the primary source file
3590: %n is too large to be inlined
3592: option to control move operations can be used only when compiling C++
3593: move operations cannot be generated when rvalue constructors are copy constructors
3594: option to control move operations cannot be used when rvalue references are disabled
3595: "final" cannot be used for managed classes (use "sealed" instead)
3596: a cast to CLI interface class <entity> is not allowed -- cast to handle intended?
3597: cannot create an object of a CLI interface class
3598: this declaration hides the nonstandard declaration of <entity> because the underlying types are incompatible
3599: pointer comparison result is constant, because operand can never be null
3600: an object of the incomplete type <type> cannot be value-initialized
3601: a reference cannot be value-initialized
3602: expected a "(" or a "{"
3603: copy-list-initialization cannot use a constructor marked "explicit"
3604: pointer to member of type void is not allowed
3605: pointer to member of reference type is not allowed
3606: pointer to member of handle type is not allowed
3607: a brace-enclosed list is not allowed here
3608: an operator->* member is not allowed in a managed class
3609: assembly metadata refers to non-existent assembly
3610: attribute <entity> conflicts with earlier attribute <entity>
3611: <entity> was previously declared with a different base type
3612: "enum class" and "enum struct" cannot be used here (use plain "enum" instead)
3613: only one level of braces is allowed on an initializer for an object of type <type>
3614: <entity> cannot be used as an enumeration type name
3615: in a lambda with an implicit return type, all return statements must return the same type
3616: a braced-initializer cannot be used with "new auto"
3617: the definition of std::initializer_list does not contain the expected constructor
3618: declaration hides <entity>
3619: invalid template parameter list for std::initializer_list (it should be one ordinary type parameter with no default)
3620: a brace-enclosed list cannot be passed for an ellipsis parameter
3621: an #include <initializer_list> is needed prior to a use of std::initializer_list, including an implicit use
3622: the "inline" keyword cannot be used on a namespace alias declaration
3623: the previous declaration of <entity> was not declared inline
3624: a redeclaration of inline <entity> must be declared inline
3625: the first argument must be an integer constant
3626: a designator cannot be used with a non-aggregate type <entity>
3627: a designator for an anonymous union member can only appear within braces corresponding to that anonymous union
3628: function prototype tags can only be enabled when compiling C
3629: braces cannot be omitted for this subobject initializer
3630: invalid narrowing conversion from <type> to <type>
3631: invalid narrowing conversion from <type> to <type>: constant value does not fit in destination type
3632: cast to incomplete array type <type> is not allowed
3633: invalid narrowing conversion from <type> to <type>: constant value cannot be represented exactly in destination type
3634: a parenthesized initializer for a non-class entity must be an expression, not a brace-enclosed list
3635: a brace-enclosed list does not provide a return type for this lambda
3636: the declared exception specification is incompatible with the generated one
3637: scoped enumeration types are a C++11 feature
3638: a function type cannot be value-initialized
3639: list-initialization of an object type <type> is not allowed because the type is incomplete
3640: std::initializer_list has a destructor, and is not supposed to -- library is misconfigured
3641: explicit enum base types are a C++11 feature
3642: this constant expression has type <entity> instead of the required <entity> type
3643: a "new" of an std::initializer_list object is unlikely to work as expected because the underlying array will be destroyed at the end of the full expression
3645: "noexcept" is ignored on a function type that is not the type of a function declaration
3646: "defined" is always false in a macro expansion in Microsoft mode
3647: <type> cannot be the element type of an initializer list because it is not a complete object type
3648: mismatched delimiters in default argument expression
3649: nonstandard conversion of pointer-to-member to a function pointer
3650: dynamic exception specifications are deprecated
3651: <entity> cannot be partially specialized in the current scope
3652: <entity> was previously declared constexpr
3653: <entity> was previously not declared constexpr
3654: a constexpr variable declaration must be a definition
3655: "constexpr" is not valid here
3656: a constexpr function must contain exactly one return statement
3657: statement may not appear in a constexpr function
3658: statement may not appear in a constexpr constructor
3659: a function cannot be both constexpr and virtual
3660: a constexpr function cannot have a nonliteral return type %t
3661: a constexpr function cannot have a parameter of nonliteral type <type>
3662: unsequenced uses of <entity> in expression may produce undefined results
3663: the optional third argument of a call to __builtin_assumed_aligned must have integral type
3664: a destructor cannot be constexpr
3665: address supplied for mmap must be aligned on a page boundary:
3666: the body of a constexpr constructor cannot be a function try block
3667: constexpr <entity> provides no initializer for:
3669: calling the default constructor for <type> does not produce a constant value
3670: the default constructor for <type> is not constexpr
3671: a constexpr variable must have a literal type or a reference type
3672: a constructor for a class with virtual bases cannot be constexpr
3673: function call must have a constant value in a constant expression
3674: function "main" may not be declared constexpr
3675: a constexpr member function is only permitted in a literal class type
3676: a class or enumeration type definition cannot appear in a constexpr function or constructor body
3677: only GNU-style attributes are permitted here
3678: nonstandard use of "auto" to both deduce the type from an initializer and to announce a trailing return type
3679: declaring a void parameter list with a qualified void type is nonstandard
3680: the qualifier on this local declaration is ignored
3681: this constant expression has type <type> instead of the required <type> type
3682: an instantiation of __bases or __direct_bases requires a class type
3683: the argument of __bases and __direct_bases must be a type template parameter
3684: <entity> can only be used in template contexts
3685: constexpr function return is non-constant
3686: constexpr constructor calls non-constexpr <entity>
3687: constructor cannot be constexpr because the initializer of <entity> is not a constant expression
3688: non-constant initializer for constexpr constructor
3689: the generated default constructor for <type> cannot be used in an initializer for its own data member
3690: instantiation of initializer of <entity> depends on its own value
3691: defaulted default constructor cannot be constexpr because the corresponding implicitly declared default constructor would not be constexpr
3692: expression not folded to a constant due to excessive constexpr function call nesting (possible infinite recursion)
3693: invalid binary number
3694: a union can have at most one field initializer -- <entity> also has an initializer
3695: a constexpr static data member cannot be declared with an incomplete type <type>
3696: constexpr constructor of a union must initialize one of its fields
3697: constexpr constructor fails to initialize an anonymous union (defined <entity>)
3698: a constexpr static data member declaration requires an in-class initializer
3699: maximum constexpr depth/count options can be used only when compiling C++
3700: expression not folded to a constant due to excessive constexpr function call complexity
3701: unrestricted union options can be used only when compiling C++
3702: constexpr constructor must initialize direct base class <type>
3703: creation of an std::initializer_list object in a field initializer is unlikely to work as expected because the underlying array will be destroyed at the end of the full expression
3704: "this" cannot be used in a constant expression
3705: an empty initializer is not valid for this union type (which member should be initialized is ambiguous)
3706: "constexpr" is not allowed on an explicit instantiation directive
3707: cannot determine the exception specification of the default constructor due to a circular dependency
3708: anonymous union defined <entity>
3709: this constructor uses the initializer of <entity>, which would result in unbounded recursion
3710: anonymous union defined <entity> cannot be default-initialized because it has a deleted default constructor or destructor
3711: an initializer is not allowed on a local declaration of an extern variable
3712: an initializer is not allowed on a local declaration of a named register variable
3713: expression is not constant due to a dangling pointer (points to a temporary whose lifetime has ended)
3714: unrestricted unions cannot be enabled in Microsoft mode
3715: constructor delegates directly or indirectly to itself
3716: a delegating constructor cannot have other mem-initializers
3717: a ref-qualifier is not allowed here
3718: overloading two member functions with the same parameter types requires that they both have ref-qualifiers or both lack ref-qualifiers
3719: invalid character in raw string delimiter -- raw string indicator ignored
3720: parenthesis terminating raw string delimiter not found after 16 characters -- raw string indicator ignored
3721: ending delimiter for raw string not found
3722: a parameter pack must be the final template argument in a partial specialization
3723: a pointer-to-member function with type %t can only be used with an lvalue object
3724: a pointer-to-member function with type %t can only be used with an rvalue object
3725: the parameter of this defaulted copy-constructor cannot be const because a base or member copy constructor parameter is non-const
3726: the parameter of this defaulted assignment operator cannot be const because a base or member copy assignment parameter is non-const
3727: an anonymous union must contain at least one nonstatic data member
3728: option "delegating_constructors" requires a different compiler configuration
3729: delegating constructors are not permitted with both of --cpp_compat and --exceptions
3730: section name conflicts with previous declaration %s
3731: intrinsic is deprecated
3732: use of this instruction in inline assembler is deprecated
3733: __irq functions cannot be generated for this architecture
C4001E: R%ld corrupted but possibly reused later. This code may not work correctly
C4002W: illegal unaligned load or store access - use __packed instead
C4003E: FPU %s is incompatible with selected CPU option
C4004E: apcs /interwork is only allowed when compiling for processors that support Thumb instructions
C4005E: specified processor or architecture does not support Thumb instructions
C4006E: specified processor or architecture does not support ARM instructions
C4007E: Uninitialised or corrupted use of PSR. This code may not work correctly
C4008W: splitting LDM/STM has no benefit

Inappropriate use of the switch --split_ldm. This option has no significant benefit for cached systems, or for processors with a write buffer.

C4009E: unsupported CPU <entity>
C4010W: -g defaults to -O2 if no optimisation level is specified
C4011W: support for --apcs /adsabi is deprecated
C4013W: support for --apcs {option|%s} is deprecated
C4014W: software stackchecking is no longer supported
C4016W: unknown option '-<entity><entity>': ignored
C4017W: <entity> may be used before being set

The compiler performs data flow analysis at optimization level -O1 and above. You can use this information to identify potential problems in the code such as variables being used before being set. However, this is really a by-product of optimization rather than a feature in its own right. The data flow analysis that detects variables being used before being set only analyzes hardware register use, that is, variables that are held in processor registers. It does not analyze variables or structures that are allocated on the stack, that is, stored in memory rather than in processor registers.

As code (and also register memory usage) generated by the compiler varies with the level of optimization, the warning might appear for code compiled at one level of optimization but not others. You might see it, for example, at -O2, but not -O1.

Note:

  • The data flow analysis is not intended to be a fully complete feature. You must only treat C4017W warnings given by the compiler as a guide, and not rely on them to identify faulty code reliably. The compiler never provides as much information as a special purpose tool such as Lint.

  • In ARM Compiler 5.04 and later, this warning is suppressed by default. To enable it, use --diag_warning=C4017.

C4018W: division by zero: <entity>

Constant propagation shows that a divide or remainder operator has a second operand with value 0. It is an error if execution reaches this expression. The compiler returns a result of 0 for a divide by constant 0.

C4038E: Function too large or complicated to compile (0x<num>)
C4039E: I/O error on object stream: %s
C4041U: I/O error writing '%s': %s
C4047U: Too many errors
C4048U: out of store while compiling with -g. Allocation size was %lu, system size is %lu A storage allocation request by the compiler failed. Compilation of the debugging tables requested with the -g option may require a great deal of memory. Recompiling without -g, or with the program broken into smaller pieces, may help.
C4049U: out of store. Allocation size was %lu, system size is %lu
C4050U: Compilation aborted.
C4051E: couldn't write file '<entity>': <entity>
C4052E: couldn't read file '<entity>': <entity>
C4053W: couldn't read profile '%s': %s
C4054W: couldn't read profile '%s': file does not contain valid profile data
C4056E: bad option '<s>'
C4057E: bad option '<s1> <s2>'
C4065E: type of input file '<entity>' unknown
C4066E: The code space needed for this object is too large for this version of the compiler

Split the source file into smaller pieces.

C4075E: Can't open <entity> for output
C4078E: stdin ('-') combined with other files
C4079E: <entity> command with no effect
C4301W: configuration file appears to be from a newer version of the compiler

The configuration file is one of the XML files supplied to the compiler with the --arm_linux_config_file switches when using --arm_linux_paths or GCC command-line translation. For example:

armcc --arm_linux_paths --arm_linux_config_file=arm_linux_config.xml

This warning indicates the file is from a newer compiler so might contain unsupported features. To avoid incompatibilities, either use the newer version of the compiler that generated the configuration file, or re-generate the configuration file using your current compiler version.

See the following in the armcc User Guide:

--arm_linux_config_file=path.

--arm_linux_paths.

C4302E: configuration file has an invalid version string

This represents an error reading from or writing to an ARM Linux configuration file.

Do the following:

  1. Check that the file can be read from and written to and has valid permissions.

  2. Try re-generating the configuration file using --arm_linux_configure.

See the following in the armcc User Guide:

--arm_linux_configure.

C4303E: configuration file was not specified

See the description for error C4302E.

C4304E: I/O error reading configuration file <file>

See the description for error C4302E.

C4305E: I/O error writing configuration file <file>

See the description for error C4302E.

C4306E: could not parse configuration file <file>

See the description for error C4302E.

C4307E: unable to read configuration file

See the description for error C4302E.

C4308W: cannot find system include directory

When using an ARM Linux mode, --arm_linux, --arm_linux_paths, or GCC command-line translation, set the ARMCC5INC environment variable to install_directory\include. This ensures that the compiler can find the arm_linux header subdirectory.

See the following in the armcc User Guide:

--arm_linux.

--arm_linux_paths.

See the following in the Getting Started Guide:

Toolchain environment variables.

C4309E: automatic configuration failed - cannot find GCC

This error is produced when you try to automatically configure the tools with --arm_linux_configure, but GCC cannot be found. Use the --configure_gcc=path_to_gcc command-line option to specify the path to the GCC executable, such as arm-none-linux-gnueabi-gcc.

See the following in the armcc User Guide:

--arm_linux_configure.

--configure_gcc=path.

C4310W: automatic configuration is incomplete - cannot determine sysroot path from GCC

The GCC that was used for the ARM Linux configuration process did not provide a valid sysroot path. Use --configure_sysroot=sysroot_path to set the path.

See the following in the armcc User Guide:

--configure_sysroot=path.

C4311E: automatic configuration failed - cannot find GLD

This error is produced when you try to automatically configure the tools with --arm_linux_configure, but the GNU linker (ld) could not be found. Use the --configure_gkd=path_to_gcc command-line option to specify the path to the GNU ld executable, such as arm-none-linux-gnueabi-ld.

See the following in the armcc User Guide:

--arm_linux_configure.

--configure_gcc=path.

C4312E: automatic configuration failed - could not execute GCC

This error indicates that, when using automatic configuration for ARM Linux by specifying --arm_linux_configure, the respective tools (GCC or GNU ld) could not be executed or failed when invoked. Check that they have execute permissions, and your GNU toolchain installation is working correctly.

See the following in the armcc User Guide:

--arm_linux_configure

C4313E: automatic configuration failed - could not execute GLD

See the description of error C4312E.

C4314W: gcc command line translation - ignoring option with no translation: <option>
C4315W: gcc command line translation - translation for this command is not fully supported: <option>
C4316W: option is not supported under arm linux: <option>
C4317W: translated cpu or architecture option <option> is not valid
C4318W: unable to read file <file>
C4319W: cannot recognise type of file <file> - file will be ignored
C4320W: cannot find file <file> - file will be ignored
C4321E: automatic configuration failed - could not determine configuration from GCC

When configuring automatically for ARM Linux with --arm_linux_configure, the compiler could not determine sufficient information from GCC to produce the configuration. Try a manual configuration by specifying a sysroot path with --configure_sysroot and a path to the GNU C++ header files with --configure_cpp_headers.

See the following in the armcc User Guide:

--arm_linux_configure.

--configure_cpp_headers=path.

--configure_sysroot=path.

C4322W: could not accurately determine library configuration from GCC - configuration might be incomplete
C4323E: automatic configuration failed - GCC internal specs configuration report error: <text>
C4324W: could not determine libstdc++ header file path - specify this manually to ensure that C++ code will compile correctly

The path to the libstdc++ header files could not be determined from GCC. Specify this path with --configure_cpp_headers=path

See the following in the armcc User Guide:

--configure_cpp_headers=path.

C4325E: out of memory reading configuration
C4326W: translated floating point option %s is not valid with specified cpu %s
C4327W: cannot determine application entry point function - using <value> as default
C4328W: cannot determine library paths from GNU linker - trying to use defaults
C4329W: option is missing an argument : <option>
C4330E: no Linux library configuration matches the options given
C4331W: script file <file> will be treated as a scatter file
C4332E: I/O error reading via file <file>
C4333E: I/O error closing via file <file>
C4334W: invalid GCC version in configuration file - using default
C4335E: cannot retry because configuration file does not provide path to GNU executable

Displayed when the ARM Linux configuration file specified for GCC fallback does not include the correct path to gcc.

See the following in the armcc User Guide:

Using GCC fallback when building applications.

-Warmcc,--gcc_fallback.

C4336W: compilation failed - retrying with GNU tools

Displayed if an armcc compilation fails and GCC fallback is specified. armcc then attempts to run gcc to complete the compilation.

See the following in the armcc User Guide:

Using GCC fallback when building applications.

-Warmcc,--gcc_fallback.

C4337E: compilation with GNU tools also failed

Displayed if gcc fails during GCC fallback.

See the following in the armcc User Guide:

Using GCC fallback when building applications.

-Warmcc,--gcc_fallback.

C4338W: compilation with GNU tools succeeded

Displayed when GCC fallback succeeds.

See the following in the armcc User Guide:

Using GCC fallback when building applications.

-Warmcc,--gcc_fallback.

C4339W: ambiguous translation mode options specified - using <option>

You must not specify more than one translation mode option to select a particular translation mode. The translation mode options are:

  • --translate_gcc.
  • --translate_g++.
  • --translate_gld.

See the following in the armcc User Guide:

--translate_g++.

--translate_gcc.

--translate_gld.

C4340W: could not obtain license for vectorization (implied by -O3) - defaulting to -fno-tree-vectorize

With GCC command-line translation, -O3 implies vectorization. However, in ARM Compiler 4.1 and earlier, a separate license is required to use the NEON vectorization feature of the compiler. If a NEON vectorization license is not available, the compiler emits this warning and disables vectorization. In ARM Compiler 5.0 and later, a separate NEON vectorization license is not required, so this warning is no longer generated.

See the following in the Getting Started Guide:

Licensed features of ARM Compiler.

See the following in the armcc User Guide:

-Onum.

C4342W: argument '%s' to the '%s' option is not valid
C4343W: hardware floating-point linkage is not compatible with the ARM Linux ABI
C4344E: --library_interface {libopt|%s} is not compatible with software floating point calling convention.
C4345W: I/O error reading file %s : %s
C4346W: I/O error reading or writing temporary file: %s
C4347E: cannot invoke GNU assembler - no path to GNU as was configured
C4348W: multiple -x options are not supported; the first will take precedence
C4349E: invalid GCC version specified
C4350W: GCC version provided on the command line is older than the version of the GCC used for configuration
C4351E: GCC option is not applicable to ARM: %s
C4352E: A GCC emulation mode or --arm_linux_paths must be specified.
C4354E: invalid target triple specified
C4359E: --no_integer_literal_pools not yet supported on this architecture
C4360E: Execute only not yet supported on this architecture
C4361W: Loop optimizations can only be enabled at -O3 -Otime or -O2 -Otime --vectorize
C4362E: Execute only is not compatible with {option|%s}
C4363E: Only Thumb state code may be execute only
C4364E: {option1|%s} is not compatible with {option2|%s}
C4365E: Subtool invocation error: {err_str|%s}
C4366W: Vectorization can only be enabled for targets with NEON capability
C4367W: Vectorization can only be enabled at -O3 -Otime or -O2 -Otime
C4368W: Selected target does not support bit-banding
C4403E: __alloca_state not defined
C4406I: Please contact your supplier.
C4419W: dynamic stack alignment veneer inserted in <entity>

This warning is given when compiling __irq functions for --cpu=Cortex-M3-rev0 to force the stack to be 8-byte aligned on entry into the interrupt.

C4421W: write to string literal

There is a write through a pointer that has been assigned to point at a literal string. The behavior is undefined by the ANSI standard. A subsequent read from the location written might not reflect the write.

C4433E: {option|%s} selection is incompatible with restrictions in this toolkit
C4435E: reference to <entity> not allowed
C4447E: option '-E' and input file '<filename>' type conflict
C4463E: Invalid combination of memory access attributes
C4464E: Maximum pointer alignment must be a power of 2
C4466W: Feedback line ignored, unrecognised pattern\n
C4484E: Minimum toplevel array alignment must be 1, 2, 4 or 8
C4485E: movedata_threshold too large
C4486W: option '-<optionchar>' causes input file '<filename>' to be ignored
C4487E: read from variable '<var>' with offset out of bounds

For example :

void foo(void) {
  unsigned int pntr;
  pntr = (unsigned int)&pntr;
  pntr -= 4;
  pntr = *(unsigned int*)pntr;
}
C4488E: write to variable '<var>' with offset out of bounds
C4489E: __vfp_status() intrinsic not supported for targets without VFP
C4490W: instruction set switching using file extension is deprecated
C4491E: stack frame (%d) is larger than stack limit
C4493E: Function alignment must be a power of 2 and greater than 1
C4494E: invalid global register number <num>; 1 to <num> allowed
C4497E: invalid syntax for retention constraint: <text>
C4498E: option conflicts with an arm linux targeting option: <option>

Certain options are expected to be used when targeting ARM Linux, for example to select the correct ABI variant options. This message is given to indicate when an incompatible option is specified.

See the following in the armcc User Guide:

--arm_linux.

Non-ConfidentialPDF file icon PDF versionARM DUI0496M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.