| @item "declaration expected" (Fatal, Error, ANSI-violation) |
| |
| Something is pretty wrong with the source. |
| |
| |
| @item "only one input file allowed" (Fatal) |
| |
| vbcc accepts only a single filename to compile. You can use a |
| frontend to compile multiple files or perhaps you mistyped an |
| option. |
| |
| |
| @item "Flag <%s> specified more than once" () |
| |
| You specified a command line option that should be specified only |
| once more than once. Maybe you have this option in your config-file |
| and used it in the command line, too? |
| The first occurrence will override the latter ones. |
| |
| |
| @item "Flag <%s> needs string" (Fatal) |
| |
| This option hast to be specified with a string parameter, e.g. |
| -flag=foobar |
| |
| |
| @item "Flag <%s> needs value" (Fatal) |
| |
| This option hast to be specified with an integer parameter, e.g. |
| -flag=1234 |
| |
| |
| @item "Unknown Flag <%s>" (Fatal) |
| |
| This option is not recognized by vbcc. Perhaps you mistyped it, used |
| the wrong case or specified an option of the frontend to vbcc? |
| |
| |
| @item "No input file" (Fatal) |
| |
| You did not specify an input file. Your source file should not start |
| with a '-' and if you use a frontend make sure it has the proper |
| suffix. |
| |
| |
| @item "Could not open <%s> for input" (Fatal) |
| |
| A file could not be opened. |
| |
| |
| @item "need a struct or union to get a member" (Error, ANSI-violation) |
| |
| The source contains something like a.b where a is not a structure |
| or union. |
| |
| |
| @item "too many (%d) nested blocks" (Fatal, Error) |
| |
| vbcc only allows a maximum number of nested blocks |
| (compund-statements). You can increase this number by changing |
| the line #define MAXN <something> in vbc.h and recompiling vbcc. |
| |
| |
| @item "left block 0" (Error, ANSI-violation) |
| |
| This error should not occur. |
| |
| |
| @item "incomplete struct <%s>" (Error, ANSI-violation) |
| |
| You tried to get a member of an incomplete structure/union. |
| You defined struct x y; somewhere without defining struct x@{...@}. |
| |
| |
| @item "out of memory" (Fatal, Error) |
| |
| Guess what. |
| |
| |
| @item "redeclaration of struct <%s>" (Error, ANSI-violation) |
| |
| You may not redeclare a struct/union in the same block. |
| |
| |
| @item "incomplete type (%s) in struct" (Error, ANSI-violation) |
| |
| Every member in a struct/union declaration must be complete. |
| Perhaps you only wanted a pointer to that type and forgot the '*'? |
| |
| |
| @item "function (%s) in struct/union" (Error, ANSI-violation) |
| |
| Functions cannot be members of structs/unions. |
| |
| |
| @item "redeclaration of struct/union member <%s>" (Error, ANSI-violation) |
| |
| Two members of a struct/union have the same name. |
| |
| |
| @item "redeclaration of <%s>" (Error, ANSI-violation) |
| |
| You used a name already in use in an enumeration. |
| |
| |
| @item "invalid constant expression" (Error, ANSI-violation) |
| |
| ??? Nowhere to find... |
| |
| |
| @item "array dimension must be constant integer" (Error, ANSI-violation) |
| |
| The dimensions of an array must be constants (real constants, |
| const int x=100; int y[x]; is not allowed) and integers |
| (int y[100.0]; is not allowed either). |
| |
| |
| @item "no declarator and no identifier in prototype" (Error, ANSI-violation) |
| |
| |
| |
| @item "invalid storage-class in prototype" (Error, ANSI-violation) |
| |
| Function parameters may only be auto or register. |
| |
| |
| @item "void not the only function argument" (Error, ANSI-violation) |
| |
| You tried to declare a function that has an argument of type void |
| as well as other arguments. |
| |
| |
| @item "<%s> no member of struct/union" (Error, ANSI-violation) |
| |
| The struct/union does not contain a member called like that. |
| |
| |
| @item "increment/decrement is only allowed for aithmetic and pointer types" (Error, ANSI-violation) |
| |
| |
| |
| @item "functions may not return arrays or functions" (Error, ANSI-violation) |
| |
| |
| |
| @item "only pointers to functions can be called" (Error, ANSI-violation) |
| |
| You tried to call something that did not decay into a pointer to |
| a function. |
| |
| |
| @item "redefinition of var <%s>" (Error, ANSI-violation) |
| |
| |
| |
| @item "redeclaration of var <%s> with new storage-class" (Error, ANSI-violation) |
| |
| |
| |
| @item "first operand of conditional-expression must be arithmetic or pointer type" (Error, ANSI-violation) |
| |
| |
| |
| @item "multiple definitions of var <%s>" (Error, ANSI-violation) |
| |
| There have been multiple definitions of a global variable with |
| initialization. |
| |
| |
| @item "operands of : do not match" (Error, ANSI-violation) |
| |
| In an expression of the form a ? b : c |
| - a and b must have the same type or |
| - a and b both must have arithmetic types or |
| - one of them must be a pointer and the other must be void * or 0 |
| |
| |
| @item "function definition in inner block" (Error, ANSI-violation) |
| |
| C does not allow nested functions. |
| |
| |
| @item "redefinition of function <%s>" (Error, ANSI-violation) |
| |
| Defining two functions with the same name in one translation-unit |
| is no good idea. |
| |
| |
| @item "invalid storage-class for function" (Error, ANSI-violation) |
| |
| Functions must not have storage-classes register or auto. |
| |
| |
| @item "declaration-specifiers expected" (Error, ANSI-violation) |
| |
| |
| |
| @item "declarator expected" (Error, ANSI-violation) |
| |
| |
| |
| @item "<%s> is no parameter" (Error, ANSI-violation) |
| |
| In an old-style function definition you tried to declare a name as |
| parameter which was not in the identifier-list. |
| |
| |
| @item "assignment of different structs/unions" (Error, ANSI-violation) |
| |
| |
| |
| @item "invalid types for assignment" (Error, ANSI-violation) |
| |
| In an assignment-context (this includes passing arguments to |
| prototyped functions) the source and target must be one of the |
| following types: |
| |
| - both are arithmetic types |
| - both are the same struct/union |
| - one of them is a pointer to void and the other one is any pointer |
| - the target is any pointer and the source is an integral |
| constant-expression with the value 0 |
| - both are pointer to the same type (here the target may have |
| additional const/volatile qualifiers - not recursively, however) |
| |
| Any other combinations should be illegal. |
| |
| |
| @item "only 0 can be compared against pointer" (Warning, ANSI-violation) |
| |
| You may not compare a pointer against any other constant but a |
| 0 (null pointer). |
| |
| |
| @item "pointers do not point to the same type" (Warning, ANSI-violation) |
| |
| You tried to compare or assign pointers that point to different |
| types. E.g. the types they point to may have different attributes. |
| |
| |
| @item "function initialized" (Error, Fatal, ANSI-violation) |
| |
| There was a '=' after a function declaration. |
| |
| |
| @item "initialization of incomplete struct" (Error, Fatal, ANSI-violation) |
| |
| A structure is incomplete if the only its name, but not the |
| content is known. You cannot do much with such structures. |
| |
| |
| @item "initialization of incomplete union" (Error, Fatal, ANSI-violation) |
| |
| A union is incomplete if the only its name, but not the |
| content is known. You cannot do much with such unions. |
| |
| |
| @item "empty initialization" (Error, ANSI-violation) |
| |
| There was no valid expression after the '=' in a variable definition. |
| |
| |
| @item "initializer not a constant" (Error, ANSI-violation) |
| |
| Static variables and compound types may only be initialized with |
| constants. |
| Variables with const qualifier are no valid constant-expressions |
| here. |
| |
| Addresses of static variables are ok, but casting them may turn |
| them into non-constant-expressions. |
| |
| |
| @item "double type-specifier" (Warning, ANSI-violation) |
| |
| |
| |
| @item "illegal type-specifier" (Warning, ANSI-violation) |
| |
| |
| |
| @item "multiple storage-classes" (Warning, ANSI-violation) |
| |
| |
| |
| @item "storage-class specifier should be first" (Warning, ANSI-violation) |
| |
| |
| |
| @item "bitfields must be ints" (Warning, ANSI-violation) |
| |
| |
| |
| @item "bitfield width must be constant integer" (Warning, ANSI-violation) |
| |
| |
| |
| @item "struct/union member needs identifier" (Warning, ANSI-violation) |
| |
| |
| |
| @item "; expected" (Warning, ANSI-violation) |
| |
| Probably you forgot a ';' or there is a syntactic error in an |
| expression. |
| |
| |
| @item "struct/union has no members" (Warning, ANSI-violation) |
| |
| You defined an empty struct or union. |
| |
| |
| @item "@} expected" (Warning, ANSI-violation) |
| |
| |
| |
| @item ", expected" (Warning, ANSI-violation) |
| |
| |
| |
| @item "invalid unsigned" (Warning, ANSI-violation) |
| |
| |
| |
| @item ") expected" (Warning, ANSI-violation) |
| |
| |
| |
| @item "array dimension has sidefx (will be ignored)" (Warning, ANSI-violation) |
| |
| |
| |
| @item "array of size 0 (set to 1)" (Warning, ANSI-violation) |
| |
| ANSI C does not allow arrays or any objects to have a size of 0. |
| |
| |
| @item "] expected" (Warning, ANSI-violation) |
| |
| |
| |
| @item "mixed identifier- and parameter-type-list" (Warning, ANSI-violation) |
| |
| |
| |
| @item "var <%s> was never assigned a value" (Warning) |
| |
| |
| |
| @item "var <%s> was never used" (Warning) |
| |
| |
| |
| @item "invalid storage-class" (Warning, ANSI-violation) |
| |
| |
| |
| @item "type defaults to int" (Warning) |
| |
| |
| |
| @item "redeclaration of var <%s> with new type" (Warning, ANSI-violation) |
| |
| |
| |
| @item "redeclaration of parameter <%s>" (Warning, ANSI-violation) |
| |
| |
| |
| @item ": expected" (Warning, ANSI-violation) |
| |
| |
| |
| @item "illegal escape-sequence in string" (Warning, ANSI-violation) |
| |
| |
| |
| @item "character constant contains multiple chars" (Warning) |
| |
| |
| |
| @item "could not evaluate sizeof-expression" (Error, ANSI-violation) |
| |
| |
| |
| @item "" expected (unterminated string)" (Error, ANSI-violation) |
| |
| |
| |
| @item "something wrong with numeric constant" (Error, ANSI-violation) |
| |
| |
| |
| @item "identifier expected" (Fatal, Error, ANSI-violation) |
| |
| |
| |
| @item "definition does not match previous declaration" (Warning, ANSI-violation) |
| |
| |
| |
| @item "integer added to illegal pointer" (Warning, ANSI-violation) |
| |
| |
| |
| @item "offset equals size of object" (Warning) |
| |
| |
| |
| @item "offset out of object" (Warning, ANSI-violation) |
| |
| |
| |
| @item "only 0 should be cast to pointer" (Warning) |
| |
| |
| |
| @item "unknown identifier <%s>" (Error, ANSI-violation) |
| |
| |
| |
| @item "too few function arguments" (Warning, ANSI-violation) |
| |
| |
| |
| @item "division by zero (result set to 0)" (Warning, ANSI-violation) |
| |
| |
| |
| @item "assignment of different pointers" (Warning, ANSI-violation) |
| |
| |
| |
| @item "lvalue required for assignment" (Error, ANSI-violation) |
| |
| |
| |
| @item "assignment to constant type" (Error, ANSI-violation) |
| |
| |
| |
| @item "assignment to incomplete type" (Error, ANSI-violation) |
| |
| |
| |
| @item "operands for || and && have to be arithmetic or pointer" (Error, ANSI-violation) |
| |
| |
| |
| @item "bitwise operations need integer operands" (Error, ANSI-violation) |
| |
| |
| |
| @item "assignment discards const" (Warning, ANSI-violation) |
| |
| You assigned something like (const type *) to (type *). |
| |
| |
| @item "relational expression needs arithmetic or pointer type" (Error, ANSI-violation) |
| |
| |
| |
| @item "both operands of comparison must be pointers" (Error, ANSI-violation) |
| |
| You wrote an expression like a == b where one operand was a pointer |
| while the other was not. Perhaps a function is not declared correctly |
| or you used NULL instead of 0? |
| |
| |
| @item "operand needs arithmetic type" (Error, ANSI-violation) |
| |
| |
| |
| @item "pointer arithmetic with void * is not possible" (Error, ANSI-violation) |
| |
| Adding/subtracting from a pointer to void is not possible. |
| |
| |
| @item "pointers can only be subtracted" (Error, ANSI-violation) |
| |
| You cannot add, multiply etc. two pointers. |
| |
| |
| @item "invalid types for operation <%s>" (Error, ANSI-violation) |
| |
| |
| |
| @item "invalid operand type" (Error, ANSI-violation) |
| |
| |
| |
| @item "integer-pointer is not allowed" (Error, ANSI-violation) |
| |
| You may not subtract a pointer from an integer. |
| Adding an integer or subtracting it from a pointer is ok. |
| |
| |
| @item "assignment discards volatile" (Warning, ANSI-violation) |
| |
| You assigned something like (volatile type *) to (type *). |
| |
| |
| @item "<<, >> and % need integer operands" (Error, ANSI-violation) |
| |
| |
| |
| @item "casting from void is not allowed" (Error, ANSI-violation) |
| |
| Casting something of type void to anything makes no sense. |
| |
| |
| @item "integer too large to fit into pointer" (Error, ANSI-violation) |
| |
| You tried to assign an integer to a pointer that is too small to |
| hold the integer. |
| Note that assignment of pointers<->integers is never portable. |
| |
| |
| @item "only integers can be cast to pointers" (Error, ANSI-violation) |
| |
| |
| |
| @item "invalid cast" (Error, ANSI-violation) |
| |
| |
| |
| @item "pointer too large to fit into integer" (Error, ANSI-violation) |
| |
| You tried to assign a pointer to an integer that is too small to |
| hold the pointer. |
| Note that assignment of pointers<->integers is never portable. |
| |
| |
| @item "unary operator needs arithmetic type" (Error, ANSI-violation) |
| |
| |
| |
| @item "negation type must be arithmetic or pointer" (Error, ANSI-violation) |
| |
| |
| |
| @item "complement operator needs integer type" (Error, ANSI-violation) |
| |
| |
| |
| @item "pointer assignment with different qualifiers" (Warning, ANSI-violation) |
| |
| You tried to assign a pointer to a pointer that points to a type |
| with different qualifiers (e.g. signed<->unsigned). |
| |
| |
| @item "dereferenced object is no pointer" (Error, ANSI-violation) |
| |
| |
| |
| @item "dereferenced object is incomplete" (Error, ANSI-violation) |
| |
| You tried to dereference a pointer to an incomplete object. |
| Either you had a pointer to an array of unknown size or a pointer |
| to a struct or union that was not (yet) defined. |
| |
| |
| @item "only 0 should be assigned to pointer" (Warning, ANSI-violation) |
| |
| You may not assign constants other than a null pointer to any |
| pointer. |
| |
| |
| @item "typedef <%s> is initialized" (Warning, ANSI-violation) |
| |
| |
| |
| @item "lvalue required to take address" (Error, ANSI-violation) |
| |
| You can only get the address of an object, but not of expressions |
| etc. |
| |
| |
| @item "unknown var <%s>" (Error, ANSI-violation) |
| |
| |
| |
| @item "address of register variables not available" (Error, ANSI-violation) |
| |
| If a variable is declared as 'register' its address may not be |
| taken (no matter if the variable actually gets assigned to a |
| register). |
| |
| |
| @item "var <%s> initialized after 'extern'" (Warning) |
| |
| |
| |
| @item "const var <%s> not initialized" (Warning) |
| |
| A constant variable was not initialized in its definition. |
| As there is no other legal way to assign a value to a constant |
| variable this is probable an error. |
| |
| |
| @item "function definition after 'extern'" (Warning, ANSI-violation) |
| |
| |
| |
| @item "return type of main is not int" (Warning, ANSI-violation) |
| |
| main() should be defined as |
| |
| int main(int argc, char **argv) |
| |
| Especially the return type of main must be 'int' - 'void' is |
| not allowed by ANSI C. |
| |
| |
| @item "invalid storage-class for function parameter" (Warning, ANSI-violation) |
| |
| Function parameters may only have 'auto' or 'register' as |
| storage-class. 'static' or 'extern' are not allowed. |
| |
| |
| @item "formal parameters conflict with parameter-type-list" (Warning, ANSI-violation) |
| |
| |
| |
| @item "parameter type defaults to int" (Warning) |
| |
| A function definition contains no explicit type specifier. |
| 'int' will be assumed. |
| |
| |
| @item "no declaration-specifier, used int" (Warning, ANSI-violation) |
| |
| A variable was declared/defined without a type specified. |
| This is not allowed in ANSI C (apart from functions). |
| |
| |
| @item "no declarator in prototype" (Warning, ANSI-violation) |
| |
| |
| |
| @item "static var <%s> never defined" (Warning) |
| |
| |
| |
| @item "@} expected" (Warning) |
| |
| |
| |
| @item "left operand of comma operator has no side-effects" (Warning) |
| |
| In an expression of the form a,b a has no side-effects and is |
| therefore superfluous. |
| |
| |
| @item "label empty" (Error, ANSI-violation) |
| |
| There was a ':' without an identifier before it. |
| |
| |
| @item "redefinition of label <%s>" (Error, ANSI-violation) |
| |
| The label was defined more than once in the same function. |
| Consider that labels can not be hidden in inner blocks. |
| |
| |
| @item "case without switch" (Error, ANSI-violation) |
| |
| A case label was found outside of any switch-statements. |
| |
| |
| @item "case-expression must be constant" (Error, ANSI-violation) |
| |
| The expression after 'case' must be constant. |
| |
| |
| @item "case-expression must be integer" (Error, ANSI-violation) |
| |
| The expression after 'case' must be integer. |
| |
| |
| @item "empty if-expression" (Error, ANSI-violation) |
| |
| There was no valid expression after 'if'. |
| |
| |
| @item "if-expression must be arithmetic or pointer" (Error, ANSI-violation) |
| |
| The expression after 'if' must be arithmetic (i.e. an integer |
| or floating point type) or a pointer. |
| |
| |
| @item "empty switch-expression" (Error, ANSI-violation) |
| |
| There was no valid expression after 'switch'. |
| |
| |
| @item "switch-expression must be integer" (Error, ANSI-violation) |
| |
| The expression after 'switch' must be an integer. |
| |
| |
| @item "multiple default labels" (Error, ANSI-violation) |
| |
| There was more than one default label in a switch-statement. |
| |
| |
| @item "while-expression must be arithmetic or pointer" (Error, ANSI-violation) |
| |
| The expression after the 'while' must be arithmetic (i.e. an integer |
| or floating point type) or a pointer. |
| |
| |
| @item "empty while-expression" (Error, ANSI-violation) |
| |
| There was no valid expression after 'while'. |
| |
| |
| @item "for-expression must be arithmetic or pointer" (Error, ANSI-violation) |
| |
| The expression inside the 'for' must be arithmetic (i.e. an integer |
| or floating point type) or a pointer. |
| |
| |
| @item "do-while--expression must be arithmetic or pointer" (Error, ANSI-violation) |
| |
| The expression after the 'while' must be arithmetic (i.e. an integer |
| or floating point type) or a pointer. |
| |
| |
| @item "goto without label" (Error, ANSI-violation) |
| |
| 'goto' must be followed by a label. |
| |
| |
| @item "continue not within loop" (Error, ANSI-violation) |
| |
| 'continue' is only allowed inside of loops. |
| Perhaps there are unbalanced '@{' '@}'. |
| |
| |
| @item "break not in matching construct" (Error, ANSI-violation) |
| |
| 'break' is only allowed inside of loops or switch-statements. |
| Perhaps there are unbalanced '@{' '@}'. |
| |
| |
| @item "label <%s> was never defined" (Error, ANSI-violation) |
| |
| There is a goto to a label that was never defined. |
| |
| |
| @item "label <%s> was never used" (Warning) |
| |
| You defined a label, but there is no goto that jumps to it. |
| |
| |
| @item "register %s not ok" (Warning) |
| |
| There was an internal error (i.e. a bug in the compiler)! |
| Please report the error to vb@@compilers.de. Thanks! |
| |
| |
| @item "default not in switch" (Warning, ANSI-violation) |
| |
| A default label that is not in any switch-statement was found. |
| Perhaps there are unbalanced '@{' '@}'. |
| |
| |
| @item "( expected" (Warning, ANSI-violation) |
| |
| |
| |
| @item "loop eliminated" (Warning) |
| |
| There was a loop that will never be executed (e.g. while(0)...) |
| and therefore the entire loop was eliminated. |
| I do not know any reason for such loops, so there is probably an |
| error. |
| |
| |
| @item "statement has no effect" (Warning) |
| |
| There is a statement that does not cause any side-effects (e.g. |
| assignments, function calls etc.) and is therefore superfluous. |
| E.g. you might have typed a==b; instead of a=b; |
| |
| |
| @item "'while' expected" (Warning, ANSI-violation) |
| |
| The 'while' in a do-while loop is missing. |
| |
| |
| @item "function should not return a value" (Warning) |
| |
| You specified an argument to return although the function is |
| void. Declare the function as non-void. |
| |
| |
| @item "function should return a value" (Warning) |
| |
| You did not specify an argument to return although the function |
| is not void. Declare the function as void or specify a return |
| value. |
| |
| |
| @item "@{ expected" (Warning, ANSI-violation) |
| |
| |
| |
| @item "internal error %d in line %d of file %s !!" (Fatal, Error) |
| |
| There was an internal error (i.e. a bug in the compiler)! |
| Please report the error to vb@@compilers.de. Thanks! |
| |
| |
| @item "there is no message number %d" (Fatal) |
| |
| You tried to activate or suppress a message that does not exist. |
| |
| |
| @item "message number %d cannot be suppressed" (Fatal) |
| |
| You cannot suppress a message that displays a real error, |
| ANSI-violation or another real problem. |
| Only 'harmless' warnings can be suppressed. |
| |
| |
| @item "implicit declaration of function <%s>" (Warning) |
| |
| A function was called before it was declared and therefore |
| implicitly declared as |
| |
| int function(); |
| |
| This should be avoided in new programs. |
| |
| |
| @item "function call without prototype in scope" (Warning) |
| |
| When writing new programs it is probably sensible to use prototypes |
| for every function. If a function is called without a prototype in |
| scope this may cause incorrect type conversions and is usually an |
| error. |
| |
| |
| @item "#pragma used" (Warning) |
| |
| Usage of #pragma should be avoided in portable programs. |
| |
| |
| @item "assignment in comparison context" (Warning) |
| |
| The expression in an if-, for-, while- or do-while-statement |
| is an assignment, e.g. |
| |
| if(i=0)... |
| |
| This could an error, if you wanted if(i==0). |
| If you turned on this warning and want it to shut up for a |
| certain expression you can cast it to its type, e.g. |
| |
| if((int)(i=0))... |
| |
| Note that only assignments with '=' will be warned, not '+=' etc. |
| |
| |
| @item "comparison redundant because operand is unsigned" (Warning) |
| |
| A comparison with an unsigned variable is redundant, because |
| the result will always be constant, e.g. |
| |
| unsigned int i; |
| if(i<0)... |
| |
| This usually is a programming error and can be avoided in all cases. |
| |
| |
| @item "cast to narrow type may cause loss of precision" (Warning) |
| |
| A variable is cast to a type smaller than its original type, so |
| that some information may get lost. |
| However this warning will be displayed in lots of cases where |
| no problem can arise, e.g. (short)(a==b). |
| |
| |
| @item "pointer cast may cause alignment problems" (Warning) |
| |
| A pointer is cast to a pointer to a type with stricter alignment |
| requirements, i.e. the new pointer might be invalid if you do not |
| know what you are doing. |
| Those casts should be avoidable in all 'usual' cases. |
| |
| |
| @item "no declaration of global variable <%s> before definition" (Warning) |
| |
| It is usually good to declare all global variables (including |
| functions) in header files. |
| |
| |
| @item "'extern' inside function" (Warning) |
| |
| Declaration of external variables in inner blocks is usually |
| not a good idea. |
| |
| |
| @item "dead assignment to <%s> eliminated" (Warning) |
| |
| A variable is assigned a value that is never used or gets |
| overwritten before it is used. If this occurs in real code then |
| there is either an error or an unnecessary assignment. |
| |
| This is detected only in optimizing compilation. |
| |
| |
| @item "var <%s> is used before defined" (Warning) |
| |
| The variable is used before it was assigned a value and therefore |
| is undefined. It cannot be detected if the code where it is used |
| can be reached, but if it is reached it will cause undefined |
| behaviour. So it is most probably an error either way (see 170). |
| |
| However not all uninitialized usages can be found. |
| |
| Also note that the compiler may choose convenient values for |
| uninitialized variables. Example: |
| |
| int f(int a) |
| @{ |
| int x; |
| if(a) x=0; |
| return(x); |
| @} |
| |
| Here the optimizer may choose that x==0 if it is uninitialized and |
| then only generate a return(0); |
| It can also happen that you get different values if you read an |
| uninitialized variable twice although it was not assigned a value |
| in between. |
| |
| This is only detected in optimizing compilation. |
| |
| |
| @item "would need more than %ld optimizer passes for best results" (Warning) |
| |
| The optimizer would probably be able to do some further |
| optimizations if you increased the number of allowed passes |
| with the -optpasses=n option. |
| |
| |
| @item "function <%s> has no return statement" (Warning) |
| |
| A non-void function has no return statement. Either this function |
| never returns (then better declare it as void) or it reaches |
| end of control which would be an error. |
| |
| As main() cannot be declared as void you will not be warned if |
| main has no return statement. If you want a warning for main, too, |
| you can turn on warning 174. |
| |
| |
| @item "function <main> has no return statement" (Warning) |
| |
| The same like 173 for main, so you can turn it on/off separately. |
| |
| |
| @item "this code is weird" (Warning) |
| |
| The code has a very strange control flow. There is probably a |
| jump inside a loop or something similar and the optimizer will |
| not make any loop optimization and perhaps worse register |
| allocation on this construct. |
| There must be goto statements in the source. |
| |
| This warning is only detected in optimizing compilation. |
| |
| |
| @item "size of incomplete type not available" (Warning, ANSI-violation) |
| |
| An incomplete type must not be the argument for sizeof. |
| |
| |
| @item "line too long" (FATAL, Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "identifier must begin with a letter or underscore" (FATAL, Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "cannot redefine macro" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "missing ) after argumentlist" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "identifier expected" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "illegal character in identifier" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "missing operand before/after ##" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "no macro-argument after #-operator" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "macro redefinition not allowed" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "unexpected end of file (unterminated comment)" (FATAL, Error, Preprocessor) |
| |
| |
| |
| @item "too many nested includes" (FATAL, Error, Preprocessor) |
| |
| |
| |
| @item "#else without #if/#ifdef/#ifndef" (FATAL, Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "#else after #else" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "#endif without #if" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "cannot include file" (FATAL, Error, Preprocessor) |
| |
| |
| |
| @item "expected \" or < in #include-directive" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "unknown #-directive" (Warning, Preprocessor) |
| |
| |
| |
| @item "wrong number of macro arguments" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "macro argument expected" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "out of memory" (FATAL, Error, Preprocessor) |
| |
| |
| |
| @item "macro redefinition" (Warning, Preprocessor) |
| |
| |
| |
| @item "/* in comment" (Warning, Preprocessor) |
| |
| |
| |
| @item "cannot undefine macro" (Error, ANSI-violation, Preprocessor) |
| |
| |
| |
| @item "characters after #-directive ignored" (Warning, Preprocessor) |
| |
| |
| |
| @item "duplicate case labels" (Warning, ANSI-violation) |
| |
| Each case-label in a switch-statement must have a distinct constant |
| value attached (after converting it to the type of the |
| switch-expression). |
| |
| |
| @item "var <%s> is incomplete" (Warning, ANSI-violation) |
| |
| An incomplete var was defined. probably you wrote something like: |
| |
| int a[]; |
| |
| |
| @item "long float is no longer valid" (Warning, ANSI-violation) |
| |
| 'long float' was a synonym for double in K&R C, but this is no longer |
| allowed in ANSI C. |
| |
| |
| @item "long double is not really supported by vbcc" (Warning) |
| |
| vbcc does not know about long double yet and therefore will use it |
| simply as a synonym for double. This should not break any legal code, |
| but you will not get error messages if you e.g. assign a pointer to |
| double to a pointer to long double. |
| |
| |
| @item "empty struct-declarations are not yet handled correct" (Warning) |
| |
| obsolete |
| |
| |
| @item "identifier too long (only %d characters are significant)" (Warning) |
| |
| |
| |
| @item "illegal initialization of var <%s>" (Warning, ANSI-violation) |
| |
| Perhaps you tried to initialize a variable with external linkage |
| in an inner block. |
| |
| |
| @item "suspicious loop" (Warning) |
| |
| vbcc thinks a loop-condition looks suspicious. A possible example |
| could be for(i=0;i!=7;i+=2) |
| |
| |
| @item "ansi/iso-mode turned on" (Warning) |
| |
| You turned on the ANSI/ISO-conforming mode. This warning is always |
| displayed unless it is suppressed. So vbcc cannot be blamed to miss |
| a diagnostic for any constraint violation. :-) |
| |
| |
| @item "division by zero (result set to 0)" (Warning, ANSI-violation) |
| |
| Similar to warning 84. |
| |
| |
| @item "constant out of range" (Warning, ANSI-violation) |
| |
| An integral constant is too large to fit into an unsigned long. |
| |
| |
| @item "constant is unsigned due to size" (Warning) |
| |
| If an integral constant is so large that it cannot be represented |
| as long its type is promoted to unsigned long. |
| |
| |
| @item "varargs function called without prototype in scope" (Warning) |
| |
| A function which takes a variable number of arguments must not be |
| called without a prototype in scope. E.g. calling printf() without |
| #include <stdio.h> may cause this warning. |
| |
| |
| @item "suspicious format string" (Warning) |
| |
| The format-string of a printf-/scanflike function seems to be corrupt |
| or not matching the type of the arguments. |
| |
| |
| @item "format string contains \'\\0\'" (Warning) |
| |
| The format string for a printf-/scanflike function contains an |
| embedded '\0' character. |
| |
| |
| @item "illegal use of keyword <%s>" (Warning, ANSI-violation) |
| |
| The reserved keywords of C may not be used as identifier. |
| |
| |
| @item "register <%s> used with wrong type" (Error) |
| |
| |
| @item "register <%s> is not free" (Error) |
| |
| |
| @item "'__reg' used in old-style function definition" (Warning) |
| |
| |
| @item "unknown register \"%s\"" (Warning) |
| |
| |
| @item "'...' only allowed with prototypes" (Warning, ANSI-violation) |
| |
| |
| @item "Hey, do you really know the priority of '&&' vs. '||'?" (Warning) |
| |
| |
| @item "be careful with priorities of <</>> vs. +/-" (Warning) |
| |
| |
| @item "address of auto variable returned" (Warning) |
| |
| |
| @item "void function returns a void expression" (Warning) |
| |
| |
| @item "redeclaration of typedef <%s>" (Warning, ANSI-violation) |
| |
| |
| @item "multiple specification of attribute \"%s\"" (Warning) |
| |
| |
| @item "redeclaration of var \"%s\" with differing setting of attribute \"%s\"" (Warning) |
| |
| @item "string-constant expected" (Error) |
| |
| @item "tag \"%s\" used for wrong type" (Warning, ANSI-violation) |
| |
| @item "member after flexible array member" (Error, ANSI-violation) |
| |
| @item "illegal number" (Error, ANSI-violation) |
| |
| @item "void character constant" (Preprocessor, Error, ANSI-violation) |
| |
| @item "spurious tail in octal character constant" (Preprocessor, Error, ANSI-violation) |
| |
| @item "spurious tail in hexadecimal character constant" (Preprocessor, Error, ANSI-violation) |
| |
| @item "illegal escape sequence in character constant" (Preprocessor, Error, ANSI-violation) |
| |
| @item "invalid constant integer value" (Preprocessor, Error, ANSI-violation) |
| |
| @item "a right parenthesis was expected" (Preprocessor, Error, ANSI-violation) |
| |
| @item "a colon was expected" (Preprocessor, Error, ANSI-violation) |
| |
| @item "truncated constant integral expression" (Preprocessor, Error, ANSI-violation) |
| |
| @item "rogue operator '%s' in constant integral expression" (Preprocessor, Error, ANSI-violation) |
| |
| @item "invalid token in constant integral expression" (Preprocessor, Error, ANSI-violation) |
| |
| @item "trailing garbage in constant integral expression" (Preprocessor, Error, ANSI-violation) |
| |
| @item "void condition for a #if/#elif" (Preprocessor, Error, ANSI-violation) |
| |
| @item "void condition (after expansion) for a #if/#elif" (Preprocessor, Error, ANSI-violation) |
| |
| @item "invalid '#include'" (Preprocessor, Error, ANSI-violation) |
| |
| @item "macro expansion did not produce a valid filename for #include" (Preprocessor, Error, ANSI-violation) |
| |
| @item "file '%s' not found" (Preprocessor, Error, ANSI-violation) |
| |
| @item "not a valid number for #line" (Preprocessor, Error, ANSI-violation) |
| |
| @item "not a valid filename for #line" (Preprocessor, Error, ANSI-violation) |
| |
| @item "rogue '#'" (Preprocessor, Error, ANSI-violation) |
| |
| @item "rogue #else" (Preprocessor, Error, ANSI-violation) |
| |
| @item "rogue #elif" (Preprocessor, Error, ANSI-violation) |
| |
| @item "unmatched #endif" (Preprocessor, Error, ANSI-violation) |
| |
| @item "unknown cpp directive '#%s'" (Preprocessor, Error, ANSI-violation) |
| |
| @item "unterminated #if construction" (Preprocessor, Error, ANSI-violation) |
| |
| @item "could not flush output (disk full ?)" (Preprocessor, Error, ANSI-violation) |
| |
| @item "truncated token" (Preprocessor, Error, ANSI-violation) |
| |
| @item "illegal character '%c'" (Preprocessor, Error, ANSI-violation) |
| |
| @item "unfinished string at end of line" (Preprocessor, Error, ANSI-violation) |
| |
| @item "missing macro name" (Preprocessor, Error, ANSI-violation) |
| |
| @item "trying to redefine the special macro %s" (Preprocessor, Error, ANSI-violation) |
| |
| @item "truncated macro definition" (Preprocessor, Error, ANSI-violation) |
| |
| @item "'...' must end the macro argument list" (Preprocessor, Error, ANSI-violation) |
| |
| @item "void macro argument" (Preprocessor, Error, ANSI-violation) |
| |
| @item "missing comma in macro argument list" (Preprocessor, Error, ANSI-violation) |
| |
| @item "invalid macro argument" (Preprocessor, Error, ANSI-violation) |
| |
| @item "duplicate macro argument" (Preprocessor, Error, ANSI-violation) |
| |
| @item "'__VA_ARGS__' is forbidden in macros with a fixed number of arguments" (Preprocessor, Error, ANSI-violation) |
| |
| @item "operator '##' may neither begin nor end a macro" (Preprocessor, Error, ANSI-violation) |
| |
| @item "operator '#' not followed by a macro argument" (Preprocessor, Error, ANSI-violation) |
| |
| @item "macro '%s' redefined unidentically" (Preprocessor, Error, ANSI-violation) |
| |
| @item "not enough arguments to macro" (Preprocessor, Error, ANSI-violation) |
| |
| @item "unfinished macro call" (Preprocessor, Error, ANSI-violation) |
| |
| @item "too many argument to macro" (Preprocessor, Error, ANSI-violation) |
| |
| @item "operator '##' produced the invalid token '%s%s'" (Preprocessor, Error, ANSI-violation) |
| |
| @item "quad sharp" (Preprocessor, Error, ANSI-violation) |
| |
| @item "void macro name" (Preprocessor, Error, ANSI-violation) |
| |
| @item "macro %s already defined" (Preprocessor, Error, ANSI-violation) |
| |
| @item "trying to undef special macro %s" (Preprocessor, Error, ANSI-violation) |
| |
| @item "illegal macro name for #ifdef" (Preprocessor, Error, ANSI-violation) |
| |
| @item "unfinished #ifdef" (Preprocessor, Error, ANSI-violation) |
| |
| @item "illegal macro name for #undef" (Preprocessor, Error, ANSI-violation) |
| |
| @item "unfinished #undef" (Preprocessor, Error, ANSI-violation) |
| |
| @item "illegal macro name for #ifndef" (Preprocessor, Error, ANSI-violation) |
| |
| @item "unfinished #ifndef" (Preprocessor, Error, ANSI-violation) |
| |
| @item "reconstruction of <foo> in #include" (Preprocessor, Warning) |
| |
| @item "comment in the middle of a cpp directive" (Preprocessor, Warning) |
| |
| @item "null cpp directive" (Preprocessor, Warning) |
| |
| @item "rogue '#' in code compiled out" (Preprocessor, Warning) |
| |
| @item "rogue '#' dumped" (Preprocessor, Warning) |
| |
| @item "#error%s" (Preprocessor, ANSI-violation, Error) |
| |
| @item "trigraph ?""?%c encountered" (Preprocessor, Warning) |
| |
| @item "unterminated #if construction (depth %ld)" (Preprocessor, Error, ANSI-violation) |
| |
| @item "malformed identifier with UCN: '%s'" (Preprocessor, Warning, ANSI-violation) |
| |
| @item "truncated UTF-8 character" (Preprocessor, Warning, ANSI-violation) |
| |
| @item "identifier not followed by whitespace in #define" (Preprocessor, Warning, ANSI-violation) |
| |
| @item "assignment discards restrict" (Warning, ANSI-violation) |
| |
| @item "storage-class in declaration within for() converted to auto" (Warning, ANSI-violation) |
| |
| @item "corrupted special object" (ANSI-violation, Fatal) |
| |
| @item "<inline> only allowed in function declarations" (Error, ANSI-violation) |
| |
| @item "reference to static variable <%s> in inline function with external linkage" (Error, ANSI-violation) |
| |
| @item "underflow of pragma popwarn" (Error, ANSI-violation) |
| |
| @item "invalid argument to _Pragma" (Preprocessor, Error, ANSI-violation) |
| |
| @item "missing comma before '...'" (Preprocessor, Error, ANSI-violation) |
| |
| @item "padding bytes behind member <%s>" (Warning) |
| |
| @item "member <%s> does not have natural alignment" (Warning) |
| |
| @item "function <%s> exceeds %s limit" (Warning) |
| |
| @item "%s could not be calculated for function <%s>" (Warning) |
| |
| @item "offsetof applied to non-struct" (Error, ANSI-violation) |
| |
| @item "trailing garbage in #ifdef" (Preprocessor, Warning, ANSI-violation) |
| |
| @item "too many arguments to macro" (Preprocessor, Warning, ANSI-violation) |
| |
| @item "truncated comment" (Preprocessor, Warning|ANSI-violation) |
| |
| @item "trailing garbage in preprocessing directive" (Preprocessor, Warning, ANSI-violation) |
| |
| @item "variable-length array must have auto storage-class" (Error, ANSI-violation) |
| |
| @item "member <%s> has type with zero alignment/size (probably void)" (Error, ANSI-violation, Fatal) |
| |
| @item "stack information for target <%s> unavailable" (Warning) |
| |
| @item "used registers information unavailable for target <%s>" (Warning) |
| |
| @item "computed %sstack usage %d but set to %d" (Warning) |
| |
| @item "unable to compute call targets" (Warning) |
| |
| @item "computed register usage differs from specified one" (Warning) |
| |
| @item "trailing garbage in #include" (Preprocessor, Warning ,ANSI-violation) |
| |
| @item "target-warning: %s" (Warning) |
| |
| @item "target-error: %s" (Error) |