msg.txt
上传用户:filter2008
上传日期:2010-03-12
资源大小:2959k
文件大小:315k
源码类别:

编辑器/阅读器

开发平台:

C/C++

  1.                           17.  MESSAGES
  2. Most error messages have an associated error number.  By looking
  3. up the number in the list below you can obtain additional
  4. information about the cause of the error.  This information is
  5. also available from a self-extracting executable msg.exe, found
  6. on the PC-lint distribution diskette, which produces the
  7. machine-readable ASCII file msg.txt.  For FlexeLint users, the
  8. file msg.txt can be found on the FlexeLint Supplementary
  9. diskette.
  10. Messages numbered  1000 and higher pertain generally to C++.
  11. This is summarized in the table below.
  12. After a possible 1000 is subtracted off, the remainder lies in
  13. the range 0-999.  Remainders in the range 1-199 are syntax
  14. errors, 200-299 are PC-lint/FlexeLint internal errors and should
  15. never occur, 300-399 are fatal errors usually brought about by
  16. exceeding some limit, 400-699 are warning messages that indicate
  17. that something is likely to be wrong with the program being
  18. examined.  Remainders in the range 700-899 designate
  19. informational messages.  These may be errors but they also may
  20. represent legitimate programming practices depending upon
  21. personal programming style.  Remainders in the range 900-999 are
  22. called "Elective Notes".  They are not automatically output.  You
  23. may examine the list to see if you wish to be alerted to any of
  24. them.
  25.        C               C++         Warning Level
  26. Syntax Errors         1 - 199      1001 - 1199            1
  27. Internal Errors     200 - 299                             0
  28. Fatal Errors        300 - 399                             0
  29. Warnings            400 - 699      1400 - 1699            2
  30. Informational       700 - 899      1700 - 1899            3
  31. Elective Notes      900 - 999      1900 - 1999            4
  32. Glossary
  33. A few of the terms used in the commentary below are:
  34. argument The actual argument of a function as opposed to a dummy
  35.          (or formal) parameter of a function (see parameter).
  36. arithmetic  any of the integral types (see below) plus float,
  37.          double, and long double.
  38. Boolean  In general, the word Boolean refers to quantities that
  39.          can be either true or false.  An expression is said to
  40.          be Boolean (perhaps it would be better to say
  41.          'definitely Boolean') if it is of the form: operand op
  42.          operand where op is a relational (> >= < <=), an
  43.          equality operator (== !=), logical And (&&) or logical
  44.          Or (||).  A context is said to require a Boolean if it
  45.          is used in an if or while clause or if it is the 2nd
  46.          expression of a for clause or if it is an argument to
  47.          one of the operators:  && or ||.  An expression needn't
  48.          be definitely Boolean to be acceptable in a context
  49.          that requires a Boolean.  Any integer or pointer is
  50.          acceptable.
  51. declaration gives properties about an object or function (as
  52.          opposed to a definition).
  53. definition  that which allocates space for an object or function
  54.          (as opposed to a declaration) and which may also
  55.          indicate properties about the object.  There should be
  56.          only one definition for an object but there may be many
  57.          declarations.
  58. integral a type that has properties similar to integers.  These
  59.          include char, short, int, and long and the unsigned
  60.          variations of any of these.
  61. scalar   any of the arithmetic types plus pointers.
  62. lvalue   is an expression that can be used on the Left hand side
  63.          of an assignment operator (=).  Some contexts require
  64.          lvalues such as autoincrement (++) and autodecrement
  65.          (--).
  66. macro    an abbreviation defined by a #define statement.  It may
  67.          or may not have arguments.
  68. member   elements of a struct and of a union are called members.
  69. module   that which is compiled by a compiler in a single
  70.          independent compilation.  It typically includes all the
  71.          text of a .c (or a .cpp or .cxx, etc.) file plus any
  72.          text within any #include file(s).
  73. parameter A formal parameter of a function as opposed to an
  74.          actual argument (see argument).
  75. Message Parameters
  76. Some of the messages are parameterized with one or more of the
  77. following italicized names:
  78. Char     Some character
  79. Context  Specifies one of several contexts in which an
  80.          assignment can be made.  Can be one of:
  81.          o    assignment -- refers to an explicit assignment
  82.               operator.
  83.          o    return -- refers to the implied assignment of a
  84.               return statement. The type of the expression is
  85.               converted implicitly to the type of the function.
  86.          o    initialization -- refers to the assignment
  87.               implied by an initialization statement.
  88.          o    arg. no.... -- refers to the implied assignment
  89.               of an argument in the presence of a prototype.  The
  90.               type of the expression is implicitly converted to the
  91.               type within a prototype.
  92.          o    arg. 'this' -- refers to the implied argument of
  93.               a member function call.
  94. FileName  A filename.  Messages containing this parameter can
  95.           be suppressed with the -efile( ... ) option.
  96. Integer   Some integer
  97. Invocation  A function call with argument types.  To
  98.           suppress a message containing an Invocation you need
  99.           the complete call, not just the function name.  For
  100.           example, the call f(1) could result in Error  1024
  101.           parameterized by 'f(int)'.  To suppress this message
  102.           you could use -esym(1024,f(int)).  You could also use
  103.           wild cards as in -esym(1024,f*).
  104. Kind      A list of control structures.
  105. Location  A line number followed optionally by a filename (if
  106.           different from the current) and/or a module name if
  107.           different from the current.
  108. Name      A string, usually an identifier, that can be
  109.           suppressed with a -esym but not with -elibsym.
  110. String    A sequence of characters identified further in the
  111.           message description.
  112. Symbol    The name of a user identifier referring to a C or C++
  113.           object such as variable, function, structure, etc.
  114.           Messages containing this parameter can be suppressed
  115.           with the -esym( ... ) option.  For C++, if Symbol is
  116.           the name of a function the full function signature
  117.           (including parameters) is given.  Error suppression
  118.           with -esym does not require (nor want) the parameters.
  119. Type      A type or a top type base is provided.  A top type
  120.           base is one of pointer, function, array, struct, union,
  121.           or enum.
  122. TypeDiff  specifies the way in which one type differs from
  123.           another.  Because of type qualification, function
  124.           prototypes, and type compounding, it may not be obvious
  125.           how two types differ.  Also, see the -etd option to
  126.           inhibit errors based on type differences.  TypeDiff can
  127.           be one or more of:
  128.           o    basic -- The two types differ in some
  129.                fundamental way such as double versus int.
  130.           o    count -- Two function types differ in the number
  131.                of arguments.
  132.           o    ellipsis -- Two function types differ in that
  133.                one is prototyped using an ellipsis and the other is
  134.            not prototyped.  See Section 15.
  135.           o    incomplete -- At least one of the types is only
  136.                partially specified such as an array without a
  137.            dimension or a function without a prototype.
  138.           o    nominal -- The types are nominally different but
  139.                are otherwise the same.  For example, int versus long
  140.            where these are the same size or double versus long
  141.                double where these are the same size.  The two types
  142.            are either both integral or both float or are functions
  143.                that return types or have arguments that differ
  144.            nominally.  If long is the same size as int then
  145.                unsigned long will differ from int both as nominal and
  146.            as signed/unsigned.  If not the same size, then the
  147.                difference is precision.
  148.           o    origin -- The types are not actually different
  149.            but have different origins.  For example a struct is
  150.                defined in two separate modules rather than in one
  151.            header file.  If for some reason you want to do this
  152.                then use the option -etd(origin).
  153.           o    precision -- Two arithmetic types differ in
  154.            their precision such as int vs. long where these are
  155.                different sizes.
  156.           o    promotion -- Two function types differ in that
  157.            one is prototyped with a char, short or float type and
  158.                the other is not prototyped.
  159.           o    ptrs to... -- Pointers point to different types,
  160.            some TypeDiff code follows.
  161.           o    ptrs to incompatible types -- Pointers point to
  162.            types, which in turn differ in precision, count, size,
  163.            ellipsis or promotion.
  164.           o    qualification -- Qualifiers such as const,
  165.            volatile, etc. are inconsistent.
  166.           o    signed/unsigned -- The types differ in that one
  167.                is a signed integral type and the other is unsigned of
  168.                the same size, or they are both functions that return
  169.                types that differ in this way, or they are both
  170.                pointers to types that differ in this way.
  171.           o    size -- Two arrays differ in array dimension.
  172.           o    strong -- two types differ in that one is strong
  173.            and the other is not the same strong type.
  174.           o    void/nonvoid -- The two types differ in that one
  175.            is void and the other is not or, more frequently, they
  176.            are both functions returning types that differ in this
  177.            respect or pointers to types that differ in this
  178.            respect.
  179.           o    enum/enum-- One type is an enum.  The other
  180.                type is a different enum.
  181.           o    int/enum-- One type is an enum and the other is
  182.            an int.
  183.           o    Type = Type -- The two types in an assignment of
  184.                some kind differ in some basic way and no more
  185.            information is available.
  186.           o    Type vs. Type -- The two types differ in some
  187.                basic way and no more information is available.
  188. 17.1  C Syntax Errors
  189. 1     Unclosed Comment (Location)  -- End of file was reached
  190.       with an open comment still unclosed.  The Location of the
  191.       open comment is shown.
  192. 2     Unclosed Quote  -- An end of line was reached and a
  193.       matching quote character (single or double) to an earlier
  194.       quote character on the same line was not found.
  195. 3     #else without a #if  -- A #else was encountered not in the
  196.       scope of a #if, #ifdef or #ifndef.
  197. 4     Too many #if levels  -- An internal limit was reached on
  198.       the level of nesting of #if statements (including #ifdef
  199.       and #ifndef).
  200. 5     Too many #endif's  -- A #endif was encountered not in the
  201.       scope of a #if or #ifdef or #ifndef.
  202. 6     Stack Overflow  -- One of the built-in non-extendable
  203.       stacks has been overextended.  The possibilities are too
  204.       many nested #if statements, #includes statements
  205.       (including all recursive #include statements), static
  206.       blocks (bounded by braces) or #define replacements.
  207. 7     Unable to open include file: FileName  -- FileName is the
  208.       name of the include file, which could not be opened.  See
  209.       also flag fdi (See Section 5.), option -i...  ( See
  210.       Section 5.) and Section 13.2.1 INCLUDE Environment
  211.       Variable.
  212. 8     Unclosed #if (Location)  -- A #if (or #ifdef or #ifndef)
  213.       was encountered without a corresponding #endif.  Location
  214.       is the location of the #if.
  215. 9     Too many #else's in #if (Location)  -- A given #if
  216.       contained a #else, which in turn was followed by either
  217.       another #else or a #elif.  The error message gives the
  218.       line of the #if statement that started the conditional
  219.       that contained the aberration.
  220. 10    Expecting 'String'  -- String is the expected token.  The
  221.       expected token could not be found.  This is commonly given
  222.       when certain reserved words are not recognized.
  223. int __interrupt f();
  224.       will receive an Expecting ';' message at the f because it
  225.       thinks you just declared __interrupt.  The cure is to
  226.       establish a new reserved word with +rw(__interrupt).
  227.       Also, make sure you are using the correct compiler options
  228.       file.  See also Section 15.10 Strange Compilers.
  229. 11    Excessive Size  -- The filename specified on a #include
  230.       line had a length that exceeded FILENAME_MAX characters.
  231. 12    Need < or "  -- After a #include is detected and after
  232.       macro substitution is performed, a file specification of
  233.       the form <filename> or "filename" is expected.
  234. 13    Bad type  -- A type adjective such as long, unsigned, etc.
  235.       cannot be applied to the type, which follows.
  236. 14    Symbol 'Symbol' previously defined (Location)  -- The
  237.       named object has been defined a second time.  The location
  238.       of the previous definition is provided.  If this is a
  239.       tentative definition (no initializer) then the message can
  240.       be suppressed with the +fmd flag.  (Section 5.5 Flag
  241.       Options).
  242. 15    Symbol 'Symbol' redeclared (TypeDiff) (Location)  -- The
  243.       named symbol has been previously declared or defined in
  244.       some other module (location given) with a type different
  245.       from the type given by the declaration at the current
  246.       location.  The parameter TypeDiff provides further infor
  247.       mation on how the types differ (see Glossary in Chapter
  248.       17. MESSAGES.).
  249. 16    Unrecognized name  -- A # directive is not followed by a
  250.       recognizable word.  If this is not an error, use the +ppw
  251.       option.  (Section 5.7 Other Options).
  252. 17    Unrecognized name  -- A non-parameter is being declared
  253.       where only parameters should be.
  254. 18    Symbol 'Symbol' redeclared (TypeDiff) conflicts with
  255.       Location  -- A symbol is being redeclared.  The parameter
  256.       TypeDiff provides further information on how the types
  257.       differ (see Glossary Chapter 17. MESSAGES.).  Location is
  258.       the location of the previous definition.
  259. 19    Useless Declaration  -- A type appeared by itself without
  260.       an associated variable, and the type was not a struct and
  261.       not a union and not an enum.  A double semi-colon can
  262.       cause this as in:
  263. int x;;
  264. 20    Illegal use of =  -- A function declaration was followed
  265.       by an = sign.
  266. 21    Expected {  -- An initializer for an indefinite size array
  267.       must begin with a left brace.
  268. 22    Illegal operator  -- A unary operator was found following
  269.       an operand and the operator is not a post operator.
  270. 23    Expected colon  -- A ? operator was encountered but this
  271.       was not followed by a : as was expected.
  272. 24    Expected an expression, found 'String'  -- An operator was
  273.       found at the start of an expression but it was not a unary
  274.       operator.
  275. 25    Illegal constant  -- Too many characters were encountered
  276.       in a character constant (a constant bounded by ' marks).
  277. 26    Expected an expression, found 'String'  -- An expression
  278.       was not found where one was expected.  The unexpected
  279.       token is placed in the message.
  280. 27    Illegal character (0xhh)  -- An illegal character was
  281.       found in the source code. The hex code is provided in the
  282.       message.  A blank is assumed.  If you are using strange
  283.       characters in identifier names you will get this message
  284.       for which you may use the -ident option.  ( See Section
  285.       5.)
  286. 28    Redefinition of symbol 'Symbol' Location  -- The
  287.       identifier preceding a colon was previously declared at
  288.       the Location given as not being a label.
  289. 30    Expected a constant  -- A constant was expected but not
  290.       obtained.  This could be following a case keyword, an
  291.       array dimension, bit field length, enumeration value, #if
  292.       expression, etc.
  293. 31    Redefinition of symbol 'Symbol' conflicts with Location
  294.       -- A data object or function previously defined in this
  295.       module is being redefined.
  296. 32    Field size (member 'Symbol') should not be zero  -- The
  297.       length of a field was given as non-positive, (0 or
  298.       negative).
  299. 33    Illegal constant  -- A constant was badly formed as when
  300.       an octal constant contains one of the digits 8 or 9.
  301. 34    Non-constant initializer  -- A non-constant initializer
  302.       was found for a static data item.
  303. 35    Initializer has side-effects  -- An initializer with side
  304.       effects was found for a static data item.
  305. 36    Redefining the storage class of symbol 'Symbol' conflicts
  306.       with Location  -- An object's storage class is being
  307.       changed.
  308. 37    Value of enumerator 'Symbol' inconsistent (conflicts with
  309.       Location)  -- An enumerator was inconsistently valued.
  310. 38    Offset of symbol 'Symbol' inconsistent (Location)  -- A
  311.       member of a class or struct appears in a different
  312.       position (offset from the start of the structure) than an
  313.       earlier declaration.  This could be caused by array
  314.       dimensions changing from one module to another.
  315. 39    Redefinition of symbol 'Symbol' conflicts with Location
  316.       -- A struct or union is being redefined.
  317. 40    Undeclared identifier 'Name'  -- Within an expression, an
  318.       identifier was encountered that had not previously been
  319.       declared and was not followed by a left parenthesis.  Name
  320.       is the name of the identifier.
  321. 41    Redefinition of symbol 'Symbol'  -- A parameter of either
  322.       a function or a macro is being repeated.
  323. 42    Expected a statement  -- A statement was expected but a
  324.       token was encountered that could not possibly begin a
  325.       statement.
  326. 43    Vacuous type for variable 'Symbol'  -- A vacuous type was
  327.       found such as the void type in a context that expected
  328.       substance.
  329. 44    Need a switch  -- A case or default statement occurred
  330.       outside a switch.
  331. 45    Bad use of register  -- A variable is declared as a
  332.       register but its type is inconsistent with it being a
  333.       register (such as a function).
  334. 46    Field type should be int  -- Bit fields in a structure
  335.       should be typed unsigned or int.  If your compiler allows
  336.       other kinds of objects, such as char, then simply suppress
  337.       this message.
  338. 47    Bad type  -- Unary minus requires an arithmetic operand.
  339. 48    Bad type  -- Unary * or the left hand side of the ptr (->)
  340.       operator requires a pointer operand.
  341. 49    Expected a type  -- Only types are allowed within
  342.       prototypes.  A prototype is a function declaration with a
  343.       sequence of types within parentheses.  The processor is at
  344.       a state where it has detected at least one type within
  345.       parentheses and so is expecting more types or a closing
  346.       right parenthesis.
  347. 50    Attempted to take the address of a non-lvalue  -- Unary &
  348.       operator requires an lvalue (a value suitable for
  349.       placement on the left hand side of an assignment
  350.       operator).
  351. 51    Expected integral type  -- Unary ~ expects an integral
  352.       type (signed or unsigned char, short, int, or long).
  353. 52    Expected an lvalue  -- autodecrement (--) and
  354.       autoincrement (++) operators require an lvalue (a value
  355.       suitable for placement on the left hand side of an
  356.       assignment operator).  Remember that casts do not normally
  357.       produce lvalues.  Thus
  358. ++(char *)p;
  359.       is illegal according to the ANSI standard.  This construct
  360.       is allowed by some compilers and is allowed if you use the
  361.       +fpc option (Pointer Casts are lvalues).  (See Section 5.)
  362. 53    Expected a scalar  -- Autodecrement (--) and autoincrement
  363.       (++) operators may only be applied to scalars (arithmetics
  364.       and pointers) or to objects for which these operators have
  365.       been defined.
  366. 54    Division by 0  -- The constant 0 was used on the right
  367.       hand side of the division operator (/) or the remainder
  368.       operator (%).
  369. 55    Bad type  -- The context requires a scalar, function,
  370.       array, or struct (unless -fsa).
  371. 56    Bad type  -- Add/subtract operator requires scalar types
  372.       and pointers may not be added to pointers.
  373. 57    Bad type  -- Bit operators ( &, | and ^ ) require integral
  374.       arguments.
  375. 58    Bad type  -- Bad arguments were given to a relational
  376.       operator; these always require two scalars and pointers
  377.       can't be compared with integers (unless constant 0).
  378. 59    Bad type  -- The amount by which an item can be shifted
  379.       must be integral.
  380. 60    Bad type  -- The value to be shifted must be integral.
  381. 61    Bad type  -- The context requires a Boolean.  Booleans
  382.       must be some form of arithmetic or pointer.
  383. 62    Incompatible types (TypeDiff) for operator ':'  -- The 2nd
  384.       and 3rd arguments to ? : must be compatible types.
  385. 63    Expected an lvalue  -- Assignment expects its first
  386.       operand to be an lvalue.  Please note that a cast removes
  387.       the lvaluedness of an expression.  But see also flag +fpc
  388.       in Section 5.5 Flag Options.
  389. 64    Type mismatch (Context) (TypeDiff)  -- There was a
  390.       mismatch in types across an assignment (or implied
  391.       assignment, see Context).  TypeDiff specifies the type
  392.       difference.  See options -epn, -eps, -epu, -epp (Section
  393.       5.2 Error Inhibition Options) to suppress this message
  394.       when assigning some kinds of pointers.
  395. 65    Expected a member name  -- After a dot (.) or pointer (->)
  396.       operator a member name should appear.
  397. 66    Bad type  -- A void type was employed where it is not
  398.       permitted.  If a void type is placed in a prototype then
  399.       it must be the only type within a prototype.  (See error
  400.       number  49.)
  401. 67    Can't cast from Type to Type  -- Attempt to cast a
  402.       non-scalar to an integral.
  403. 68    Can't cast from Type to Type  -- Attempt to cast a
  404.       non-arithmetic to a float.
  405. 69    Can't cast from Type to Type  -- Bad conversion involving
  406.       incompatible structures or a structure and some other
  407.       object.
  408. 70    Can't cast from Type to Type  -- Attempt to cast to a
  409.       pointer from an unusual type (non-integral).
  410. 71    Can't cast from Type to Type  -- Attempt to cast to a type
  411.       that does not allow conversions.
  412. 72    Bad option 'String'  -- Was not able to interpret an
  413.       option.  The option is given in String.
  414. 73    Bad left operand  -- The cursor is positioned at or just
  415.       beyond either an -> or a . operator.  These operators
  416.       expect an expression primary on their left.  Please
  417.       enclose any complex expression in this position within
  418.       parentheses.
  419. 74    Address of Register  -- An attempt was made to apply the
  420.       address (&) operator to a variable whose storage class was
  421.       given as register.
  422. 75    Too late to change sizes (option 'String')  -- The size
  423.       option was given after all or part of a module was
  424.       processed.  Make sure that any option to reset sizes of
  425.       objects be done at the beginning of the first module
  426.       processed or on the command line before any module is
  427.       processed.
  428. 76    can't open file  String  -- String is the name of the
  429.       file.  The named file could not be opened for output.  The
  430.       file was destined to become a PC-lint/FlexeLint object
  431.       module.
  432. 77    Address of bit-field cannot be taken  -- The address of a
  433.       bit-field cannot be taken.  The rules of C only allow for
  434.       taking the address of a whole byte (a whole char).
  435. 78    Symbol 'Symbol' typedef'ed at Location used in expression
  436.       -- The named symbol was defined in a typedef statement and
  437.       is therefore considered a type.  It was subsequently found
  438.       in a context where an expression was expected.
  439. 79    Bad type for % operator  -- The % operator should be used
  440.       with some form of integer.
  441. 80    this use of ellipsis is not strictly ANSI  -- The ellipsis
  442.       should be used in a prototype only after a sequence of
  443.       types not after a sequence of identifiers.  Some compilers
  444.       support this extension.  If you want to use this feature
  445.       suppress this message.
  446. 81    struct/union not permitted in equality comparison  -- Two
  447.       struct's or union's are being compared with one of == or
  448.       !=.  This is not permitted by the ANSI standard.  If your
  449.       compiler supports this, suppress this message.
  450. 82    return <exp>; illegal with void function  -- The ANSI
  451.       standard does not allow an expression form of the return
  452.       statement with a void function.  If you are trying to cast
  453.       to void as in return (void)f(); and your compiler allows
  454.       it, suppress this message.
  455. 83    Incompatible pointer types with subtraction  -- Two
  456.       pointers being subtracted have indirect types which
  457.       differ.  You can get PC-lint/FlexeLint to ignore slight
  458.       differences in the pointers by employing one or more of
  459.       the -ep... options described in Section 5.2 Error
  460.       Inhibition Options.
  461. 84    sizeof object is zero or object is undefined  -- A sizeof
  462.       returned a 0 value.  This could happen if the object were
  463.       undefined or incompletely defined.  Make sure a complete
  464.       definition of the object is in scope when you use sizeof.
  465. 85    Array 'Symbol' has dimension 0  -- An array (named Symbol)
  466.       was declared without a dimension in a context that
  467.       required a non-zero dimension.
  468. 86    Structure 'Symbol' has no data elements  -- A structure
  469.       was declared (in a C module) that had no data members.
  470.       Though legal in C++ this is not legal C.
  471. 87    Expression too complicated for #ifdef or #ifndef  -- By
  472.       the rules of C there should be only a single identifier
  473.       following a #ifdef or a #ifndef.  You may also supply a
  474.       validly constructed C (or C++) comment.
  475. 88    Symbol 'Symbol' is an array of empty elements  -- An array
  476.       was declared (in a C module) whose elements were each of 0
  477.       length.  Though legal in C++ this is not permitted C.
  478. 90    Option 'String' is only appropriate within a lint comment
  479.       -- The indicated option is not appropriate at the command
  480.       or the .lnt level.  For example if -unreachable is given
  481.       on the command line you will get this message.
  482. 91    Line exceeds Integer characters (use +linebuf)  -- A line
  483.       read from one of the input files is longer than
  484.       anticipated.  By default the line buffer size is 600
  485.       characters.  Each time you use the +linebuf option you can
  486.       double this size.  The size can be doubled ad infinitum.
  487.  92    Negative array dimension or bit field length (Integer)  --
  488.       A negative array dimension or bit field length is not
  489.       permitted.
  490. 93    New-line is not permitted within string arguments to
  491.       macros  -- A macro invocation contains a string that is
  492.       split across more than one line.  For example:
  493. A( "Hello
  494.    World" );
  495.       will trigger this message.  Some compilers accept this
  496.       construct and you can suppress this message with -e93 if
  497.       this is your current practice.  But it is more portable to
  498.       place the string constant on one line.  Thus
  499. A( "Hello World" );
  500.       would be better.
  501. 101   Expected an identifier  -- While processing a function
  502.       declarator, a parameter specifier was encountered that was
  503.       not an identifier, whereas a prior parameter was specified
  504.       as an identifier.  This is mixing old-style function
  505.       declarations with the new-style and is not permitted.  For
  506.       example
  507. void f(n,int m)
  508.       will elicit this message.
  509. 102   Illegal parameter specification  -- Within a function
  510.       declarator, a parameter must be specified as either an
  511.       identifier or as a type followed by a declarator.
  512. 103   Unexpected declaration  -- After a prototype, only a
  513.       comma, semi-colon, right parenthesis or a left brace may
  514.       occur.  This error could occur if you have omitted a
  515.       terminating character after a declaration or if you are
  516.       mixing old-style parameter declarations with new-style
  517.       prototypes.
  518. 104   Conflicting types  -- Two consecutive conflicting types
  519.       were found such as int followed by double.  Remove one of
  520.       the types!
  521. 105   Conflicting modifiers  -- Two consecutive conflicting
  522.       modifiers were found such as far followed by near.  Remove
  523.       one of the modifiers!
  524. 106   Illegal constant  -- A string constant was found within a
  525.       preprocessor expression as in
  526. #if ABC == "abc"
  527.       Such expressions should be integral expressions.
  528. 107   Label 'Symbol' (Location) not defined  -- The Symbol at
  529.       the given Location appeared in a goto but there was no
  530.       corresponding label.
  531. 108   Invalid context  -- A continue or break statement was
  532.       encountered without an appropriate surrounding context
  533.       such as a for, while, or do loop or, for the break
  534.       statement only, a surrounding switch statement.
  535. 110   Attempt to assign to void  -- An attempt was made to
  536.       assign a value to an object designated (possibly through a
  537.       pointer) as void.
  538. 111   Assignment to const object  -- An object declared as const
  539.       was assigned a value.  This could arise via indirection.
  540.       For example, if p is a pointer to a const int then
  541.       assigning to *p will raise this error.
  542. 113   Inconsistent enum declaration  -- The sequence of members
  543.       within an enum (or their values) is inconsistent with that
  544.       of another enum (usually in some other module) having the
  545.       same name.
  546. 114   Inconsistent structure declaration for tag 'Symbol'  --
  547.       The sequence of members within a structure (or union) is
  548.       inconsistent with another structure (usually in some other
  549.       module) having the same name.
  550. 115   Struct/union not defined  -- A reference to a structure or
  551.       a union was made that required a definition and there is
  552.       no definition in scope. For example, a reference to p->a
  553.       where p is a pointer to a struct that had not yet been
  554.       defined in the current module.
  555. 116   Inappropriate storage class  -- A storage class other than
  556.       register was given in a section of code that is dedicated
  557.       to declaring parameters.  The section is that part of a
  558.       function preceding the first left brace.
  559. 117   Inappropriate storage class  -- A storage class was
  560.       provided outside any function that indicated either auto
  561.       or register.  Such storage classes are appropriate only
  562.       within functions.
  563. 118   Too few arguments for prototype  -- The number of
  564.       arguments provided for a function was less than the number
  565.       indicated by a prototype in scope.
  566. 119   Too many arguments for prototype  -- The number of
  567.       arguments provided for a function was greater than the
  568.       number indicated by a prototype in scope.
  569. 122   Digit (Char) too large for radix  -- The indicated
  570.       character was found in a constant beginning with zero.
  571.       For example, 08 is accepted by some compilers to represent
  572.       8 but it should be 010 or plain 8.
  573. 123   Macro 'Symbol' defined with arguments at Location this is
  574.       just a warning  -- The name of a macro defined with
  575.       arguments was subsequently used without a following '('.
  576.       This is legal but may be an oversight.  It is not uncommon
  577.       to suppress this message (with -e123), because some
  578.       compilers allow, for example, the macro max() to coexist
  579.       with a variable max.  ( See Section 15.).
  580. 124   Pointer to void not allowed  -- A pointer to void was used
  581.       in a context that does not permit void.  This includes
  582.       subtraction, addition and the relationals (> >= < <=).
  583. 125   Too many storage class specifiers  -- More than one
  584.       storage class specifier (static, extern, typedef, register
  585.       or auto) was found.  Only one is permitted.
  586. 126   Inconsistent structure definition 'Symbol'  -- The named
  587.       structure (or union or enum) was inconsistently defined
  588.       across modules.  The inconsistency was recognized while
  589.       processing a lint object module.  Line number information
  590.       was not available with this message.  Alter the structures
  591.       so that the member information is consistent.
  592. 127   Illegal constant  -- An empty character constant ('') was
  593.       found.
  594. 128   Pointer to function not allowed  -- A pointer to a
  595.       function was found in an arithmetic context such as
  596.       subtraction, addition, or one of the relationals (> >= <
  597.       <=).
  598. 129   declaration expected, identifier 'Symbol' ignored  -- In a
  599.       context in which a declaration was expected an identifier
  600.       was found.  Moreover, the identifier was not followed by
  601.       '(' or a '['
  602. 130   Expected integral type  -- The expression in a switch
  603.       statement must be some variation of an int (possibly long
  604.       or unsigned) or an enum.
  605. 131   syntax error in call of macro 'Symbol' at location
  606.       Location  -- This message is issued when a macro with
  607.       arguments (function-like macro) is invoked and an
  608.       incorrect number of arguments is provided.  Location is
  609.       the location of the start of the macro call.  This can be
  610.       useful because an errant macro call can extend over many
  611.       lines.
  612. 132   Expected function definition  -- A function declaration
  613.       with identifiers between parentheses is the start of an
  614.       old-style function definition (K&R style).  This is
  615.       normally followed by optional declarations and a left
  616.       brace to signal the start of the function body.  Either
  617.       replace the identifier(s) with type(s) or complete the
  618.       function with a function body.
  619. 133   Too many initializers for aggregate  -- In a
  620.       brace-enclosed initializer, there are more items than
  621.       there are elements of the aggregate.
  622. 134   Missing initializer  -- An initializer was expected but
  623.       only a comma was present.
  624. 135   comma assumed in initializer  -- A comma was missing
  625.       between two initializers.  For example:
  626. int a[2][2] = { { 1, 2 }  { 3, 4 } };
  627.       is missing a comma after the first right brace (}).
  628. 136   Illegal macro name  -- The ANSI standard restricts the use
  629.       of certain names as macros.  defined is on the restricted
  630.       list.
  631. 137   constant 'Symbol' used twice within switch  -- The
  632.       indicated constant was used twice as a case within a
  633.       switch statement.  Currently only enumerated types are
  634.       checked for repeated occurrence.
  635. 138   Can't add parent 'Symbol' to strong type String; creates
  636.       loop  -- An attempt was made to add a strong type parent
  637.       to a typedef type.  The attempt is either explicit (with
  638.       the -strong option) or implicit with the use of a typedef
  639.       to a known strong type.  This attempt would have caused a
  640.       loop in the strong parent relationship.  Such loops are
  641.       simply not tolerated.
  642. 139   Can't take sizeof function  -- There is an attempt to take
  643.       the sizeof a function.
  644. 140   Type appears after modifier  -- Microsoft modifiers such
  645.       as far, _near, __huge, _pascal, etc. etc. modify the
  646.       declarator to its immediate right.  It therefore should
  647.       not appear before the type.  For example, you should write
  648.       int pascal f(void); rather than pascal int f(void);.  Note
  649.       that const and volatile differ from the Microsoft
  650.       modifiers.  They may appear before or after the type.
  651.       After reporting the error an attempt is made to process
  652.       the modifiers as the programmer probably intended.  See
  653.       also the +fem flag in Section 5.5 Flag Options.
  654. 141   The following option has too many elements: 'String'  --
  655.       The indicated option (given by 'String') is too big.  It
  656.       most likely consists of an itemized list that has too many
  657.       items.  You should decompose the large option into two or
  658.       more smaller options that in sum are equivalent to the one
  659.       large option.
  660. 144   Non-existent return value for symbol 'Symbol', compare
  661.       with Location  -- An attempt was made to use a
  662.       non-existent return value of the named function
  663.       (identified by Symbol).  It was previously decided that
  664.       the function did not return a value or was declared with
  665.       void.
  666. 145   Type expected before operator, void assumed  -- In a
  667.       context in which a type is expected no type is found.
  668.       Rather, an operator '*' or '&' was encountered.  The
  669.       keyword void was assumed to have preceded this operator.
  670. 146   Assuming a binary constant  -- A constant of the form
  671.       0b... was encountered.  This was taken to be a binary
  672.       constant.  For example, 0b100 represents the value 4.  If
  673.       your compiler supports binary constants you may suppress
  674.       this message.
  675. 147   sizeof takes just one argument  -- An expression of the
  676.       form sizeof(a,b) was detected.  A second argument is non
  677.       standard and has been used by some compilers to denote an
  678.       option to the sizeof operator.  If your compiler has a use
  679.       for the second argument then suppress this message.
  680. 148   member 'Symbol' previously declared at Location  -- The
  681.       indicated member was previously declared within the same
  682.       structure or union.  Although a redeclaration of a
  683.       function may appear benign it is just not permitted by the
  684.       rules of the language. One of the declarations should be
  685.       removed.
  686. 149   C++ construct 'String' found in C code  -- An illegal
  687.       construct was found in C code.  It looked as though it
  688.       might be suitable for C++.  The quoted string identifies
  689.       the construct further.
  690. 150   Token 'String' unexpected String  -- An unexpected token
  691.       was encountered.  The action taken, if any, is identified
  692.       by the second message parameter.
  693. 151   Token 'Name' inconsistent with abstract type  -- In a
  694.       context in which an abstract type is allowed such as
  695.       within a cast or after a sizeof, and after starting to
  696.       parse the abstract type, an identifier was found.  For
  697.       example:
  698. x = (int y) z;
  699. 152   Lob base file 'file name' missing  -- The indicated file
  700.       has been specified as the base of lob production via the
  701.       option -lobbase().  On output, this message is given if
  702.       the lob base is missing.  The situation is correctable by
  703.       simply producing the missing lob output.  This will not be
  704.       a problem given the appropriate dependencies in the make
  705.       file.  On input, the most likely cause of this message is
  706.       an out-of-date base file.  A hash code within the lob file
  707.       being read, did not match a similar code already embedded
  708.       within the base.  The input lob file should be considered
  709.       in error and should be regenerated.  See Chapter 7.
  710. 153   Could not create temporary file  -- This message is
  711.       produced when generating a lob output file based upon some
  712.       lob base file.  When the lob file is produced, it is first
  713.       written to a temporary.  The temporary is generated by the
  714.       C library function tmpnam().
  715. 154   Could not evaluate type 'String', int assumed  -- String
  716.       in the message is the second argument to either a
  717.       printf_code option or a scanf_code option.  When used, it
  718.       was to be evaluated as a type.  Unfortunately the type
  719.       could not be identified.
  720. 155   Ignoring {...} sequence within an expression, 0 assumed -- A
  721.       braced    sequence within an expression is a non-standard
  722.       extension of some compilers (in particular GCC).
  723.       Internally, we treat such a braced sequence as the
  724.       equivalent of a constant 0.  This means that we may be
  725.       able to quietly lint such constructions if you merely
  726.       suppress the message.
  727. 17.2  Internal Errors
  728. 200-299  Some inconsistency or contradiction was discovered in
  729.     the PC-lint/FlexeLint system.  This may or may not be the
  730.     result of a user error.  This inconsistency should be
  731.     brought to the attention of Gimpel Software.
  732. 17.3  Fatal Errors
  733. Errors in this category are normally fatal and suppressing the
  734. error is normally impossible.  However, those errors marked with
  735. an asterisk(*) can be suppressed and processing will be
  736. continued.  For example -e306 will allow reprocessing of modules.
  737. 301   Stack overflow  -- There was a stack overflow while
  738.       processing declarations.  Approximately 50 nested
  739.       declarators were found.  For example, if a '/' followed by
  740.       50 consecutive '*'s were to introduce a box-like comment
  741.       and if the '/' were omitted, then this message would be
  742.       produced.
  743. 302   Exceeded Available Memory  -- Main memory has been
  744.       exhausted. 
  745. 303   String too long (try +macros)  -- A single #define
  746.       definition or macro invocation exceeded an internal limit
  747.       (of 4096 characters).  As the diagnostic indicates the
  748.       problem can be corrected with an option.
  749. 304   Corrupt object file, code Integer, symbol=String  -- A
  750.       PC-lint/FlexeLint object file is apparently corrupted.
  751.       Please delete the object module and recreate it using the
  752.       -oo option.  See Section 7.  The special code identifier
  753.       number as well as a list of symbol names are optionally
  754.       suffixed to the message as an aid in diagnosing the
  755.       problem by technical support.
  756. 305   Unable to open module 'file name'  -- file name is the
  757.       name of the file.  The named module could not be opened
  758.       for reading.  Perhaps you misspelled the name.
  759. 306*  Previously encountered module 'FileName'  -- FileName is
  760.       the name of the module.  The named module was previously
  761.       encountered.  This is probably a user blunder.
  762. 307   Can't open indirect file 'FileName'  -- FileName is the
  763.       name of the indirect file.  The named indirect file
  764.       (ending in .lnt) could not be opened for reading.
  765. 308   Can't write to standard out  -- stdout was found to equal
  766.       NULL.  This is most unusual.
  767. 309*  #error ...  -- The #error directive was encountered.  The
  768.       ellipsis reflects the original line.  Normally processing
  769.       is terminated at this point.  If you set the fce (continue
  770.       on #error) flag, processing will continue.
  771. 310   Declaration too long: 'String...'  -- A single declaration
  772.       was found to be too long for an internal buffer (about
  773.       2000 characters).  This occurred when attempting to write
  774.       out the declaration using the -o... option.  The first 30
  775.       characters of the declaration is given in String.
  776.       Typically this is caused by a very long struct whose
  777.       substructures, if any, are untagged.  First identify the
  778.       declaration that is causing the difficulty.  If a struct
  779.       or union, assign a tag to any unnamed substructures or
  780.       subunion.  A typedef can also be used to reduce the size
  781.       of such a declaration.
  782. 312   Lint Object Module has obsolete or foreign version id  --
  783.       A lint object module was produced with a prior or
  784.       different version of PC-lint/FlexeLint.  Delete the.lob
  785.       file and recreate it using your new version of
  786.       PC-lint/FlexeLint.
  787. 313   Too many files  -- The number of files that
  788.       PC-lint/FlexeLint can process has exceeded an internal
  789.       limit.  The FlexeLint user may recompile his system to
  790.       increase this limit.  Look for symbol FSETLEN in custom.h.
  791.       Currently, the number of files is limited to 6400.
  792. 314*  Previously used .lnt file: FileName  -- The indirect file
  793.       named was previously encountered.  If this was not an
  794.       accident, you may suppress this message.
  795. 315   Exceeded message limit (see -limit)  -- The maximum number
  796.       of messages was exceeded.  Normally there is no limit
  797.       unless one is imposed by the -limit(n) option.  ( See
  798.       Section 5.)
  799. 316   Error while writing to file "file name"  -- The given file
  800.       could not be opened for output.
  801. 321   Declaration stack overflow  -- An overflow occurred in the
  802.       stack used to contain array, pointer, function or
  803.       reference modifiers when processing a declarator.
  804. 322*  Unable to open include file FileName  -- FileName is the
  805.       name of the include file, which could not be opened.
  806.       Directory search is controlled by options:  -i (See
  807.       Section 5.), +fdi (Section 5.5 Flag Options) and the
  808.       INCLUDE environment variable.  This is a suppressible
  809.       fatal message.  If option -e322 is used, Error message  7
  810.       will kick in.  A diagnostic will be issued but processing
  811.       will continue.
  812. 323   Token String too long  -- In attempting to save a token
  813.       for later reuse, a fixed size buffer was exceeded
  814.       (governed by the size M_TOKEN).
  815. 324   Too many symbols Integer  -- Too many symbols were
  816.       encountered.  An internal limit was reached.
  817. 325   Cannot re-open file 'file name'  -- In the case of a large
  818.       number of nested includes, files in the outer fringe need
  819.       to be closed before new ones are opened.  These outer
  820.       files then need to be re-opened.  An error occurred when
  821.       attempting to re-open such a file.
  822. 17.4  C Warning Messages
  823. 401   symbol 'Symbol' not previously declared static at Location
  824.       -- The indicated Symbol declared static was previously
  825.       declared without the static storage class.  This is
  826.       technically a violation of the ANSI standard. Some
  827.       compilers will accept this situation without complaint and
  828.       regard the Symbol as static.
  829. 402   static function 'Symbol' (Location) not defined  -- The
  830.       named Symbol was declared as a static function in the
  831.       current module and was referenced but was not defined (in
  832.       the module).
  833. 403   static symbol 'Symbol' has unusual type modifier  -- Some
  834.       type modifiers such as _export are inconsistent with the
  835.       static storage class.
  836. 404   struct not completed within file 'FileName'  -- A struct
  837.       (or union or enum) definition was started within a header
  838.       file but was not completed within the same header file.
  839. 405   #if not closed off within file 'FileName'  -- An #if
  840.       construct was begun within a header file (name given) but
  841.       was not completed within that header file.  Was this
  842.       intentional?
  843. 406   Comment not closed off within file 'FileName'  -- A
  844.       comment was begun within a header file (name given) but
  845.       was not completed within that header file.  Was this
  846.       intentional?
  847. 407   Inconsistent use of tag 'Symbol' conflicts with Location
  848.       -- A tag specified as a union, struct or enum was
  849.       respecified as being one of the other two in the same
  850.       module. For example:
  851. struct tag *p;
  852. union tag *q;
  853.       will elicit this message.
  854. 408   Type mismatch with switch expression  -- The expression
  855.       within a case does not agree exactly with the type within
  856.       the switch expression.  For example, an enumerated type is
  857.       matched against an int.
  858. 409   Expecting a pointer or array  -- An expression of the form
  859.       i[...] was encountered where i is an integral expression.
  860.       This could be legitimate depending on the subscript
  861.       operand.  For example, if i is an int and a is an array
  862.       then i[a] is legitimate but unusual.  If this is your
  863.       coding style, suppress this message.
  864. 410   size_t not what was expected from fzl and/or fzu, using
  865.       'Type'  -- This warning is issued if you had previously
  866.       attempted to set the type of sizeof by use of the options
  867.       +fzl, -fzl, or -fzu, and a later size_t declaration
  868.       contradicts the setting.  This usually means you are
  869.       attempting to lint programs for another system using
  870.       header files for your own system.  If this is the case we
  871.       suggest you create a directory housing header files for
  872.       that foreign system, alter size_t within that directory,
  873.       and lint using that directory.
  874. 411   ptrdiff_t not what was expected from fdl option, using
  875.       'Type'  -- This warning is issued if you had previously
  876.       attempted to set the type of pointer differences by use of
  877.       the fdl option and a later ptrdiff_t declaration
  878.       contradicts the setting.  See suggestion in Error Message
  879.       410.
  880. 412   Ambiguous format specifier '%X'  -- The format specifier
  881.       %X when used with one of the scanf family, is ambiguous.
  882.       With Microsoft C it means %lx whereas in ANSI C it has the
  883.       meaning of %x.  This ambiguous format specification has no
  884.       place in any serious C program and should be replaced by
  885.       one of the above.
  886. 413   Likely use of null pointer 'Symbol' in [left/right]
  887.       argument to operator 'String' Reference  -- From
  888.       information gleaned from earlier statements, it appears
  889.       certain that a null pointer (a pointer whose value is 0)
  890.       has been used in a context where null pointers are
  891.       inappropriate.  These include:  Unary *, pointer increment
  892.       (++) or decrement(--), addition of pointer to numeric, and
  893.       subtraction of two pointers.  In the case of binary
  894.       operators, one of the words 'left' or 'right' is used to
  895.       designate which operand is null.  Symbol identifies the
  896.       pointer variable that may be null.  See also messages  613
  897.       and  794, and Section 9.2 Value Tracking.
  898. 414   Possible division by 0  -- The second argument to either
  899.       the division operator (/) or the modulus operator (%) may
  900.       be zero.  Information is taken from earlier statements
  901.       including assignments, initialization and tests.  See
  902.       Section 9.
  903. 415   access of out-of-bounds pointer ('Integer' beyond end of
  904.       data) by operator 'String'  -- An out-of-bounds pointer
  905.       was accessed.  String designates the operator.  The
  906.       parameter 'Integer' gives some idea how far out of bounds
  907.       the pointer may be.  It is measured in units given by the
  908.       size of the pointed to object.  The value is relative to
  909.       the last item of good data and therefore should always be
  910.       greater than zero.  For example:
  911. int a[10];
  912. a[10] = 0;
  913.       results in an overflow message containing the phrase '1
  914.       beyond end of data'.  See Section 9.
  915. 416   creation of out-of-bounds pointer ('Integer' beyond end of
  916.       data) by operator 'String'  -- An out-of-bounds pointer
  917.       was created.  See message  415 for a description of the
  918.       parameters Integer and String.  For example:
  919. int a[10];
  920.  ...
  921. f( a + 11 );
  922.       Here, an illicit pointer value is created and is flagged
  923.       as such by PC-lint/FlexeLint.  Note that the pointer a+10
  924.       is not considered by PC-lint/FlexeLint to be the creation
  925.       of an out-of-bounds pointer.  This is because ANSI C
  926.       explicitly allows pointing just beyond an array.  Access
  927.       through a+10, however, as in *(a+10) or the more familiar
  928.       a[10], would be considered erroneous but in that case
  929.       message  415 would be issued.  See Section 9.
  930. 417   integral constant 'String' longer than long long int  --
  931.       The longest possible integer is by default 8 bytes (see
  932.       the +fll flag and then the -sll# option).  An integral
  933.       constant was found to be even larger than such a quantity.
  934.       For example: 0xFFFF0000FFFF0000F.  String is the token in
  935.       error.
  936. 418   Passing null pointer to function 'Symbol', Context
  937.       Reference  -- A NULL pointer is being passed to a function
  938.       identified by Symbol.  The argument in question is given
  939.       by Context.  The function is either a library function
  940.       designed not to receive a NULL pointer or a user function
  941.       dubbed so via the option -function.  See Section 10.1
  942.       Function Mimicry (function) and Section 10.2.1 Possible
  943.       Semantics.
  944. 419   Apparent data overrun for function 'Symbol', argument
  945.       Integer exceeds argument Integer  -- This message is for
  946.       data transfer functions such as memcpy, strcpy, fgets,
  947.       etc. when the size indicated by the first cited argument
  948.       (or arguments) exceeds the size of the buffer area cited
  949.       by the second.  The message may also be issued for user
  950.       functions via the -function option.  See Section 10.1
  951.       Function Mimicry (function) and Section 10.2.1 Possible
  952.       Semantics.
  953. 420   Apparent access beyond array for function 'Symbol',
  954.       argument Integer exceeds Integer Reference  -- This
  955.       message is issued for several library functions (such as
  956.       fwrite, memcmp, etc.) wherein there is an apparent attempt
  957.       to access more data than exist.  For example, if the
  958.       length of data specified in the fwrite call exceeds the
  959.       size of the data specified.  The function is specified by
  960.       Symbol and the arguments are identified by argument
  961.       number.  See also Section 10.1 Function Mimicry (function)
  962.       and Section 10.2.1 Possible Semantics.
  963. 421   Caution -- function 'Symbol' is considered dangerous  --
  964.       This message is issued (by default) for the built-in
  965.       function gets.  This function is considered dangerous
  966.       because there is no mechanism to ensure that the buffer
  967.       provided as first argument will not overflow.  A well
  968.       known computer virus (technically a worm) was created
  969.       based on this defect.  Through the -function option, the
  970.       user may designate other functions as dangerous.
  971. 422   Passing to function 'Symbol' a negative value (Integer),
  972.       Context Reference  -- An integral value that appears to be
  973.       negative is being passed to a function that is expecting
  974.       only positive values for a particular argument.  The
  975.       message contains the name of the function (Symbol), the
  976.       questionable value (Integer) and the argument number
  977.       (Context).  The function may be a standard library
  978.       function designed to accept only positive values such as
  979.       malloc or memcpy (third argument), or may have been
  980.       identified by the user as such through the -function or
  981.       -sem options.
  982.       The negative integral value may in fact be unsigned.
  983.       Thus:
  984. void *malloc( unsigned );
  985. void f()
  986.     {
  987.     int n = -1;
  988.     int *p;
  989.     p = malloc(n);                  // Warning 422
  990.     p = malloc( (unsigned) n );     // Warning 422
  991.     }
  992.       will result in the warnings indicated.  Note that casting
  993.       the expression does not inhibit the warning.
  994.       There is a slight difference in behavior on 32-bit systems
  995.       versus 16-bit systems.  If long is the same size as int
  996.       (as in 32-bit systems) the warning is issued based upon
  997.       the sign bit.  If long is larger than an int (as is true
  998.       on typical 16-bit systems) the warning is issued if the
  999.       value was a converted negative as in the examples above.
  1000.       It is not issued if an unsigned int has the high-order bit
  1001.       set.  This is because it is not unreasonable to malloc
  1002.       more that 32,176 bytes in a 16-bit system.
  1003. 423   Creation of memory leak in assignment to variable 'Symbol'
  1004.       -- An assignment was made to a pointer variable
  1005.       (designated by Symbol), which appeared to already be
  1006.       holding the address of an allocated object, which had not
  1007.       been freed.  The allocation of memory, which is not freed,
  1008.       is considered a memory leak.
  1009. 424   Inappropriate deallocation (Name1) for 'Name2' data.  --
  1010.       This message indicates that a deallocation (free(),
  1011.       delete, or delete[]) as specified by Name1 is
  1012.       inappropriate for the data being freed.   [12, Item 5]
  1013.       The kind of data (specified by Name2) is one or more of:
  1014.       malloc, new, new[], static, auto, member, modified or
  1015.       constant.  These have the meanings as described below:
  1016.  Malloc            data is data obtained from a call
  1017. to malloc, calloc or realloc.
  1018.  new and new[]     data is data derived from calls to new.
  1019.  Static            data is either static data within
  1020. a function or external data.
  1021.  auto              data is non-static data in a function.
  1022.  Member            data is a component of a structure
  1023.    (and hence can't be independently freed).
  1024.  modified          data is the result of applying pointer
  1025.    arithmetic to some other pointer.  E.g.
  1026.  p = malloc(100);
  1027.  free( p+1 );    // warning
  1028.    p+1 is considered modified.
  1029.  constant          data is the result of casting a
  1030.    constant to a pointer.  E.g.
  1031.  int *p = (int *) Ox80002;
  1032.  free(p);    // warning
  1033. 425   'Message' in processing semantic 'String' at token
  1034.       'String'  -- This warning is issued when a syntax error is
  1035.       encountered while processing a semantic option (-sem).
  1036.       The 'Message' depends upon the error.  The first 'String'
  1037.       represents the portion of the semantic being processed.
  1038.       The second 'String' denotes the token being scanned when
  1039.       the error is first noticed.
  1040. 426   Call to function 'Symbol' violates semantic 'String'  --
  1041.       This Warning message is issued when a user semantic (as
  1042.       defined by -sem) is violated.  'String' is the subportion
  1043.       of the semantic that was violated.  For example:
  1044. //lint -sem( f, 1n > 10 && 2n > 10 )
  1045. void f( int, int );
  1046. ...
  1047. f( 2, 20 );
  1048.       results in the message:
  1049.       Call to function 'f(int, int)' violates semantic '(1n>10)'
  1050. 427   // comment terminates in   -- A one-line comment
  1051.       terminates in the back-slash escape sequence.  This means
  1052.       that the next line will be absorbed in the comment (by a
  1053.       standards-conforming compiler -- not all compilers do the
  1054.       absorption, so beware).  It is much safer to end the line
  1055.       with something other than a back-slash.  Simply tacking on
  1056.       a period will do.  If you really intend the next line to
  1057.       be a comment, the line should be started with its own
  1058.       double slash (//).
  1059. 428   negative subscript (Integer) in operator 'String'  -- A
  1060.       negative integer was added to an array or to a pointer to
  1061.       an allocated area (allocated by malloc, operator new,
  1062.       etc.) This message is not given for pointers whose origin
  1063.       is unknown since a negative subscript is, in general,
  1064.       legal.
  1065.       The addition could have occurred as part of a subscript
  1066.       operation or as part of a pointer arithmetic operation.
  1067.       The operator is denoted by String.  The value of the
  1068.       integer is given by Integer.
  1069. 429   Custodial pointer 'Symbol' (Location) has not been freed
  1070.       or returned  -- A pointer of auto storage class was
  1071.       allocated storage, which was neither freed nor returned to
  1072.       the caller.  This represents a "memory leak".  A pointer
  1073.       is considered custodial if it uniquely points to the
  1074.       storage area.  It is not considered custodial if it has
  1075.       been copied.  Thus:
  1076. int *p = new int[20];  // p is a custodial pointer
  1077. int *q = p;            // p is no longer custodial
  1078. p = new int[20];       // p again becomes custodial
  1079. q = p + 0;             // p remains custodial
  1080.       Here p does not lose its custodial property by merely
  1081.       participating in an arithmetic operation.
  1082.       A pointer can lose its custodial property by passing the
  1083.       pointer to a function.  If the parameter of the function
  1084.       is typed pointer to const or if the function is a library
  1085.       function, that assumption is not made.  For example
  1086. p = malloc(10);
  1087. strcpy (p, "hello");
  1088.       Then p still has custody of storage allocated.
  1089.       It is possible to indicate via semantic options that a
  1090.       function will take custody of a pointer.  See custodial(i)
  1091.       in Section 10.2.1 Possible Semantics.
  1092. 430   Character '@', taken to specify variable location, is not
  1093.       standard C/C++  -- Many compilers for embedded systems
  1094.       have a declaration syntax that specifies a location in
  1095.       place of an initial value for a variable.  For example:
  1096. int x @0x2000;
  1097.       specifies that variable x is actually location 0x2000.
  1098.       This message is a reminder that this syntax is
  1099.       non-standard (although quite common).  If you are using
  1100.       this syntax on purpose, suppress this message.
  1101. 432   Suspicious argument to malloc  -- The following pattern
  1102.       was detected:
  1103. malloc( strlen(e+1) )
  1104.       where e is some expression.  This is suspicious because it
  1105.       closely resembles the commonly used pattern:
  1106. malloc( strlen(e)+1 )
  1107.       If you really intended to use the first pattern then an
  1108.       equivalent expression that will not raise this error is:
  1109. malloc( strlen(e)-1 )
  1110. 433   Allocated area not large enough for pointer  -- An
  1111.       allocation was assigned to a pointer whose reach extends
  1112.       beyond the area that was allocated.  This would usually
  1113.       happen only with library allocation routines such as
  1114.       malloc and calloc.  For example:
  1115. int *p = malloc(1);
  1116.       This message is also provided for user-declared allocation
  1117.       functions.  For example, if a user's own allocation
  1118.       function is provided with the following semantic:
  1119. -sem(ouralloc,@P==malloc(1n))
  1120.       We would report the same message.  Please note that it is
  1121.       necessary to designate that the returned area is freshly
  1122.       allocated (ala malloc).
  1123.       This message is always given in conjunction with the more
  1124.       general Informational Message  826.
  1125. 434   White space ignored between back-slash and new-line  --
  1126.       According to the C and C++ standards, any back-slash
  1127.       followed immediately by a new-line results in the deletion
  1128.       of both characters.  For example:
  1129. #define A  
  1130.    34
  1131.       defines A to be 34.  If a blank or tab intervenes between
  1132.       the back-slash and the new-line then according to a strict
  1133.       interpretation of the standard you have defined A to be a
  1134.       back-slash.  But this blank is invisible to the naked eye
  1135.       and hence could lead to confusion.  Worse, some compilers
  1136.       silently ignore the white-space and the program becomes
  1137.       non-portable.
  1138.       You should never deliberately place a blank at the end of
  1139.       a line and any such blanks should be removed.  If you
  1140.       really need to define a macro with a terminal back-slash
  1141.       you can use a comment as in:
  1142. #define A    /* commentary */
  1143. 435   integral constant 'String' has precision Integer, use +fll
  1144.       to enable long long"  -- An integer constant was found
  1145.       that had a precision that was too large for a long but
  1146.       would fit within a long long.  Yet the +fll flag that
  1147.       enables the long long type was not set.
  1148.       Check the sizes that you specified for long (-sl#) and for
  1149.       long long (-sll#) and make sure they are correct.  Turn on
  1150.       +fll if your compiler supports long long. Otherwise use
  1151.       smaller constants.
  1152. 436   Preprocessor directive in invocation of macro 'Symbol' at
  1153.       Location  -- A function like macro was invoked whose
  1154.       arguments extended for multiple lines, which included
  1155.       preprocessor statements.  This is almost certainly an
  1156.       error brought about by a missing right parenthesis.
  1157.       By the rules of Standard C the preprocessing directive is
  1158.       absorbed into the macro argument but then will not
  1159.       subsequently get executed.  For this reason some compilers
  1160.       treat the apparent preprocessor directive as a directive.
  1161.       This is logical but not portable.  It is therefore best to
  1162.       avoid this construct.
  1163. 437   Passing struct 'Symbol' to ellipsis  -- A struct is being
  1164.       passed to a function at a parameter position identified by
  1165.       an ellipsis.  For example:
  1166. void g()
  1167.  {
  1168.  struct A { int a; } x;
  1169.  void f( int, ... );
  1170.  f( 1, x );
  1171.  ...
  1172.  }
  1173.       This is sufficiently unusual that it is worth pointing out
  1174.       on the likelihood that this is unintended.  The situation
  1175.       becomes more severe in the case of a Non-POD struct  [10].
  1176.       In this case the behavior is considered undefined.
  1177. 501   Expected signed type  -- The unary minus operator was
  1178.       applied to an unsigned type.  The resulting value is a
  1179.       positive unsigned quantity and may not be what was
  1180.       intended.
  1181. 502   Expected unsigned type  -- Unary ~ being a bit operator
  1182.       would more logically be applied to unsigned quantities
  1183.       rather than signed quantities.
  1184. 503   Boolean argument to relational  -- Normally a relational
  1185.       would not have a Boolean as argument.  An example of this
  1186.       is a < b < c, which is technically legal but does not
  1187.       produce the same result as the mathematical expression,
  1188.       which it resembles.
  1189. 504   Unusual shift value  -- Either the quantity being shifted
  1190.       or the amount by which a quantity is to be shifted was
  1191.       derived in an unusual way such as with a bit-wise logical
  1192.       operator, a negation, or with an unparenthesized
  1193.       expression.  If the shift value is a compound expression
  1194.       that is not parenthesized, parenthesize it.
  1195. 505   Redundant left argument to comma  -- The left argument to
  1196.       the comma operator had no side effects in its top-most
  1197.       operator and hence is redundant.
  1198. 506   Constant value Boolean  -- A Boolean, i.e., a quantity
  1199.       found in a context that requires a Boolean such as an
  1200.       argument to && or || or an if() or while() clause or ! was
  1201.       found to be a constant and hence will evaluate the same
  1202.       way each time.
  1203. 507   Size incompatibility  -- A cast was made to an integral
  1204.       quantity from a pointer and according to other information
  1205.       given or implied it would not fit.  For example a cast to
  1206.       an unsigned int was specified and information provided by
  1207.       the options indicate that a pointer is are larger than an
  1208.       int.
  1209. 508   extern used with definition  -- A function definition was
  1210.       accompanied with an extern storage class.  extern is
  1211.       normally used with declarations rather than with
  1212.       definitions.  At best the extern is redundant.  At worst
  1213.       you may trip up a compiler.
  1214. 509   extern used with definition  -- A data object was defined
  1215.       with a storage class of extern.  This is technically legal
  1216.       in ANSI and you may want to suppress this message.
  1217.       However, it can easily trip up a compiler and so the
  1218.       practice is not recommended at this time.
  1219. 511   Size incompatibility  -- A cast was made from an integral
  1220.       type to a pointer and the size of the quantity was too
  1221.       large to fit into the pointer.  For example if a long is
  1222.       cast to a pointer and if options indicate that a long is
  1223.       larger than a pointer, this warning would be reported.
  1224. 512   Symbol 'Symbol' previously used as static (Location)  --
  1225.       The Symbol name given is a function name that was declared
  1226.       as static in some other module (the location of that
  1227.       declaration is provided).  The use of a name as static in
  1228.       one module and external in another module is legal but
  1229.       suspect.
  1230. 514   Unusual use of a Boolean  -- An argument to an arithmetic
  1231.       operator (+ - / * %) or a bit-wise logical operator (| &
  1232.       ^) was a Boolean.  This can often happen by accident as
  1233.       in:
  1234.     if( flags & 4 == 0 )
  1235.       where the ==, having higher precedence than &, is done
  1236.       first (to the puzzlement of the programmer).
  1237. 515   Symbol 'Symbol' has arg. count conflict (Integer vs.
  1238.       Integer) with Location  -- An inconsistency was found in
  1239.       the number of actual arguments provided in a function call
  1240.       and either the number of formal parameters in its
  1241.       definition or the number of actual arguments in some other
  1242.       function call.  See the +fva option to selectively
  1243.       suppress this message.
  1244. 516   Symbol 'Symbol' has arg. type conflict (no. Integer --
  1245.       TypeDiff) with Location  -- An inconsistency was found in
  1246.       the type of an actual argument in a function call with
  1247.       either the type of the corresponding formal parameter in
  1248.       the function definition or the type of an actual argument
  1249.       in another call to the same function or with the type
  1250.       specified for the argument in the function's prototype.
  1251.       The call is not made in the presence of a prototype.  See
  1252.       options -ean, -eau, -eas and -eai Section 5.2 Error
  1253.       Inhibition Options for selective suppression of some kinds
  1254.       of type differences. If the conflict involves types char
  1255.       or short then you may want to consider using the +fxc or
  1256.       +fxs option. (Section 5.5 Flag Options) See also Section
  1257.       15.4 Warning 516.
  1258. 517   defined not K&R  -- The defined function (not a K&R
  1259.       construct) was employed and the K&R preprocessor flag
  1260.       (+fkp) was set. Either do not set the flag or do not use
  1261.       defined.
  1262. 518   Expected '('  -- sizeof type is not strict C.
  1263.       sizeof(type) or sizeof expression are both permissible.
  1264. 519   Size incompatibility  -- An attempt was made to cast a
  1265.       pointer to a pointer of unequal size.  This could occur
  1266.       for example in a P model where pointers to functions
  1267.       require 4 bytes whereas pointers to data require only 2.
  1268.       This error message can be circumvented by first casting
  1269.       the pointer to an integral quantity (int or long) before
  1270.       casting to a pointer.
  1271. 520   Expected void type, assignment, increment or decrement.
  1272.       -- The first expression of a for clause should either be
  1273.       an expression yielding the void type or be one of the
  1274.       privileged operators: assignment, increment, or decrement.
  1275.       See also message  522.
  1276. 521   Expected void type, assignment, increment or decrement.
  1277.       -- The third expression of a for clause should either be
  1278.       an expression yielding the void type or be one of the
  1279.       privileged operators: assignment, increment, or decrement.
  1280.       See also message  522.
  1281. 522   Expected void type, assignment, increment or decrement.
  1282.       -- If a statement consists only of an expression, it
  1283.       should either be an expression yielding the void type or
  1284.       be one of the privileged operators: assignment, increment,
  1285.       or decrement.  Note that the statement *p++; draws this
  1286.       message but p++; does not.  This message is frequently
  1287.       given in cases where a function is called through a
  1288.       pointer and the return value is not void.  In this case we
  1289.       recommend a cast to void.  If your compiler does not
  1290.       support the void type then you should use the -fvo option.
  1291. 524   Loss of precision (Context) (Type to Type)  -- There is a
  1292.       possible loss of a fraction in converting from a float to
  1293.       an integral quantity.  Use of a cast will suppress this
  1294.       message.
  1295. 525   Negative indentation from Location  -- The current line
  1296.       was found to be negatively indented (i.e., not indented as
  1297.       much) from the indicated line.  The latter corresponds to
  1298.       a clause introducing a control structure and statements
  1299.       and other control clauses and braces within its scope are
  1300.       expected to have no less indentation.  If tabs within your
  1301.       program are other than 8 blanks you should use the -t
  1302.       option (See Section 11.).
  1303. 526   Symbol 'Symbol' (Location) not defined  -- The named
  1304.       external was referenced but not defined and did not appear
  1305.       declared in any library header file nor did it appear in a
  1306.       Library Module.  This message is suppressed for unit
  1307.       checkout (-u option).  Please note that a declaration,
  1308.       even one bearing prototype information is not a
  1309.       definition.  See the glossary at the beginning of this
  1310.       chapter.  If the Symbol is a library symbol, make sure
  1311.       that it is declared in a header file that you're
  1312.       including.  Also make sure that the header file is
  1313.       regarded by PC-lint/FlexeLint as a Library Header file.
  1314.       Alternatively, the symbol may be declared in a Library
  1315.       Module.  See Section 6.1 Library Header Files and Section
  1316.       6.2 Library Modules for a further discussion.
  1317. 527   Unreachable  -- A portion of the program cannot be reached.
  1318. 528   Symbol 'Symbol' (Location) not referenced  -- The named
  1319.       static variable or static function was not referenced in
  1320.       the module after having been declared.
  1321. 529   Symbol 'Symbol' (Location) not subsequently referenced  --
  1322.       The named variable was declared but not referenced in a
  1323.       function.
  1324. 530   Symbol 'Symbol' (Location) not initialized  -- An auto
  1325.       variable was used before it was initialized.
  1326. 531   Field size too large for 'Symbol'  -- The size given for a
  1327.       bit field of a structure exceeds the size of an int.
  1328. 532   Return mode of function 'Symbol' inconsistent with
  1329.       Location  -- A declaration (or a definition) of a function
  1330.       implies a different return mode than a previous statement.
  1331.       (The return mode of a function has to do with whether the
  1332.       function does, or does not, return a value).  A return
  1333.       mode is determined from a declaration by seeing if the
  1334.       function returns void or, optionally, by observing whether
  1335.       an explicit type is given.  See the fdr flag for a further
  1336.       explanation of this.  See also the fvr and fvo flags in
  1337.       Section 5.5 Flag Options.
  1338. 533   function 'Symbol' should (not) return a value (see
  1339.       Location)  -- A return statement within a function (or
  1340.       lack of a return at the end of the function) implies a
  1341.       different return mode than a previous statement at
  1342.       Location (The return mode of a function has to do with
  1343.       whether the function does, or does not, return a value.)
  1344.       See also the fvr, fvo and fdr flags in Section 5.5 Flag
  1345.       Options.
  1346. 534   Ignoring return value of function 'Symbol' (compare with
  1347.       Location)  -- A function that returns a value is called
  1348.       just for side effects as, for example, in a statement by
  1349.       itself or the left-hand side of a comma operator.  Try:
  1350.       (void) function(); to call a function and ignore its
  1351.       return value.  See also the fvr, fvo and fdr flags in
  1352.       Section 5.5 Flag Options.
  1353. 537   Repeated include file 'FileName'  -- The file whose
  1354.       inclusion within a module is being requested has already
  1355.       been included in this compilation.  The file is processed
  1356.       normally even if the message is given.  If it is your
  1357.       standard practice to repeat included files then simply
  1358.       suppress this message.
  1359. 538   Excessive size  -- The size of an array equals or exceeds
  1360.       64K bytes.
  1361. 539   Did not expect positive indentation from Location  -- The
  1362.       current line was found to be positively indented from a
  1363.       clause that did not control the line in question.  For
  1364.       example:
  1365.      if( n > 0 )
  1366.  x = 3;
  1367.  y = 4;
  1368.       will result in this warning being issued for y = 4;.  The
  1369.       Location cited will be that of the if clause.  See Section 11.
  1370. 540   Excessive size  -- A string initializer required more
  1371.       space than what was allocated.
  1372. 541   Excessive size  -- The size of a character constant
  1373.       specified with xddd or xhhh equaled or exceeded 2**b
  1374.       where b is the number of bits in a byte (established by
  1375.       the -sb option).  The default is -sb8.
  1376. 542   Excessive size for bit field  -- An attempt was made to
  1377.       assign a value into a bit field that appears to be too
  1378.       small.  The value to be assigned is either another bit
  1379.       field larger than the target, or a numeric value that is
  1380.       simply too large.  You may cast the value to the generic
  1381.       unsigned type to suppress the error.
  1382.       You may get this message unexpectedly if the base of the
  1383.       bit field is an int.  For example:
  1384.      struct { int b : 1 } s;
  1385.      s.b = 1;        /* Warning - - requires 0 or -1 */
  1386.       The solution in this case is to use 'unsigned' rather than
  1387.       'int' in the declaration of b.
  1388. 544   endif or else not followed by EOL  -- The preprocessor
  1389.       directive #endif should be followed by an end-of-line.
  1390.       Some compilers specifically allow commentary to follow the
  1391.       #endif.  If you are following that convention simply turn
  1392.       this error message off.
  1393. 545   Suspicious use of &  -- An attempt was made to take the
  1394.       address of an array name.  At one time such an expression
  1395.       was officially illegal (K&R C  [1]), was not consistently
  1396.       implemented, and was, therefore, suspect.  However, the
  1397.       expression is legal in ANSI C and designates a pointer to
  1398.       an array.  For example, given
  1399.     int a[10];
  1400.             int (*p) [10];
  1401.       Then a and &a, as pointers, both represent the same bit
  1402.       pattern, but whereas a is a pointer to int, &a is a
  1403.       pointer to array 10 of int.  Of the two only &a may be
  1404.       assigned to p without complaint.  If you are using the &
  1405.       operator in this way, we recommend that you disable this
  1406.       message.
  1407. 546   Suspicious use of &  -- An attempt was made to take the
  1408.       address of a function name. Since names of functions by
  1409.       themselves are promoted to address, the use of the & is
  1410.       redundant and could be erroneous.
  1411. 547   Redefinition of symbol 'Symbol' conflicts with Location
  1412.       -- The indicated symbol had previously been defined (via
  1413.       #define) to some other value.
  1414. 548   else expected  -- A construct of the form if(e); was
  1415.       found, which was not followed by an else. This is almost
  1416.       certainly an unwanted semi-colon as it inhibits the if
  1417.       from having any effect.
  1418. 549   Suspicious cast  -- A cast was made from a pointer to some
  1419.       enumerated type or from an enumerated type to a pointer.
  1420.       This is probably an error.  Check your code and if this is
  1421.       not an error, then cast the item to an intermediate form
  1422.       (such as an int or a long) before making the final cast.
  1423. 550   Symbol 'Symbol' (Location) not accessed  -- A variable
  1424.       (local to some function) was not accessed.  This means
  1425.       that the value of a variable was never used.  Perhaps the
  1426.       variable was assigned a value but was never used.  Note
  1427.       that a variable's value is not considered accessed by
  1428.       autoincrementing or autodecrementing unless the
  1429.       autoincrement/decrement appears within a larger
  1430.       expression, which uses the resulting value.  The same
  1431.       applies to a construct of the form: var += expression.  If
  1432.       an address of a variable is taken, its value is assumed to
  1433.       be accessed. An array, struct or union is considered
  1434.       accessed if any portion thereof is accessed.
  1435. 551   Symbol 'Symbol' (Location) not accessed  -- A variable
  1436.       (declared static at the module level) was not accessed
  1437.       though the variable was referenced.  See the explanation
  1438.       under message  550 (above) for a description of "access".
  1439. 552   Symbol 'Symbol' (Location) not accessed  -- An external
  1440.       variable was not accessed though the variable was
  1441.       referenced.  See the explanation under message  550 above
  1442.       for a description of "access".
  1443. 553   Undefined preprocessor variable 'Name', assumed 0  -- The
  1444.       indicated variable had not previously been defined within
  1445.       a #define statement and yet it is being used in a
  1446.       preprocessor condition of the form #if or #elif.
  1447.       Conventionally all variables in preprocessor expressions
  1448.       should be pre-defined.  The value of the variable is
  1449.       assumed to be 0.
  1450. 555   #elif not K&R  -- The #elif directive was used and the K&R
  1451.       preprocessor flag (+fkp) was set.  Either do not set the
  1452.       flag or do not use #elif.
  1453. 556   indented #  -- A preprocessor directive appeared indented
  1454.       within a line and the K&R preprocessor flag (+fkp) was
  1455.       set.  Either do not set the flag or do not indent the #.
  1456. 557   unrecognized format  -- The format string supplied to
  1457.       printf, fprintf, sprintf, scanf, fscanf, or sscanf was not
  1458.       recognized.  It is neither a standard format nor is it a
  1459.       user-defined format (see printf_code and scanf_code,
  1460.       Section 5.7 Other Options).
  1461. 558   number of arguments inconsistent with format  -- The
  1462.       number of arguments supplied to printf, sprintf, fprintf,
  1463.       scanf, fscanf or sscanf was inconsistent with the number
  1464.       expected as a result of analyzing the format string.
  1465. 559   size of argument number Integer inconsistent with format
  1466.       -- The given argument (to printf, sprintf, or fprintf) was
  1467.       inconsistent with that which was anticipated as the result
  1468.       of analyzing the format string.  Argument counts begin at
  1469.       1 and include file, string and format specifications.  For
  1470.       example,
  1471. sprintf( buffer, "%f", 371 )
  1472.       will show an error in argument number 3 because constant
  1473.       371 is not floating point.
  1474. 560   argument no. Integer should be a pointer  -- The given
  1475.       argument (to one of the scanf or printf family of
  1476.       functions) should be a pointer.  For the scanf family, all
  1477.       arguments corresponding to a format specification should
  1478.       be pointers to areas that are to be modified (receive the
  1479.       results of scanning).  For the printf family, arguments
  1480.       corresponding to %s or %n also need to be pointers.
  1481.       Argument counts begin at 1 and include file, string and
  1482.       format specifications.  For example
  1483. scanf( "%f", 3.5 )
  1484.       will generate the message that argument no. 2 should be a
  1485.       pointer.
  1486. 561   (arg. no. Integer) indirect object inconsistent with
  1487.       format  -- The given argument (to scanf, sscanf, or
  1488.       fscanf) was a pointer to an object that was inconsistent
  1489.       with that which was anticipated as the result of analyzing
  1490.       the format string.  Argument counts begin at 1 and include
  1491.       file, string and format specifications.  For example if n
  1492.       is declared as int then:
  1493. scanf( "%c", &n )
  1494.       will elicit this message for argument number 2.
  1495. 562   Ellipsis (...) assumed  -- Within a function prototype a
  1496.       comma was immediately followed by a right parenthesis.
  1497.       This is taken by some compilers to be equivalent to an
  1498.       ellipsis (three dots) and this is what is assumed by
  1499.       PC-lint/FlexeLint.  If your compiler does not accept the
  1500.       ellipsis but makes this assumption, then you should
  1501.       suppress this message.
  1502. 563   Label 'Symbol' (Location) not referenced  -- The Symbol at
  1503.       the cited Location appeared as a label but there was no
  1504.       statement that referenced this label.
  1505. 564   variable 'Symbol' depends on order of evaluation  -- The
  1506.       named variable was both modified and accessed in the same
  1507.       expression in such a way that the result depends on
  1508.       whether the order of evaluation is left-to-right or
  1509.       right-to-left.  One such example is:  n + n++ since there
  1510.       is no guarantee that the first access to n occurs before
  1511.       the increment of n.  Other, more typical cases, are given
  1512.       in Section 11.1 Order of Evaluation and Section 11.5
  1513.       volatile Checking.  Volatile variables are also checked
  1514.       for repeated use in an expression.  See
  1515. 565   tag 'Symbol' not previously seen, assumed file-level scope
  1516.       -- The named tag appeared in a prototype or in an inner
  1517.       block and was not previously seen in an outer (file-level)
  1518.       scope.  The ANSI standard is dubious as to how this tag
  1519.       could link up with any other tag.  For most compilers this
  1520.       is not an error and you can safely suppress the message.
  1521.       On the other hand, to be strictly in accord with ANSI C
  1522.       you may place a small stub of a declaration earlier in the
  1523.       program.  For example:
  1524. struct name;
  1525.       is sufficient to reserve a place for name in the symbol
  1526.       table at the appropriate level.
  1527. 566   Inconsistent or redundant format char 'Char'  -- This
  1528.       message is given for format specifiers within formats for
  1529.       the printf/scanf family of functions.  The indicated
  1530.       character Char found in a format specifier was
  1531.       inconsistent or redundant with an earlier character found
  1532.       in the same format specifier.  For example a format
  1533.       containing "%ls" will yield this error with the character
  1534.       's' indicated.  This is because the length modifier is
  1535.       designed to be used with integral or float conversions and
  1536.       has no meaning with the string conversion.  Such
  1537.       characters are normally ignored by compilers.
  1538. 567   Expected a numeric field before char 'Char'  -- This
  1539.       message is given for format specifiers within formats for
  1540.       the printf/scanf family of functions.  A numeric field or
  1541.       asterisk was expected at a particular point in the
  1542.       scanning of the format.  For example: %-d requests left
  1543.       justification of a decimal integer within a format field.
  1544.       But since no field width is given, the request is meaning
  1545.       less.
  1546. 568   nonnegative quantity is never less than zero.  --
  1547.       Comparisons of the form:
  1548.   u >= 0 0 <= u
  1549.             u <  0      0 >  u
  1550.       are suspicious if u is an unsigned quantity or a quantity
  1551.       judged to be never less then 0.  See also message  775.
  1552. 569   Loss of information (Context) (Integer bits to Integer
  1553.       bits)  -- An assignment (or implied assignment, see
  1554.       Context) was made from a constant to an integral variable
  1555.       that is not large enough to hold the constant.  Examples
  1556.       include placing a hex constant whose bit requirement is
  1557.       such as to require an unsigned int into a variable typed
  1558.       as int.  The number of bits given does not count the sign
  1559.       bit.
  1560. 570   Loss of sign (Context) (Type to Type)  -- An assignment
  1561.       (or implied assignment, see Context) is being made from a
  1562.       negative constant into an unsigned quantity.  Casting the
  1563.       constant to unsigned will remove the diagnostic but is
  1564.       this what you want.  If you are assigning all ones to an
  1565.       unsigned, remember that ~0 represents all ones and is more
  1566.       portable than -1.
  1567. 571   Suspicious Cast  -- Usually this warning is issued for
  1568.       casts of the form:
  1569. (unsigned) ch
  1570.       where ch is declared as char and char is signed.  Although
  1571.       the cast may appear to prevent sign extension of ch, it
  1572.       does not.  Following the normal promotion rules of C, ch
  1573.       is first converted to int, which extends the sign and only
  1574.       then is the quantity cast to unsigned.  To suppress sign
  1575.       extension you may use:
  1576. (unsigned char) ch
  1577.       Otherwise, if sign extension is what you want and you just
  1578.       want to suppress the warning in this instance you may use:
  1579. (unsigned) (int) ch
  1580.       Although these examples have been given in terms of
  1581.       casting a char they will also be given whenever this cast
  1582.       is made upon a signed quantity whose size is less than the
  1583.       casted type.  Examples include signed bit fields (a
  1584.       possibility in the new standard), expressions involving
  1585.       char, and expressions involving short when this type is
  1586.       smaller than int or a direct cast of an int to an unsigned
  1587.       long (if int's is smaller than long).  This message is not
  1588.       issued for constants or for expressions involving bit
  1589.       operations.
  1590. 572   Excessive shift value (precision Integer shifted right by
  1591.       Integer)  -- A quantity is being shifted to the right
  1592.       whose precision is equal to or smaller than the shifted
  1593.       value.  For example,
  1594. ch >> 10
  1595.       will elicit this message if ch is typed char and where
  1596.       char is less than 10 bits wide (the usual case).  To
  1597.       suppress the message in this case you may cast the shifted
  1598.       quantity to a type whose length is at least the length of
  1599.       the shift value.
  1600.       The precision of a constant (including enumeration
  1601.       constants) is determined from the number of bits required
  1602.       in its binary representation.  The precision does not
  1603.       change with a cast so that still yields (unsigned) 1 >> 3
  1604.       the message.  But normally the only way an expression such
  1605.       as 1>>3 can legitimately occur is via a macro.  In this
  1606.       case use                       -emacro.
  1607. 573   Signed-unsigned mix with divide  -- one of the operands to
  1608.       / or % was signed and the other unsigned; moreover the
  1609.       signed quantity could be negative.  For example:
  1610. u / n
  1611.       where u is unsigned and n is signed will elicit this
  1612.       message whereas:
  1613. u / 4
  1614.       will not, even though 4 is nominally an int.  It is not a
  1615.       good idea to mix unsigned quantities with signed
  1616.       quantities in any case (a  737 will also be issued) but,
  1617.       with division, a negative value can create havoc. For
  1618.       example, the innocent looking:
  1619. n = n / u
  1620.       will, if n is -2 and u is 2, not assign -1 to n but will
  1621.       assign some very large value.
  1622.       To resolve this problem, either cast the integer to
  1623.       unsigned if you know it can never be less than zero or
  1624.       cast the unsigned to an integer if you know it can never
  1625.       exceed the maximum integer.
  1626. 574   Signed-unsigned mix with relational  -- The four
  1627.       relational operators are:
  1628. >   >=   <   <=
  1629.       One of the operands to a relational operator was signed
  1630.       and the other unsigned; also, the signed quantity could be
  1631.       negative.  For example:
  1632. if( u > n ) ...
  1633.       where u is unsigned and n is signed will elicit this
  1634.       message whereas:
  1635. if( u > 12 ) ...
  1636.       will not (even though 12 is officially an int it is
  1637.       obvious that it is not negative).  It is not a good idea
  1638.       to mix unsigned quantities with signed quantities in any
  1639.       case (a  737 will also be issued) but, with the four
  1640.       relationals, a negative value can produce obscure results.
  1641.       For example, if the conditional:
  1642. if( n < 0 ) ...
  1643.       is true then the similar appearing:
  1644. u = 0;
  1645. if( n < u ) ...
  1646.       is false because the promotion to unsigned makes n very
  1647.       large.
  1648.       To resolve this problem, either cast the integer to
  1649.       unsigned if you know it can never be less than zero or
  1650.       cast the unsigned to an int if you know it can never
  1651.       exceed the maximum int.
  1652. 575   enumeration constant exceeds range for integers  -- For
  1653.       many compilers the value of an enumeration constant is
  1654.       limited to those values that can fit within a signed or
  1655.       unsigned int.
  1656. 577   Mixed memory model (option 'String')  -- The indicated
  1657.       option requested a change to the memory model after part
  1658.       or all of another module was processed.  The memory model
  1659.       option should be specified before any module is processed.
  1660.       The most common cause of this error is specifying the
  1661.       memory model after having specified the standard library.
  1662.       This would be a natural error to make if the standard
  1663.       library file were specified via a LINT environment
  1664.       variable.
  1665. 578   Declaration of symbol 'Symbol' hides symbol 'Symbol'
  1666.       (Location)  -- A local symbol has the identical name as a
  1667.       global symbol ( or possibly another local symbol).  This
  1668.       could be dangerous.  Was this deliberate?  It is usually
  1669.       best to rename the local symbol.
  1670. 579   parameter preceding ellipsis has invalid type  -- When an
  1671.       ellipsis is used, the type preceding the ellipsis should
  1672.       not be a type that would undergo a default promotion such
  1673.       as char, short or float.  The reason is that many
  1674.       compilers' variable argument schemes (using stdarg.h) will
  1675.       break down.
  1676. 580   Redeclaration of function 'Symbol' (hiding Location)
  1677.       causes loss of prototype  -- A declaration of a function
  1678.       within a block hides a declaration in an outer scope in
  1679.       such a way that the inner declaration has no prototype and
  1680.       the outer declaration does.  A common misconception is
  1681.       that the resulting declaration is a composite of both
  1682.       declarations but this is only the case when the
  1683.       declarations are in the same scope not within nested
  1684.       scopes.  If you don't care about prototypes you may
  1685.       suppress this message.  You will still receive other
  1686.       type-difference warnings.
  1687. 581   Option 'String' is obsolete and should no longer be used
  1688.       -- This message is issued whenever we encounter an option
  1689.       that appears to do more harm than good.  'String' is the
  1690.       option in question.
  1691. 582   esym (or emacro) name 'String' should not contain '('  --
  1692.       The name provided to esym should not contain a (.  For
  1693.       example, to suppress message  534 when calling f(int) use
  1694.       the option -esym(534,f) even if f is overloaded.
  1695. 601   Expected a type for symbol Symbol, int assumed  -- A
  1696.       declaration did not have an explicit type.  int was
  1697.       assumed.  Was this a mistake?  This could easily happen if
  1698.       an intended comma was replaced by a semicolon.  For
  1699.       example, if instead of typing:
  1700.     double radius,
  1701.                    diameter;
  1702.       the programmer had typed:
  1703.     double radius;
  1704.                    diameter;
  1705.       this message would be raised.
  1706. 602   Comment within comment  -- The sequence /* was found
  1707.       within a comment.  Was this deliberate? Or was a comment
  1708.       end inadvertently omitted?  If you want PC-lint/FlexeLint
  1709.       to recognize nested comments you should set the Nested
  1710.       Comment flag using the +fnc option.  Then this warning
  1711.       will not be issued.  If it is your practice to use the
  1712.       sequence:
  1713. /*
  1714. /*            */
  1715.       then use -e602.
  1716. 603   Symbol 'Symbol' (Location) not initialized  -- The address
  1717.       of the named symbol is being passed to a function where
  1718.       the corresponding parameter is declared as pointer to
  1719.       const.  This implies that the function will not modify the
  1720.       object.  If this is the case then the original object
  1721.       should have been initialized sometime earlier.
  1722. 604   Returning address of auto variable 'Symbol'  -- The
  1723.       address of the named symbol is being passed back by a
  1724.       function.  Since the object is an auto and since the
  1725.       duration of an auto is not guaranteed past the return,
  1726.       this is most likely an error.  You may want to copy the
  1727.       value into a global variable and pass back the address of
  1728.       the global or you might consider having the caller pass an
  1729.       address of one of its own variables to the callee.
  1730. 605   Increase in pointer capability (Context)  -- This warning
  1731.       is typically caused by assigning a (pointer to const) to
  1732.       an ordinary pointer.  For example:
  1733. int *p;
  1734. const int *q;
  1735. p = q;      /* 605 */
  1736.       The message will be inhibited if a cast is used as in:
  1737. p = (int *) q;
  1738.       An increase in capability is indicated because the const
  1739.       pointed to by q can now be modified through p.  This
  1740.       message can be given for the volatile qualifier as well as
  1741.       the const qualifier and may be given for arbitrary pointer
  1742.       depths (pointers to pointers, pointers to arrays, etc.).
  1743.       If the number of pointer levels exceeds one, things get
  1744.       murky in a hurry.  For example:
  1745. const char ** ppc;
  1746. char ** pp;
  1747. pp = ppc;        /* 605 - clearly not safe */
  1748. ppc = pp;        /* 605 - looks safe but it's not */
  1749.       It was not realized by the C community until very recently
  1750.       that assigning pp to ppc was dangerous.  The problem is
  1751.       that after the above assignment, a pointer to a const char
  1752.       can be assigned indirectly through ppc and accessed
  1753.       through pp, which can then modify the const char.
  1754.       The message speaks of an "increase in capability" in
  1755.       assigning to ppc, which seems counter intuitive because
  1756.       the indirect pointer has less capability.  However,
  1757.       assigning the pointer does not destroy the old one and the
  1758.       combination of the two pointers represents a net increase
  1759.       in capability.
  1760.       The message may also be given for function pointer
  1761.       assignments when the prototype of one function contains a
  1762.       pointer of higher capability than a corresponding pointer
  1763.       in another prototype.  There is a curious inversion here
  1764.       whereby a prototype of lower capability translates into a
  1765.       function of greater trust and hence greater capability (a
  1766.       Trojan Horse).  For example, let
  1767. void warrior( char * );
  1768.       be a function that destroys its argument.  Consider the
  1769.       function:
  1770. void Troy( void (*horse)(const char *) );
  1771.       Troy() will call horse() with an argument that it
  1772.       considers precious believing the horse() will do no harm.
  1773.       Before compilers knew better and believing that adding in
  1774.       a const to the destination never hurt anything, earlier
  1775.       compilers allowed the Greeks to pass warrior() to Troy and
  1776.       the rest, as they say, is history.
  1777. 606   Non-ANSI escape sequence: 'String'  -- An escape sequence
  1778.       occurred, within a character or string literal, that was
  1779.       not on the approved list, which is:
  1780.     '  "  ?  \  a  b  f  n  r  t  v
  1781.             octal-digits    xhex-digits
  1782. 607   Parameter 'Symbol' of macro found within string  -- The
  1783.       indicated name appeared within a string or character
  1784.       literal within a macro and happens to be the same as the
  1785.       name of a formal parameter of the macro as in:
  1786.      #define mac(n) printf( "n = %d,", n );
  1787.       Is this a coincidence?  The ANSI standard indicates that
  1788.       the name will not be replaced but since many C compilers
  1789.       do replace such names the construction is suspect.
  1790.       Examine the macro definition and if you do not want
  1791.       substitution, change the name of the parameter. If you do
  1792.       want substitution, set the +fps flag (Parameter within
  1793.       String) and suppress the message with -e607.
  1794. 608   Assigning to an array parameter  -- An assignment is being
  1795.       made to a parameter that is typed array.  For the purpose
  1796.       of the assignment, the parameter is regarded as a pointer.
  1797.       Normally such parameters are typed as pointers rather than
  1798.       arrays.  However if this is your coding style you should
  1799.       suppress this message.
  1800. 609   Suspicious pointer conversion  -- An assignment is being
  1801.       made between two pointers, which differ in size (one is
  1802.       far and the other is near) but are otherwise compatible.
  1803. 610   Suspicious pointer combination  -- Pointers of different
  1804.       size (one is far and the other is near) are being
  1805.       compared, subtracted, or paired (in a conditional
  1806.       expression).  This is suspicious because normally pointers
  1807.       entering into such operations are the same size.
  1808. 611   Suspicious cast  -- Either a pointer to a function is
  1809.       being cast to a pointer to an object or vice versa.  This
  1810.       is regarded as questionable by the ANSI standard.  If this
  1811.       is not a user error, suppress this warning.
  1812. 612   Expected a declarator  -- A declaration contained just a
  1813.       storage class and a type.  This is almost certainly an
  1814.       error since the only time a type without a declarator
  1815.       makes sense is in the case of a struct, union or enum but
  1816.       in that case you wouldn't use a storage class.
  1817. 613   Possible use of null pointer 'Symbol' in [left/right]
  1818.       argument to operator 'String' Reference  -- From
  1819.       information gleaned from earlier statements, it is
  1820.       possible that a null pointer (a pointer whose value is 0)
  1821.       can be used in a context where null pointers are
  1822.       inappropriate.  Such contexts include:  Unary *, pointer
  1823.       increment (++) or decrement(--), addition of pointer to
  1824.       numeric, and subtraction of two pointers.  In the case of
  1825.       binary operators, one of the words 'left' or 'right' is
  1826.       used to designate which operand is null.  Symbol
  1827.       identifies the pointer variable that may be NULL.  See
  1828.       also messages  413 and  794.
  1829. 614   auto aggregate initializer not constant  -- An initializer
  1830.       for an auto aggregate normally consists of a collection of
  1831.       constant-valued expressions.  Some compilers may, however,
  1832.       allow variables in this context in which case you may
  1833.       suppress this message.
  1834. 615   auto aggregate initializer has side effects  -- This
  1835.       warning is similar to  614.  Auto aggregates (arrays,
  1836.       structures and union) are normally initialized by a
  1837.       collection of constant-valued expressions without
  1838.       side-effects.  A compiler could support side-effects in
  1839.       which case you might want to suppress this message.
  1840. 616   control flows into case/default  -- It is possible for
  1841.       flow of control to fall into a case statement or a default
  1842.       statement from above.  Was this deliberate or did the
  1843.       programmer forget to insert a break statement?  If this
  1844.       was deliberate then place a comment immediately before the
  1845.       statement that was flagged as in:
  1846. case 'a':  a = 0;
  1847.    /* fall through */
  1848. case 'b':  a++;
  1849.       Note that the message will not be given for a case that
  1850.       merely follows another case without an intervening
  1851.       statement.  Also, there must actually be a possibility for
  1852.       flow to occur from above.
  1853. 617   String is both a module and an include file  -- The named
  1854.       file is being used as both an include file and as a
  1855.       module.  Was this a mistake?  Unlike Error  306 (repeated
  1856.       module) this is just a warning and processing of the file
  1857.       is attempted.
  1858. 618   Storage class specified after a type  -- A storage class
  1859.       specifier (static, extern, typedef, register or auto) was
  1860.       found after a type was specified.  This is legal but
  1861.       deprecated.  Either place the storage class specifier
  1862.       before the type or suppress this message.
  1863. 619   Loss of precision (Context) (Pointer to Pointer)  -- A far
  1864.       pointer is being assigned to a near pointer either in an
  1865.       assignment statement or an implied assignment such as an
  1866.       initializer, a return statement, or passing an argument in
  1867.       the presence of a prototype (Context indicates which).
  1868.       Such assignments are a frequent source of error when the
  1869.       actual segment is not equal to the default data segment.
  1870.       If you are sure that the segment of the far pointer equals
  1871.       the default data segment you should use a cast to suppress
  1872.       this message.
  1873. 620   Suspicious constant (L or one?)  -- A constant ended in a
  1874.       lower-case letter 'l'.  Was this intended to be a one?
  1875.       The two characters look very similar.  To avoid
  1876.       misinterpretations, use the upper-case letter 'L'.
  1877. 621   Identifier clash (Symbol 'Name' with Symbol 'Name' at
  1878.       String)  -- The two symbols appeared in the same name
  1879.       space but are identical to within the first count
  1880.       characters set by option -idlen(count,option).  See -idlen
  1881.       in Section 5.7 Other Options.
  1882. 622   Size of argument no. Integer inconsistent with format  --
  1883.       The argument to scanf, fscanf or sscanf, where position is
  1884.       given by Integer, was a pointer whose size did not match
  1885.       the format.  For example,
  1886. int far *p;
  1887. scanf( "%d", p );
  1888.       will draw this warning (in the default memory model).
  1889. 623   redefining the storage class of symbol 'Symbol' conflicts
  1890.       with Location  -- An inter-module symbol was a typedef
  1891.       symbol in one module and an ordinary symbol in another
  1892.       module.  This is legal but potentially confusing.  Is this
  1893.       what the programmer intended?
  1894. 624   typedef 'Symbol' redeclared (TypeDiff) (Location)  -- A
  1895.       symbol was declared in a typedef differently in two
  1896.       different modules.  This is technically legal but is not a
  1897.       wise programming practice.
  1898. 625   auto symbol 'Symbol' has unusual type modifier  -- Some
  1899.       type modifiers such as far, near, fortran are
  1900.       inappropriate for auto variables.
  1901. 626   argument no. Integer inconsistent with format  -- The
  1902.       argument to a printf (or fprintf or sprintf) was
  1903.       inconsistent with the format.  Although the size of the
  1904.       quantity was appropriate the type was not.  You might
  1905.       consider casting the quantity to the correct type.  You
  1906.       could also suppress this message, as more flagrant
  1907.       violations are picked up with warning  559.