7740 1968 P 8 18 F B (Thinkage) S 100 J ( Ltd.) S E
6100 2448 P B (LINT Reference Manual) S E
2880 8448 P 0 12 F 8 9 F (Last) S 50 J ( Revision: November 11, 1995) S 0 12 F
PE
PE
7040 2448 P 8 18 F B (Table) S 100 J ( of Contents) S E
2880 4468 P 0 12 F 8 12 F B (1.) S 67 J ( Introduction) S 0 LL 5398 J ( ) S LE (1) S E
2880 5368 P B (2.) S 67 J ( LINT Directives) S 0 LL 5054 J ( ) S LE (2) S E
2880 6268 P B (3.) S 67 J ( LINT Output) S 0 LL 5411 J ( ) S LE (3) S E
3168 6888 P 0 12 F 8 9 F B (Message) S 50 J ( Classes) S 0 LL 5322 J ( ) S LE (3) S E
3168 7268 P B (Output) S 50 J ( Grouping) S 0 LL 5362 J ( ) S LE (4) S E
3168 7648 P B (Type) S 50 J ( Information) S 0 LL 5352 J ( ) S LE (6) S E
2880 8308 P 0 12 F 8 12 F B (4.) S 67 J ( LINT Conventions) S 0 LL 4745 J ( ) S LE (7) S E
2880 9208 P B (5.) S 67 J ( Unused Definitions and Declarations) S 0 LL 2612 J ( ) S LE (8) S E
3168 9828 P 0 12 F 8 9 F B (Marking) S 50 J ( Symbols As Used) S 0 LL 4552 J ( ) S LE (8) S E
2880 10488 P 0 12 F 8 12 F B (6.) S 67 J ( Undefined or Undeclared Data Objects) S 0 LL 2413 J ( ) S LE (9) S E
2880 11388 P B (7.) S 67 J ( Unreachable Code) S 0 LL 4561 J ( ) S LE (10) S E
3168 12008 P 0 12 F 8 9 F B (Marking) S 50 J ( Unreachable Code) S 0 LL 4392 J ( ) S LE (10) S E
2880 12668 P 0 12 F 8 12 F B (8.) S 67 J ( Function Return Values) S 0 LL 3972 J ( ) S LE (11) S E
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (Table) S 50 J ( of Contents) S 5709 J ( i) S 0 12 F
PE
2448 1968 P 8 9 F B (Ignoring) S 50 J ( Return Values) S 0 LL 4732 J ( ) S LE (12) S E
2160 2628 P 0 12 F 8 12 F B (9.) S 67 J ( Type Checking) S 0 LL 4960 J ( ) S LE (13) S E
2160 3528 P B (10.) S 67 J ( Function Declarations) S 0 LL 4013 J ( ) S LE (15) S E
2448 4148 P 0 12 F 8 9 F B (The) S 50 J ( #pragma varargs Directive) S 0 LL 4082 J ( ) S LE (15) S E
2448 4528 P B (The) S 50 J ( #pragma argsused Directive) S 0 LL 3932 J ( ) S LE (17) S E
2160 5188 P 0 12 F 8 12 F B (11.) S 67 J ( Alternate Forms) S 0 LL 4695 J ( ) S LE (18) S E
2160 6088 P B (12.) S 67 J ( Miscellaneous Notes) S 0 LL 4161 J ( ) S LE (20) S E
2160 6988 P B (13.) S 67 J ( Extra Compiler Warnings) S 0 LL 3667 J ( ) S LE (21) S E
2448 7608 P 0 12 F 8 9 F B (Alignment) S 50 J ( Problems) S 0 LL 4962 J ( ) S LE (21) S E
2160 8268 P 0 12 F 8 12 F B (14.) S 67 J ( The LINT Command Line) S 0 LL 3705 J ( ) S LE (23) S E
2448 8888 P 0 12 F 8 9 F B (Abbreviating) S 50 J ( Options) S 0 LL 4882 J ( ) S LE (26) S E
2448 9268 P B (Other) S 50 J ( Ways to Use LINT) S 0 LL 4662 J ( ) S LE (27) S E
2448 9648 P B (Summary) S 50 J ( Files) S 0 LL 5432 J ( ) S LE (27) S E
2448 10028 P B (LINT) S 50 J ( Libraries) S 0 LL 5502 J ( ) S LE (28) S E
2448 10408 P B (Review) S 50 J ( of Inputs and Outputs) S 0 LL 4172 J ( ) S LE (28) S E
2448 10788 P B (Multiple) S 50 J ( Definitions) S 0 LL 5052 J ( ) S LE (29) S E
2448 11168 P B (Configuration) S 50 J ( Files) S 0 LL 5072 J ( ) S LE (29) S E
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (ii) S 5653 J ( Table) S 50 J ( of Contents) S 0 12 F
PE
8500 1968 P 8 18 F (Chapter) S 100 J ( 1) S
7980 2448 P 0 12 F 8 18 F B (Introduction) S E
2880 4048 P 0 12 F 8 9 F (LINT) S 50 J ( is a program that examines C source code and makes note of "irregularities" in the) S
2880 4288 P (code. When LINT was first implemented, its primary function was locating bugs and) S
2880 4528 P (inefficiencies. However, as the C programming language spread to a variety of machines) S
2880 4768 P (and systems, LINT was enhanced to locate deviations from the strict definition of C.) S
2880 5208 P (The ANSI standard for C now provides the "official" definition of C. However, the ANSI) S
2880 5448 P (standard does not entirely describe the behavior of C implementations, because the) S
2880 5688 P (standard allows certain operations to be performed in a system-dependent way. If a) S
2880 5928 P (program is written in conformance with the ANSI standard, avoiding such system-) S
2880 6168 P (dependent features, we say that the program is written in ) S 0 12 F 8 9 F I (Strict) S 50 J ( C) S E 0 12 F 8 9 F (.) S
2880 6608 P (Ideally,) S 50 J ( all programs should be written in Strict C, since these programs are maximally) S
2880 6848 P (portable. One of the major functions of LINT is to detect code constructs which do not) S
2880 7088 P (conform with Strict C. Such constructs are often valid and can be used in working) S
2880 7328 P (programs, but they are not truly portable and may be indications of loose programming) S
2880 7568 P (style. LINT shows where you have written non-portable code; for portability, you should) S
2880 7808 P (try to remove such code.) S
2880 8248 P (Before we begin, we should note that it is inevitable that LINT will miss some problems) S
2880 8488 P (and will also complain about code that turns out to be valid. The designers have tried to) S
2880 8728 P (chart a course between too much laxness \(which may miss significant irregularities\) and) S
2880 8968 P (too much nit-picking \(which produces quantities of irrelevant output that you will likely) S
2880 9208 P (ignore\). Thus we have designed this version of LINT to report situations that are ) S 0 12 F 8 9 F I (usually) S E
2880 9448 P 0 12 F 8 9 F (signs) S 50 J ( of errors. While odd constructions and unusual programming style can confuse) S
2880 9688 P (LINT from time to time, the majority of material that LINT locates should deserve the) S
2880 9928 P (programmer's attention.) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (1) S 4315 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
7780 1968 P 8 18 F (Chapter) S 100 J ( 2) S
6740 2448 P 0 12 F 8 18 F B (LINT) S 100 J ( Directives) S E
2160 4048 P 0 12 F 8 9 F (LINT) S 50 J ( understands all the usual C preprocessing directives \(e.g. ) S 0 12 F 0 9 F B (#include,) S 108 J ( #define,) S E
2160 4288 P 0 12 F 8 9 F (etc.\).) S 50 J ( In addition, LINT recognizes a number of other directives that have the same sort of) S
2160 4528 P (format:) S
2880 4948 P 0 12 F 0 9 F (#pragma) S 108 J ( aligned) S
2880 5168 P (#pragma argsused) S
2880 5388 P (#pragma notreached) S
2880 5608 P (#pragma optresult) S
2880 5828 P (#pragma used) S
2880 6048 P (#pragma varargs) S
2160 6488 P 0 12 F 8 9 F (These) S 50 J ( directives tell LINT about special features of your source code and allow LINT to) S
2160 6728 P (provide more meaningful diagnostic messages. The usage of each LINT directive is) S
2160 6968 P (explained later in the manual.) S
2160 7408 P (ANSI C compilers should not reject these special LINT directives; the ANSI standard says) S
2160 7648 P (that C compilers are supposed to ignore any ) S 0 12 F 0 9 F B (#pragma) S E 0 12 F 8 9 F () S 50 J ( directives they do not understand.) S
2160 7888 P (However, non-ANSI C compilers may issue diagnostic messages for these ) S 0 12 F 0 9 F B (#pragma) S E
2160 8128 P 0 12 F 8 9 F (directives,) S 50 J ( and even some ANSI C compilers may issue warnings about unrecognized) S
2160 8368 P 0 12 F 0 9 F B (#pragma) S E 0 12 F 8 9 F (s.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4315 J ( 2) S 0 12 F
PE
8500 1968 P 8 18 F (Chapter) S 100 J ( 3) S
8000 2448 P 0 12 F 8 18 F B (LINT) S 100 J ( Output) S E
2880 4048 P 0 12 F 8 9 F (LINT) S 50 J ( generally produces quite a lot of output. By default the output is written to the) S
2880 4288 P (terminal, but it can be redirected to a file using the standard output redirection) S
2880 4528 P (constructions on the LINT command line.) S
2880 4968 P (The first lines of output from LINT are diagnostic messages comparable to those that) S
2880 5208 P (might be produced by a C compiler. These diagnostics describe easily detected things) S
2880 5448 P (like syntax errors.) S
2880 5888 P (Following this comes output that is unique to LINT. Most lines in the output have the form) S
3600 6308 P 0 12 F 0 9 F (filename,lineno:) S 108 J ( class: text) S
2880 6748 P 0 12 F 8 9 F (where) S 50 J ( ) S 0 12 F 0 9 F (filename) S 0 12 F 8 9 F () S 50 J ( is the name of one of the source files that LINT is scanning and ) S 0 12 F 0 9 F (lineno) S
2880 6988 P 0 12 F 8 9 F (is) S 50 J ( a line number within that file. The ) S 0 12 F 0 9 F (class) S 0 12 F 8 9 F () S 50 J ( field tells the type of problem found; see) S
2880 7228 P ("Message Classes" below for more information. The ) S 0 12 F 0 9 F (text) S 0 12 F 8 9 F () S 50 J ( part of the message provides) S
2880 7468 P (specific information about the problem.) S
2880 7908 P (Some lines may have the form) S
3600 8328 P 0 12 F 0 9 F (libname:) S 108 J ( class: text) S
2880 8768 P 0 12 F 8 9 F (where) S 50 J ( ) S 0 12 F 0 9 F (libname) S 0 12 F 8 9 F () S 50 J ( is the name of a LINT Library. For more information on LINT libraries,) S
2880 9008 P (see the last section of this manual.) S
2880 9828 P 0 12 F 8 12 F B (Message) S 67 J ( Classes) S E
2880 10548 P 0 12 F 8 9 F (Each) S 50 J ( message produced by LINT is labelled with a string indicating what kind of problem) S
2880 10788 P (the message describes. The following message classes are recognized:) S
2880 11228 P 0 12 F 0 9 F (Error:) S
3600 11468 P 0 12 F 8 9 F (Same) S 50 J ( as error messages produced by the compiler: code so incorrect that there) S
3600 11708 P (is no way to generate any sort of object code.) S
2880 12148 P 0 12 F 0 9 F (Warning:) S
3600 12388 P 0 12 F 8 9 F (Marks) S 50 J ( a construct that is invalid but a compiler could still generate some kind of) S
3600 12628 P (object code. For example, the ANSI standard does not allow assignments) S
3600 12868 P (between pointers of different types, but most compilers can still generate sensible) S
3600 13108 P (object code for such an operation.) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (3) S 4315 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
2160 2168 P 0 9 F (Unusual:) S
2880 2408 P 0 12 F 8 9 F (Marks) S 50 J ( a construct which is valid, but which is not often seen in C programs. For) S
2880 2648 P (example,) S
3168 3068 P 0 12 F 0 9 F (i=i;) S
2880 3508 P 0 12 F 8 9 F (is) S 50 J ( valid but suspicious, possibly indicating some problem in your code.) S
2160 3948 P 0 12 F 0 9 F (Note:) S
2880 4188 P 0 12 F 8 9 F (Marks) S 50 J ( a construct which is invalid but always works properly on the current) S
2880 4428 P (machine. For example,) S
3168 4848 P 0 12 F 0 9 F (printf\("%ld",1\);) S
2880 5288 P 0 12 F 8 9 F (is) S 50 J ( invalid since ) S 0 12 F 0 9 F (%ld) S 0 12 F 8 9 F () S 50 J ( requires a ) S 0 12 F 0 9 F B (long) S E 0 12 F 8 9 F () S 50 J ( argument but ) S 0 12 F 0 9 F (1) S 0 12 F 8 9 F () S 50 J ( is just ) S 0 12 F 0 9 F B (int) S E 0 12 F 8 9 F (.) S 50 J ( However, this) S
2880 5528 P (always works properly on machines where ) S 0 12 F 0 9 F B (long) S E 0 12 F 8 9 F () S 50 J ( and ) S 0 12 F 0 9 F B (int) S E 0 12 F 8 9 F () S 50 J ( are the same size.) S
2160 5968 P 0 12 F 0 9 F (MachDepd:) S
2880 6208 P 0 12 F 8 9 F (Marks) S 50 J ( a valid construct whose behavior is machine-dependent. For example, the) S
2880 6448 P (result of ) S 0 12 F 0 9 F (\(-7/2\)) S 0 12 F 8 9 F () S 50 J ( is machine-dependent, since the ANSI standard allows this kind) S
2880 6688 P (of division to truncate either towards or away from zero.) S
2160 7128 P 0 12 F 0 9 F (Extension:) S
2880 7368 P 0 12 F 8 9 F (Marks) S 50 J ( a construct that is an extension to the ANSI standard.) S
2160 7808 P 0 12 F 0 9 F (Efficiency:) S
2880 8048 P 0 12 F 8 9 F (Marks) S 50 J ( code that has been written in a particularly inefficient way, or using) S
2880 8288 P (constructs that are likely to execute slowly.) S
2160 8728 P 0 12 F 0 9 F (NotMinimal:) S
2880 8968 P 0 12 F 8 9 F (Marks) S 50 J ( a construct which is valid ANSI C but may not be accepted by older C) S
2880 9208 P (compilers \(e.g. ) S 0 12 F 0 9 F B (void) S E 0 12 F 8 9 F () S 50 J ( ) S 0 12 F 0 9 F B (*) S E 0 12 F 8 9 F () S 50 J ( pointers\).) S
2160 9648 P 0 12 F 0 9 F (Info:) S
2880 9888 P 0 12 F 8 9 F (Provides) S 50 J ( cross-reference information while using LINT.) S
2160 10328 P 0 12 F 0 9 F (IntrnErr:) S
2880 10568 P 0 12 F 8 9 F (An) S 50 J ( internal error in LINT itself \(for example, a table overflow\).) S
2160 11388 P 0 12 F 8 12 F B (Output) S 67 J ( Grouping) S E
2160 12108 P 0 12 F 8 9 F (LINT) S 50 J ( output is grouped according to the functions of the source code.) S
2160 12548 P (The first line of a group of messages gives the name of a function or an external variable.) S
2160 12788 P (After that come all the messages pertaining to that function or variable. The messages) S
2160 13028 P (end with a blank line, followed by the group of messages for the next function or variable.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4315 J ( 4) S 0 12 F
PE
2880 1968 P 8 9 F (Groups) S 50 J ( are sorted in alphabetical order according to the name of the function or variable.) S
2880 2408 P (The first line of every function group gives the name of the function and the type of value) S
2880 2648 P (that the function returns. If LINT has found a definition for the function, the first line of the) S
2880 2888 P (function group is) S
3600 3308 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" returns "TYPE".) S
2880 3748 P 0 12 F 8 9 F (where) S 50 J ( ) S 0 12 F 0 9 F (NAME) S 0 12 F 8 9 F () S 50 J ( is the name of the function and ) S 0 12 F 0 9 F (TYPE) S 0 12 F 8 9 F () S 50 J ( is the type of value that the function) S
2880 3988 P (returns.) S
2880 4428 P (If LINT can't find a definition for the function, LINT looks at the first ) S 0 12 F 8 9 F I (reference) S E 0 12 F 8 9 F () S 50 J ( to the) S
2880 4668 P (function that appears in the source code and prints) S
3600 5088 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" is assumed to return "TYPE".) S
2880 5528 P 0 12 F 8 9 F (where) S 50 J ( ) S 0 12 F 0 9 F (TYPE) S 0 12 F 8 9 F () S 50 J ( is the type suggested by the way in which the function is used. In keeping) S
2880 5768 P (with the rules of C, LINT assumes that a function returns ) S 0 12 F 0 9 F B (int) S E 0 12 F 8 9 F () S 50 J ( if the function is not explicitly) S
2880 6008 P (declared to have a different type. If the first reference to the function does not use a return) S
2880 6248 P (value from the function, the message is) S
3600 6668 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" assumed to return no value.) S
2880 7108 P 0 12 F 8 9 F (If) S 50 J ( LINT scans a function definition and finds that there are no ) S 0 12 F 0 9 F B (return) S 108 J ( ) S E 0 12 F 8 9 F (statements) S 50 J ( that) S
2880 7348 P (return a value, LINT outputs the message) S
3600 7768 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" returns no value.) S
2880 8208 P 0 12 F 8 9 F (You) S 50 J ( should distinguish between this message and) S
3600 8628 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" returns void.) S
2880 9068 P 0 12 F 8 9 F (The) S 50 J ( ) S 0 12 F 0 9 F B (void) S E 0 12 F 8 9 F () S 50 J ( message appears when a function is explicitly declared with the ) S 0 12 F 0 9 F B (void) S E
2880 9308 P 0 12 F 8 9 F (keyword.) S 50 J ( The ) S 0 12 F 0 9 F ("no) S 108 J ( value") S 0 12 F 8 9 F () S 50 J ( message appears when a function definition has no ) S 0 12 F 0 9 F B (return) S E
2880 9548 P 0 12 F 8 9 F (statements.) S
2880 9988 P (The) S 50 J ( first appearance of an external variable is treated in much the same way as the first) S
2880 10228 P (appearance of a function. You will see a message like) S
3600 10648 P 0 12 F 0 9 F (External) S 108 J ( "NAME" is "TYPE".) S
2880 11088 P 0 12 F 8 9 F (or) S
3600 11508 P 0 12 F 0 9 F (External) S 108 J ( "NAME" is assumed to be "TYPE".) S
2880 11948 P 0 12 F 8 9 F (With) S 50 J ( one exception, the messages we have described so far are always issued, whether) S
2880 12188 P (or not there are errors. The exception is when a symbol appears in a LINT library) S
2880 12428 P (\(described later on\) and is not referenced in normal source code. Messages about library) S
2880 12668 P (functions and variables only appear if the symbol is used in source code.) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (5) S 4315 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
2160 1968 P 8 9 F (Other) S 50 J ( messages in LINT output describe situations that may be errors. These messages) S
2160 2208 P (refer to difficulties within the function with which they are grouped.) S
2160 3028 P 0 12 F 8 12 F B (Type) S 67 J ( Information) S E
2160 3748 P 0 12 F 8 9 F (At) S 50 J ( the end of its output, LINT displays a block of information describing the types of the) S
2160 3988 P (program. A typical line of output is) S
2880 4408 P 0 12 F 0 9 F (filename,lineno:) S 108 J ( type) S
2160 4848 P 0 12 F 8 9 F (where) S 50 J ( ) S 0 12 F 0 9 F (filename) S 0 12 F 8 9 F () S 50 J ( is the name of the file where the type was defined and ) S 0 12 F 0 9 F (lineno) S 0 12 F 8 9 F () S 50 J ( is the) S
2160 5088 P (line number where the definition began.) S
2160 5528 P (LINT provides information about any ) S 0 12 F 0 9 F B (typedef) S E 0 12 F 8 9 F (s,) S 50 J ( enumerated types, structures, and/or) S
2160 5768 P (unions that were involved in the messages produced. This lets you locate the definitions) S
2160 6008 P (of these types.) S
2160 6448 P (If a type appears twice in this list, it usually means that there is more than one definition) S
2160 6688 P (for the same type and the types are not assignment-compatible.) S
2160 7128 P (LINT also checks for structures and unions which are used in functions and which have) S
2160 7368 P (been incompletely defined. Incomplete definitions are acceptable as long as there is a) S
2160 7608 P (complete definition somewhere. All complete definitions have to be identical. If complete) S
2160 7848 P (definitions conflict with each other, LINT issues a diagnostic beginning with) S
2880 8268 P 0 12 F 0 9 F (filename) S 108 J ( : type) S
2160 8708 P 0 12 F 8 9 F (where) S 50 J ( ) S 0 12 F 0 9 F (filename) S 0 12 F 8 9 F () S 50 J ( is the name of a file where the type was used and found to conflict with) S
2160 8948 P (another definition.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4315 J ( 6) S 0 12 F
PE
8500 1968 P 8 18 F (Chapter) S 100 J ( 4) S
7000 2448 P 0 12 F 8 18 F B (LINT) S 100 J ( Conventions) S E
2880 4048 P 0 12 F 8 9 F (A) S 50 J ( function is ) S 0 12 F 8 9 F I (defined) S E 0 12 F 8 9 F () S 50 J ( by the function header that actually starts the function. This tells the) S
2880 4288 P (type of value that the function returns and describes the arguments of the function. An) S
2880 4528 P (external variable is ) S 0 12 F 8 9 F I (defined) S E 0 12 F 8 9 F () S 50 J ( by a declaration for the variable that is outside the scope of all) S
2880 4768 P (functions and that does not include the keyword ) S 0 12 F 0 9 F B (extern) S E 0 12 F 8 9 F (.) S
2880 5208 P (A) S 50 J ( function is ) S 0 12 F 8 9 F I (declared) S E 0 12 F 8 9 F () S 50 J ( by a declaration or function call inside another function. An external) S
2880 5448 P (variable is ) S 0 12 F 8 9 F I (declared) S E 0 12 F 8 9 F () S 50 J ( by a declaration that includes the keyword ) S 0 12 F 0 9 F B (extern) S E 0 12 F 8 9 F (.) S 50 J ( Such a variable) S
2880 5688 P (declaration does not allocate space for the variable; it merely describes the type of the) S
2880 5928 P (variable and presumes that the variable is defined elsewhere.) S
2880 6368 P (A variable is ) S 0 12 F 8 9 F I (set) S E 0 12 F 8 9 F () S 50 J ( if it is assigned a value or if a pointer to the variable is taken. Similarly, a) S
2880 6608 P (variable is ) S 0 12 F 8 9 F I (used) S E 0 12 F 8 9 F () S 50 J ( if its value is used or if a pointer is taken. \(You might wonder why taking a) S
2880 6848 P (pointer marks a variable as both "set" and "used". The answer is that once a pointer to a) S
2880 7088 P (variable is taken, LINT can't keep track of assignments or uses of the variable through the) S
2880 7328 P (pointer. Once the pointer is taken, LINT can only assume that the data object may have) S
2880 7568 P (been both set and used.\)) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (7) S 4315 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
7780 1968 P 8 18 F (Chapter) S 100 J ( 5) S
3080 2448 P 0 12 F 8 18 F B (Unused) S 100 J ( Definitions and Declarations) S E
2160 4048 P 0 12 F 8 9 F (One) S 50 J ( of the easiest problems for LINT to find is a variable or function that is defined but not) S
2160 4288 P (used or called in the rest of the program. Such items can usually be deleted, since they) S
2160 4528 P (are not performing any function in the program. The diagnostic messages for such) S
2160 4768 P (situations are listed and explained below.) S
2160 5208 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" is never called.) S
2880 5448 P 0 12 F 8 9 F (The) S 50 J ( given function was defined in the source code but never called.) S
2160 5888 P 0 12 F 0 9 F (External) S 108 J ( "NAME" is never used.) S
2880 6128 P 0 12 F 8 9 F (The) S 50 J ( given external variable was defined but never used.) S
2160 6568 P 0 12 F 0 9 F (External) S 108 J ( "NAME" is defined but never set or used.) S
2880 6808 P 0 12 F 8 9 F (This) S 50 J ( is essentially the same as the previous message.) S
2160 7248 P 0 12 F 0 9 F (External) S 108 J ( "NAME" is set but never used.) S
2880 7488 P 0 12 F 8 9 F (The) S 50 J ( given external variable was assigned a value, but then was never used for) S
2880 7728 P (anything.) S
2160 8168 P (Messages are ) S 0 12 F 8 9 F I (not) S E 0 12 F 8 9 F () S 50 J ( generated if a symbol in a LINT library is unused.) S
2160 8988 P 0 12 F 8 12 F B (Marking) S 67 J ( Symbols As Used) S E
2160 9708 P 0 12 F 8 9 F (Sometimes,) S 50 J ( you may intentionally declare a variable without using it. For example,) S
2160 9948 P (suppose a variable is only used inside a ) S 0 12 F 0 9 F B (#if) S 108 J ( ) S E 0 12 F 8 9 F (block) S 50 J ( and that block of code is not compiled) S
2160 10188 P (because the ) S 0 12 F 0 9 F B (#if) S 108 J ( ) S E 0 12 F 8 9 F (condition) S 50 J ( is not met. LINT would normally issue an error message for) S
2160 10428 P (this condition, but you might not consider this situation an error.) S
2160 10868 P (To avoid this sort of message, you can add the LINT directive) S
2880 11288 P 0 12 F 0 9 F (#pragma) S 108 J ( used NAME NAME NAME ...) S
2160 11728 P 0 12 F 8 9 F (to) S 50 J ( your source code. This tells LINT that the names listed in the directive are used by your) S
2160 11968 P (program, even if it doesn't look like they are.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4315 J ( 8) S 0 12 F
PE
8500 1968 P 8 18 F (Chapter) S 100 J ( 6) S
3500 2448 P 0 12 F 8 18 F B (Undefined) S 100 J ( or Undeclared Data Objects) S E
2880 4048 P 0 12 F 8 9 F (LINT) S 50 J ( uses a simple-minded way to find places where undefined variables are used: a) S
2880 4288 P (variable is assumed to be undefined if a statement using the variable appears in the code) S
2880 4528 P (before the variable is set. Of course, it is possible to construct programs where this) S
2880 4768 P (approach fails. With the use of spaghetti-like ) S 0 12 F 0 9 F B (goto) S E 0 12 F 8 9 F (s,) S 50 J ( the top-down technique can be) S
2880 5008 P (outwitted.) S
2880 5448 P (Because static and external variables are automatically initialized to zero by the compiler if) S
2880 5688 P (they are not initialized explicitly, LINT does not pick up problems with these variables.) S
2880 6128 P (The following diagnostics pertain to data objects that are used before they are set,) S
2880 6368 P (defined, or declared.) S
2880 6808 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" is called but never defined.) S
3600 7048 P 0 12 F 8 9 F (The) S 50 J ( source code contains a call to the given function, but the function is not) S
3600 7288 P (defined anywhere in the code.) S
2880 7728 P 0 12 F 0 9 F ("NAME") S 108 J ( is set but never defined.) S
3600 7968 P 0 12 F 8 9 F (The) S 50 J ( given variable has been assigned a value, but a proper definition does not) S
3600 8208 P (appear in the source code.) S
2880 8648 P 0 12 F 0 9 F ("NAME") S 108 J ( is used but never defined.) S
3600 8888 P 0 12 F 8 9 F (The) S 50 J ( value of the given variable was used, but the variable was never defined.) S
2880 9328 P 0 12 F 0 9 F ("NAME") S 108 J ( is used but never defined or set.) S
3600 9568 P 0 12 F 8 9 F (The) S 50 J ( value of the given variable has been used, but the variable was neither) S
3600 9808 P (defined nor set.) S
2880 10248 P 0 12 F 0 9 F ("NAME") S 108 J ( is defined and used but never set.) S
3600 10488 P 0 12 F 8 9 F (The) S 50 J ( given variable is defined and used, but never set. This message is only) S
3600 10728 P (issued for local variables, since all external variables are automatically initialized) S
3600 10968 P (to zero \(if no explicit initialization is specified\).) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (9) S 4315 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
7780 1968 P 8 18 F (Chapter) S 100 J ( 7) S
6200 2448 P 0 12 F 8 18 F B (Unreachable) S 100 J ( Code) S E
2160 4048 P 0 12 F 8 9 F (LINT) S 50 J ( attempts to detect parts of the source code that cannot be reached \(for example,) S
2160 4288 P (unlabelled statements following a ) S 0 12 F 0 9 F B (goto) S E 0 12 F 8 9 F (\).) S 50 J ( It also attempts to find loops that can never be) S
2160 4528 P (exited from the bottom, such as ) S 0 12 F 0 9 F B (while\(1\)...) S 108 J ( ) S E 0 12 F 8 9 F (At) S 50 J ( the same time, LINT finds loops that) S
2160 4768 P (cannot be entered from the top.) S
2160 5208 P (The message that is issued for detected unreachable code is) S
2880 5628 P 0 12 F 0 9 F (Non) S 108 J ( reachable code at "TEXT".) S
2160 6068 P 0 12 F 8 9 F (where) S 50 J ( ) S 0 12 F 0 9 F (TEXT) S 0 12 F 8 9 F () S 50 J ( is the source code that cannot be reached.) S
2160 6888 P 0 12 F 8 12 F B (Marking) S 67 J ( Unreachable Code) S E
2160 7608 P 0 12 F 8 9 F (LINT) S 50 J ( cannot detect functions which are called and never return \(for example, ones that) S
2160 7848 P (terminate execution via ) S 0 12 F 0 9 F (exit) S 0 12 F 8 9 F (\).) S 50 J ( This means that it is possible for LINT to miss some) S
2160 8088 P (unreachable code, as in) S
2880 8508 P 0 12 F 0 9 F (g\(\)) S
2880 8728 P ({) S
2880 8948 P () S 108 J ( exit\(-1\);) S
2880 9168 P (}) S
2880 9388 P (f\(\)) S
2880 9608 P ({) S
2880 9828 P ( ...) S
2880 10048 P ( g\(\);) S
2880 10268 P ( /* everything that follows) S
2880 10488 P ( * is unreachable */) S
2880 10708 P ( ...) S
2880 10928 P (}) S
2160 11368 P 0 12 F 8 9 F (To) S 50 J ( mark this kind of situation, you can use the LINT directive) S
2880 11788 P 0 12 F 0 9 F (#pragma) S 108 J ( notreached) S
2160 12228 P 0 12 F 8 9 F (When) S 50 J ( this directive appears in your source code, LINT regards any source code following) S
2160 12468 P (the directive as unreachable, up to the end of the block or the next statement label.) S
2160 12708 P (Appropriate diagnostic messages will be issued.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 10) S 0 12 F
PE
8500 1968 P 8 18 F (Chapter) S 100 J ( 8) S
6040 2448 P 0 12 F 8 18 F B (Function) S 100 J ( Return Values) S E
2880 4048 P 0 12 F 8 9 F (LINT) S 50 J ( reports functions that contain both) S
3600 4468 P 0 12 F 0 9 F (return\() S 108 J ( expression \);) S
2880 4908 P 0 12 F 8 9 F (and) S
3600 5328 P 0 12 F 0 9 F (return;) S
2880 5768 P 0 12 F 8 9 F (This) S 50 J ( kind of situation usually results in errors \(since the calling function may assume a) S
2880 6008 P (value is being returned but one of the ) S 0 12 F 0 9 F B (return) S 108 J ( ) S E 0 12 F 8 9 F (statements) S 50 J ( does not return a value\).) S
2880 6448 P (Correspondingly, LINT makes note of whether or not a call to a function makes use of a) S
2880 6688 P (return value from the function. If the caller expects a value but the function does not) S
2880 6928 P (return one, it is clearly a bug. If the function returns a value but the the caller does not use) S
2880 7168 P (it, it could be an error, an inefficiency, or sloppy programming style.) S
2880 7608 P (If a function definition contains no ) S 0 12 F 0 9 F B (return) S 108 J ( ) S E 0 12 F 8 9 F (statements) S 50 J ( that return a value, LINT regards) S
2880 7848 P (the function type as ) S 0 12 F 0 9 F B (int) S E 0 12 F 8 9 F () S 50 J ( unless it is explicitly declared differently. If LINT finds a) S
2880 8088 P (reference to the function before it finds the function definition, it assumes that the function) S
2880 8328 P (returns a value unless the function is explicitly declared as ) S 0 12 F 0 9 F B (void) S E 0 12 F 8 9 F (.) S 50 J ( Programmers who are) S
2880 8568 P (used to looser controls than this will find themselves with a large number of diagnostic) S
2880 8808 P (messages.) S
2880 9248 P (The messages related to function return values are listed below.) S
2880 9688 P 0 12 F 0 9 F (Value) S 108 J ( is used but none returned.) S
3600 9928 P 0 12 F 8 9 F (A) S 50 J ( function did not return a value, but the statement that called the function) S
3600 10168 P (behaved as if a value was returned.) S
2880 10608 P 0 12 F 0 9 F (Function) S 108 J ( NAME has no return value) S
3600 10848 P 0 12 F 8 9 F (A) S 50 J ( function was defined as returning a value \(the function is not ) S 0 12 F 0 9 F B (void\)) S 108 J ( ) S E 0 12 F 8 9 F (but) S 50 J ( it did) S
3600 11088 P (not contain a) S
3888 11508 P 0 12 F 0 9 F (return\(expression\)) S
3600 11948 P 0 12 F 8 9 F (statement.) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (11) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
2160 1968 P 0 9 F (Return) S 108 J ( value ignored.) S
2880 2208 P 0 12 F 8 9 F (The) S 50 J ( given function contains a) S
3168 2628 P 0 12 F 0 9 F (return\(expression\);) S
2880 3068 P 0 12 F 8 9 F (statement,) S 50 J ( but the caller never uses the return result.) S
2160 3508 P 0 12 F 0 9 F (Return) S 108 J ( value sometimes ignored.) S
2880 3748 P 0 12 F 8 9 F (This) S 50 J ( is similar to the last situation, except that the return result is sometimes) S
2880 3988 P (used, sometimes not.) S
2160 4808 P 0 12 F 8 12 F B (Ignoring) S 67 J ( Return Values) S E
2160 5528 P 0 12 F 8 9 F (There) S 50 J ( is always the possibility that you want to write a function whose return value can be) S
2160 5768 P (ignored. The C library has several functions whose return value is superfluous. For) S
2160 6008 P (example,) S
2880 6428 P 0 12 F 0 9 F (strcpy\(A,B\)) S
2160 6868 P 0 12 F 8 9 F (copies) S 50 J ( string ) S 0 12 F 0 9 F (B) S 0 12 F 8 9 F () S 50 J ( into string ) S 0 12 F 0 9 F (A) S 0 12 F 8 9 F () S 50 J ( and returns a pointer to ) S 0 12 F 0 9 F (A) S 0 12 F 8 9 F (.) S 50 J ( This is unnecessary, since the) S
2160 7108 P (caller already has a pointer to ) S 0 12 F 0 9 F (A) S 0 12 F 8 9 F (.) S
2160 7548 P (LINT) S 50 J ( lets you mark functions with optional return values by using a directive similar to the) S
2160 7788 P 0 12 F 0 9 F B (#) S E 0 12 F 8 9 F (directives) S 50 J ( of the C preprocessor.) S
2880 8208 P 0 12 F 0 9 F (#pragma) S 108 J ( optresult) S
2160 8648 P 0 12 F 8 9 F (can) S 50 J ( be placed immediately before the definition of a function that returns an optional) S
2160 8888 P (result. LINT then recognizes that this function returns a result that can be ignored; LINT) S
2160 9128 P (does not give error messages if the result is ignored.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 12) S 0 12 F
PE
8500 1968 P 8 18 F (Chapter) S 100 J ( 9) S
7520 2448 P 0 12 F 8 18 F B (Type) S 100 J ( Checking) S E
2880 4048 P 0 12 F 8 9 F (LINT) S 50 J ( enforces stronger type-checking than most compilers do. In expressions where) S
2880 4288 P (different types of data are intermixed, LINT observes the strict conventions for conversions) S
2880 4528 P (of data and requires that everything else be properly cast.) S
2880 4968 P (LINT checks for type incompatibilities in three places:) S
2880 5408 P ( \(a\) in the arguments passed to functions) S
2880 5648 P ( \(b\) in the return values received by functions) S
2880 5888 P ( \(c\)) S 460 J ( in) S 50 J ( structure manipulations) S
2880 6328 P (For fullest type-checking, the code should use prototypes wherever possible. LINT also) S
2880 6568 P (checks for situations in which some function calls take place with a prototype in scope) S
2880 6808 P (while others do not.) S
2880 7248 P (When arguments are passed to functions, LINT issues a diagnostic if the argument type) S
2880 7488 P (passed by the caller differs from the argument type expected by the called function.) S
2880 7728 P (Similarly, LINT complains if the argument type returned by the called function differs from) S
2880 7968 P (the argument type expected by the caller. The messages associated with this situation) S
2880 8208 P (are given below.) S
2880 8648 P 0 12 F 0 9 F (Argument) S 108 J ( N is "TYPE1", but declared as "TYPE2".) S
3600 8888 P 0 12 F 8 9 F (When) S 50 J ( the given function was called, the caller passed a value of type TYPE1 for) S
3600 9128 P (argument number N, but the called function expected a value of TYPE2. For) S
3600 9368 P (example, you might see) S
3888 9788 P 0 12 F 0 9 F (Argument) S 108 J ( 2 is "int", declared "unsigned int".) S
3600 10228 P 0 12 F 8 9 F (This) S 50 J ( indicates that the caller passed an integer value as the second argument of) S
3600 10468 P (the function, but the called function expected an unsigned integer.) S
2880 10908 P 0 12 F 0 9 F (Argument) S 108 J ( N is "TYPE", but declared as a different "TYPE") S
3600 11148 P 0 12 F 8 9 F (This) S 50 J ( is an odd situation where the definition and a declaration give the argument) S
3600 11388 P (different types, but the strings used to print out ) S 0 12 F 0 9 F (TYPE) S 0 12 F 8 9 F () S 50 J ( turn out to be the same.) S
3600 11628 P (For example, suppose that a function has a local ) S 0 12 F 0 9 F B (struct) S E 0 12 F 8 9 F () S 50 J ( ) S 0 12 F 0 9 F (X) S 0 12 F 8 9 F (,) S 50 J ( but there is also an) S
3600 11868 P (external ) S 0 12 F 0 9 F B (struct) S E 0 12 F 8 9 F () S 50 J ( ) S 0 12 F 0 9 F (X) S 0 12 F 8 9 F () S 50 J ( which is not compatible with the local one. If the program) S
3600 12108 P (invalidly tries to combine external and local variables of type X, you get the above) S
3600 12348 P (message; even though the types have the same name, they are different. The) S
3600 12588 P (same sort of situation may happen with other LINT error messages.) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (13) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
2160 1968 P 0 9 F ("NAME") S 108 J ( is redeclared as function type "TYPE".) S
2880 2208 P 0 12 F 8 9 F (When) S 50 J ( ) S 0 12 F 0 9 F (NAME) S 0 12 F 8 9 F () S 50 J ( was first declared, it was said to return a value of one type. Now) S
2880 2448 P 0 12 F 0 9 F (NAME) S 0 12 F 8 9 F () S 50 J ( has been declared or used as a function returning a different type of value.) S
2160 2888 P 0 12 F 0 9 F ("NAME") S 108 J ( declared as returning "TYPE") S
2880 3128 P 0 12 F 8 9 F (The) S 50 J ( function ) S 0 12 F 0 9 F (NAME) S 0 12 F 8 9 F () S 50 J ( has been declared as returning a ) S 0 12 F 0 9 F (TYPE) S 0 12 F 8 9 F () S 50 J ( that is different than) S
2880 3368 P (its definition.) S
2160 3808 P 0 12 F 0 9 F ("NAME") S 108 J ( declared as "TYPE") S
2880 4048 P 0 12 F 8 9 F (The) S 50 J ( variable ) S 0 12 F 0 9 F (NAME) S 0 12 F 8 9 F () S 50 J ( has been declared with a ) S 0 12 F 0 9 F (TYPE) S 0 12 F 8 9 F () S 50 J ( that is different than its) S
2880 4288 P (definition.) S
2160 4728 P 0 12 F 0 9 F ("NAME") S 108 J ( is redefined as function.) S
2880 4968 P (NAME) S 0 12 F 8 9 F () S 50 J ( was originally declared as a variable, but is now being defined as a) S
2880 5208 P (function.) S
2160 5648 P (LINT also issues a message whenever a data object is implicitly shortened. For example,) S
2160 5888 P (suppose we have) S
2880 6308 P 0 12 F 0 9 F (long) S 108 J ( l;) S
2880 6528 P (int i;) S
2880 6748 P ( /* stuff */) S
2880 6968 P (i = l;) S
2160 7408 P 0 12 F 8 9 F (The) S 50 J ( C compiler automatically shortens the long "l" and assigns the result to "i". However,) S
2160 7648 P (LINT flags this as a potential problem \(since different integer sizes on different machines) S
2160 7888 P (may affect how this works\). No error message is issued if the conversion is done) S
2160 8128 P (explicitly, as in) S
2880 8548 P 0 12 F 0 9 F (i) S 108 J ( = \(int\) l;) S
2160 8988 P 0 12 F 8 9 F (As) S 50 J ( a final note about type-checking, LINT occasionally gets some complicated types) S
2160 9228 P (wrong. For example, warnings about structures that contain arrays of structures do not) S
2160 9468 P (give the right type \(namely ) S 0 12 F 0 9 F B (struct) S E 0 12 F 8 9 F (\).) S 50 J ( The same problem occurs when LINT is not given) S
2160 9708 P (the internal structure of a ) S 0 12 F 0 9 F B (struct) S E 0 12 F 8 9 F (.) S 50 J ( For example, it is valid for a source module to declare) S
2880 10128 P 0 12 F 0 9 F (struct) S 108 J ( ABC *ptr;) S
2160 10568 P 0 12 F 8 9 F (without) S 50 J ( describing the internal structure of the ) S 0 12 F 0 9 F (ABC) S 0 12 F 8 9 F () S 50 J ( ) S 0 12 F 0 9 F B (struct) S E 0 12 F 8 9 F (.) S 50 J ( In such cases, LINT does not) S
2160 10808 P (have enough information to determine if code is valid, so the warning messages may not) S
2160 11048 P (be entirely accurate.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 14) S 0 12 F
PE
8300 1968 P 8 18 F (Chapter) S 100 J ( 10) S
6300 2448 P 0 12 F 8 18 F B (Function) S 100 J ( Declarations) S E
2880 4048 P 0 12 F 8 9 F (LINT) S 50 J ( compares all the available prototype declarations for a function to make sure that the) S
2880 4288 P (prototypes match ) S 0 12 F 8 9 F I (exactly) S E 0 12 F 8 9 F (.) S 50 J ( For example, LINT notes situations where one prototype gives) S
2880 4528 P 0 12 F 0 9 F B (void) S E 0 12 F 8 9 F () S 50 J ( ) S 0 12 F 0 9 F B (*) S E 0 12 F 8 9 F () S 50 J ( as the type of an argument while another types the same argument as ) S 0 12 F 0 9 F B (char) S E 0 12 F 8 9 F () S 50 J ( ) S 0 12 F 0 9 F B (*) S E 0 12 F 8 9 F (.) S 50 J ( In) S
2880 4768 P (practice, there is no difference between these two pointer types; however, LINT makes) S
2880 5008 P (note of the situation because it may be indicative of an error.) S
2880 5448 P (In addition to checking that the argument types expected by a called function match the) S
2880 5688 P (argument types passed by the caller, LINT also checks that the ) S 0 12 F 8 9 F I (number) S E 0 12 F 8 9 F () S 50 J ( of arguments) S
2880 5928 P (expected by the called function matches the number of arguments passed by the caller. If) S
2880 6168 P (there is a mismatch, it prints) S
3600 6588 P 0 12 F 0 9 F (Called) S 108 J ( with N arguments, requires M) S
2880 7028 P 0 12 F 8 9 F (where) S 50 J ( N is the number of arguments that the caller passes and M is the number of) S
2880 7268 P (arguments that the function expects.) S
2880 7708 P (Whenever possible, LINT checks to see that argument declarations in function prototypes) S
2880 7948 P (agree exactly with the declarations in the function definition. If the declarations do not) S
2880 8188 P (agree, LINT outputs) S
3600 8608 P 0 12 F 0 9 F (Prototype) S 108 J ( argument N is "TYPE" but declared as "TYPE") S
2880 9048 P 0 12 F 8 9 F (LINT) S 50 J ( expects argument declarations to match exactly. For example, the ) S 0 12 F 0 9 F B (void) S E 0 12 F 8 9 F () S 50 J ( ) S 0 12 F 0 9 F B (*) S E 0 12 F 8 9 F () S 50 J ( type is) S
2880 9288 P (considered assignment-compatible with all pointer types and therefore there is not a) S
2880 9528 P (conflict between ) S 0 12 F 0 9 F B (void) S E 0 12 F 8 9 F () S 50 J ( ) S 0 12 F 0 9 F B (*) S E 0 12 F 8 9 F () S 50 J ( and another pointer type. Nevertheless, LINT points out the) S
2880 9768 P (difference, simply to warn you that there seems to be a discrepancy in your code.) S
2880 10208 P (Finally, LINT makes sure that the number of arguments in a prototype declaration matches) S
2880 10448 P (the number in the function definition. If not, LINT prints) S
3600 10868 P 0 12 F 0 9 F (Prototyped) S 108 J ( with N arguments, but requires M) S
2880 11308 P 0 12 F 8 9 F (where) S 50 J ( ) S 0 12 F 0 9 F (M) S 0 12 F 8 9 F () S 50 J ( and ) S 0 12 F 0 9 F (N) S 0 12 F 8 9 F () S 50 J ( are both integers.) S
2880 12128 P 0 12 F 8 12 F B (The) S 67 J ( #pragma varargs Directive) S E
2880 12848 P 0 12 F 8 9 F (In) S 50 J ( earlier versions of C it was valid to pass more arguments than the function definition) S
2880 13088 P (specifies or to pass fewer arguments. This is not valid in ANSI C unless you use the) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (15) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
2160 1968 P 8 9 F (") S 0 12 F 0 9 F (...) S 0 12 F 8 9 F (") S 50 J ( construct in the prototype; however, older code may still make use of such calling) S
2160 2208 P (sequences and most compilers still handle the situation properly.) S
2160 2648 P (In order to handle all the possibilities of this situation, LINT introduces the ) S 0 12 F 0 9 F B (#pragma) S E
2160 2888 P B (varargs) S 108 J ( ) S E 0 12 F 8 9 F (directive.) S 50 J ( The directive has two forms.) S
2880 3308 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs N) S
2160 3748 P 0 12 F 8 9 F (indicates) S 50 J ( that the next function to be defined can take a variable number of arguments but) S
2160 3988 P (must have a minimum of N arguments. For example, we might write) S
2880 4408 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs 3) S
2880 4628 P (int Mini\(N,a,b,c,d\);) S
2880 4848 P (int N,a,b,c,d;) S
2880 5068 P ({ ....) S
2160 5508 P 0 12 F 8 9 F (to) S 50 J ( declare a function ) S 0 12 F 0 9 F (Mini) S 0 12 F 8 9 F () S 50 J ( that must take at least three arguments and can have more. In) S
2160 5748 P (this case, LINT does not issue an error message if you have at least three integer) S
2160 5988 P (arguments present.) S
2160 6428 P (With this form of the ) S 0 12 F 0 9 F B (#pragma) S 108 J ( varargs ) S E 0 12 F 8 9 F (directive,) S 50 J ( LINT typechecks all the arguments) S
2160 6668 P (that are present. In the above example, LINT ensures that all the arguments being) S
2160 6908 P (passed are integers.) S
2160 7348 P (The second form of the directive is) S
2880 7768 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs N M) S
2160 8208 P 0 12 F 8 9 F (where) S 50 J ( both ) S 0 12 F 0 9 F (N) S 0 12 F 8 9 F () S 50 J ( and ) S 0 12 F 0 9 F (M) S 0 12 F 8 9 F () S 50 J ( are integers. This indicates that the next function to be defined must) S
2160 8448 P (have a minimum of ) S 0 12 F 0 9 F (N) S 0 12 F 8 9 F () S 50 J ( arguments, and LINT should typecheck up to ) S 0 12 F 0 9 F (M) S 0 12 F 8 9 F () S 50 J ( arguments if they) S
2160 8688 P (appear. For example, you can imagine a ) S 0 12 F 0 9 F (printf) S 0 12 F 8 9 F (-like) S 50 J ( function that takes a format string) S
2160 8928 P (plus one or more values to print. This could be preceded with) S
2880 9348 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs 2 1) S
2160 9788 P 0 12 F 8 9 F (showing) S 50 J ( that the function must always have two arguments \(a format string and at least) S
2160 10028 P (one output value\) but that only the first argument should be typechecked \(since the output) S
2160 10268 P (value\(s\) need not have a fixed type\).) S
2160 10708 P (The directive can also take the form) S
2880 11128 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs printf) S
2880 11348 P (#pragma varargs scanf) S
2160 11788 P 0 12 F 8 9 F (These) S 50 J ( forms may be used to indicate functions that take ) S 0 12 F 0 9 F (format) S 0 12 F 8 9 F () S 50 J ( strings comparable to) S
2160 12028 P (the strings of ) S 0 12 F 0 9 F (printf) S 0 12 F 8 9 F () S 50 J ( and ) S 0 12 F 0 9 F (scanf) S 0 12 F 8 9 F () S 50 J ( \(respectively\). LINT compares the placeholders in the) S
2160 12268 P 0 12 F 0 9 F (format) S 0 12 F 8 9 F () S 50 J ( string to the types of the arguments that follow the ) S 0 12 F 0 9 F (format) S 0 12 F 8 9 F () S 50 J ( string, and reports) S
2160 12508 P (any conflicts between types. For example, it tells you if the argument corresponding to a) S
2160 12748 P 0 12 F 0 9 F (%s) S 0 12 F 8 9 F () S 50 J ( placeholder is an ) S 0 12 F 0 9 F B (int) S E 0 12 F 8 9 F () S 50 J ( value \(incompatible with ) S 0 12 F 0 9 F (%s) S 0 12 F 8 9 F (\).) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 16) S 0 12 F
PE
2880 2308 P 8 12 F B (The) S 67 J ( #pragma argsused Directive) S E
2880 3028 P 0 12 F 8 9 F (Some) S 50 J ( functions are able to use all the arguments they are passed without actually) S
2880 3268 P (referring to every argument by name. For example, consider a function ) S 0 12 F 0 9 F (Max10) S 0 12 F 8 9 F () S 50 J ( which can) S
2880 3508 P (accept up to 10 ) S 0 12 F 0 9 F B (int) S 108 J ( ) S E 0 12 F 8 9 F (arguments) S 50 J ( and return the value of the largest argument. The first) S
2880 3748 P (argument passed to ) S 0 12 F 0 9 F (Max10) S 0 12 F 8 9 F () S 50 J ( tells how many values have actually been passed. This could) S
2880 3988 P (be defined with) S
3600 4408 P 0 12 F 0 9 F (int) S 108 J ( Max10\(N,a,b,c,d,e,f,g,h,i\)) S
3600 4628 P (int N,a,b,c,d,e,f,g,h,i;) S
3600 4848 P ({) S
3600 5068 P ( int j,m,*p;) S
3600 5288 P ( m = a;) S
3600 5508 P ( p = &a;) S
3600 5728 P ( for \(j=1; j < N; ++j\)) S
3600 5948 P ( if \(p[j] > m\) m = p[j];) S
3600 6168 P ( return\(m\);) S
3600 6388 P (}) S
2880 6828 P 0 12 F 8 9 F (As) S 50 J ( you can see, the function does not refer to the parameters ) S 0 12 F 0 9 F (b) S 0 12 F 8 9 F (,) S 50 J ( ) S 0 12 F 0 9 F (c) S 0 12 F 8 9 F (,) S 50 J ( etc. by name.) S
2880 7068 P (However, it does look at their values, since it walks through the stack using offsets from ) S 0 12 F 0 9 F (a) S 0 12 F 8 9 F (.) S
2880 7308 P (Therefore) S 50 J ( the values are used.) S
2880 7748 P (This sort of coding practice is a violation of the ANSI standard. The standard doesn't let) S
2880 7988 P (you use subscripts to access memory locations outside the bounds of a single object, so) S
2880 8228 P 0 12 F 0 9 F (p[j]) S 0 12 F 8 9 F () S 50 J ( is invalid if ) S 0 12 F 0 9 F (j) S 0 12 F 8 9 F () S 50 J ( is not zero. On the other hand, many compilers still accept code like) S
2880 8468 P (this and older programs may use it.) S
2880 8908 P (For such programs, you can avoid some diagnostic messages from LINT by putting the) S
2880 9148 P (LINT directive) S
3600 9568 P 0 12 F 0 9 F (#pragma) S 108 J ( argsused) S
2880 10008 P 0 12 F 8 9 F (on) S 50 J ( a line preceding the function, as in) S
3600 10428 P 0 12 F 0 9 F (#pragma) S 108 J ( argsused) S
3600 10648 P (int Max10\(N,a,b,c,d,e,f,g,h,i\)) S
3600 10868 P ( ...) S
2880 11308 P 0 12 F 8 9 F (This) S 50 J ( tells LINT that the function uses all its arguments, even if it doesn't appear to.) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (17) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
7580 1968 P 8 18 F (Chapter) S 100 J ( 11) S
6600 2448 P 0 12 F 8 18 F B (Alternate) S 100 J ( Forms) S E
2160 4048 P 0 12 F 8 9 F (For) S 50 J ( compatibility with the Bell Labs' version of LINT, this version of LINT may accept some) S
2160 4288 P (directives in the form of comments. These are only recognized if the) S
2160 4528 P 0 12 F 0 9 F (+ControlComments) S 0 12 F 8 9 F () S 50 J ( option is specified on the LINT command line.) S
2880 4948 P 0 12 F 0 9 F (/*VARARGSN*/) S
2160 5388 P 0 12 F 8 9 F (\(where) S 50 J ( N is an integer\) is automatically converted to) S
2880 5808 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs 0 N) S
2160 6248 P 0 12 F 8 9 F (For) S 50 J ( example,) S
2880 6668 P 0 12 F 0 9 F (/*VARARGS3*/) S
2160 7108 P 0 12 F 8 9 F (is) S 50 J ( equivalent to) S
2880 7528 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs 0 3) S
2160 7968 P 0 12 F 8 9 F (In) S 50 J ( addition,) S
2880 8388 P 0 12 F 0 9 F (/*VARARGS*/) S
2160 8828 P 0 12 F 8 9 F (\(with) S 50 J ( no value N\) is equivalent to) S
2880 9248 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs 0) S
2160 9688 P 0 12 F 8 9 F (In) S 50 J ( addition to ) S 0 12 F 0 9 F (VARARGS) S 0 12 F 8 9 F (,) S 50 J ( the comment) S
2880 10108 P 0 12 F 0 9 F (/*ARGSUSED*/) S
2160 10548 P 0 12 F 8 9 F (is) S 50 J ( automatically converted to) S
2880 10968 P 0 12 F 0 9 F (#pragma) S 108 J ( argsused) S
2160 11408 P 0 12 F 8 9 F (and) S 50 J ( the comment) S
2880 11828 P 0 12 F 0 9 F (/*NOTREACHED*/) S
2160 12268 P 0 12 F 8 9 F (is) S 50 J ( equivalent to) S
2880 12688 P 0 12 F 0 9 F (#pragma) S 108 J ( notreached) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 18) S 0 12 F
PE
2880 1968 P 8 9 F (In) S 50 J ( all cases, the comment form may not contain white space \(blanks, tabs, or new-lines\).) S
2880 2208 P (All alphabetic characters must be in upper case and there can be nothing else in the) S
2880 2448 P (comment except the keyword and any number that should follow.) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (19) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
7580 1968 P 8 18 F (Chapter) S 100 J ( 12) S
5800 2448 P 0 12 F 8 18 F B (Miscellaneous) S 100 J ( Notes) S E
2160 4048 P 0 12 F 8 9 F (LINT) S 50 J ( always uses the full name of functions and variables, and always distinguishes) S
2160 4288 P (between upper and lower case letters. This is the way that C compilers are supposed to) S
2160 4528 P (work as well. However, some compilers or loaders truncate long names to a certain) S
2160 4768 P (number of characters, and some compilers or loaders do not distinguish between the case) S
2160 5008 P (of letters in names. For this reason, LINT issues the following warnings.) S
2160 5448 P 0 12 F 0 9 F (NAME1) S 108 J ( and NAME2 not unique in first N caseless characters.) S
2880 5688 P 0 12 F 8 9 F (N) S 50 J ( is the number of characters to which names may be truncated to meet loader) S
2880 5928 P (requirements.) S
2160 6368 P 0 12 F 0 9 F (NAME1) S 108 J ( and NAME2 not unique without case distinction.) S
2880 6608 P 0 12 F 8 9 F (This) S 50 J ( applies to names like ) S 0 12 F 0 9 F (VAR) S 0 12 F 8 9 F (,) S 50 J ( ) S 0 12 F 0 9 F (var) S 0 12 F 8 9 F (,) S 50 J ( and ) S 0 12 F 0 9 F (Var) S 0 12 F 8 9 F () S 50 J ( used in the same program.) S
2160 7048 P (LINT detects redeclaration of functions and variables defined outside the scope of any) S
2160 7288 P (function. The set of messages dedicated to this kind of problem are given below.) S
2160 7728 P 0 12 F 0 9 F (NAME) S 108 J ( redeclared.) S
2880 7968 P 0 12 F 8 9 F (A) S 50 J ( given variable has been invalidly declared in a second place.) S
2160 8408 P 0 12 F 0 9 F (NAME) S 108 J ( retyped as "TYPE".) S
2880 8648 P 0 12 F 8 9 F (A) S 50 J ( given variable has been used as if it had a type different from its declared type.) S
2160 9088 P 0 12 F 0 9 F (NAME) S 108 J ( redeclared with type "TYPE".) S
2880 9328 P 0 12 F 8 9 F (The) S 50 J ( given variable appears in a new declaration with a different type than it) S
2880 9568 P (previously had.) S
2160 10008 P 0 12 F 0 9 F (NAME) S 108 J ( is redefined as function.) S
2880 10248 P 0 12 F 8 9 F (A) S 50 J ( name that was previously given to an external variable has now been given to) S
2880 10488 P (a function.) S
2160 10928 P (LINT assumes that ) S 0 12 F 0 9 F B (short) S 108 J ( ) S E 0 12 F 8 9 F (integers) S 50 J ( have a length of 16 bits and that ) S 0 12 F 0 9 F B (long) S 108 J ( ) S E 0 12 F 8 9 F (integers) S 50 J ( have) S
2160 11168 P (a length of 32 bits, regardless of what length these data types have on your machine. The) S
2160 11408 P (reason is that short and long integers are guaranteed to have at least these lengths on all) S
2160 11648 P (machines. Your hardware may allow longer integers \(for example, 36 bits\) but code that) S
2160 11888 P (uses the increased size is not portable to machines with smaller words. For the same) S
2160 12128 P (reason, LINT assumes that all characters are 8-bit signed quantities, even though they) S
2160 12368 P (may be longer or unsigned on your machine.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 20) S 0 12 F
PE
8300 1968 P 8 18 F (Chapter) S 100 J ( 13) S
5780 2448 P 0 12 F 8 18 F B (Extra) S 100 J ( Compiler Warnings) S E
2880 4048 P 0 12 F 8 9 F (In) S 50 J ( addition to the diagnostics produced especially for LINT, the LINT output also contains) S
2880 4288 P (all the error and warning messages produced by the parsing phase of the C compiler.) S
2880 4528 P (Most of these are self-explanatory, but there are a few that deserve further comment.) S
2880 4968 P 0 12 F 0 9 F (Constant) S 108 J ( "CONSTANT" too large for "TYPE".) S
3600 5208 P 0 12 F 8 9 F (As) S 50 J ( noted earlier, LINT assumes short integers are 16 bits long and long integers) S
3600 5448 P (are 32 bits long. Therefore you may get this message, even though a short or) S
3600 5688 P (long integer type on your machine is actually long enough to hold a given) S
3600 5928 P (constant.) S
2880 6368 P 0 12 F 0 9 F (Character) S 108 J ( constant with no characters.) S
3600 6608 P 0 12 F 8 9 F (Some) S 50 J ( compilers do not accept a null character constant. Your compiler may) S
3600 6848 P (accept such constants, but LINT still complains about the construct.) S
2880 7288 P 0 12 F 0 9 F (Constant) S 108 J ( valued logical expression.) S
3600 7528 P 0 12 F 8 9 F (This) S 50 J ( refers to situations like) S
3888 7948 P 0 12 F 0 9 F (while) S 108 J ( \(1\) { ... }) S
2880 8768 P 0 12 F 8 12 F B (Alignment) S 67 J ( Problems) S E
2880 9488 P 0 12 F 8 9 F (In) S 50 J ( addition to the error messages listed above, you may receive the warning) S
3600 9908 P 0 12 F 0 9 F (Possible) S 108 J ( alignment problems with cast) S
2880 10348 P 0 12 F 8 9 F (When) S 50 J ( casting data of one type to data of another, alignment problems may occur. For) S
2880 10588 P (example, there may be difficulties in casting a character pointer to an integer pointer if the) S
2880 10828 P (character pointer is not aimed at a word boundary. At times, however, you may have) S
2880 11068 P (taken pains to make sure that this kind of alignment problem will not occur. In particular,) S
2880 11308 P (you may have created a function that returns a value or pointer that is suitably aligned for) S
2880 11548 P (any use. This is true of functions like ) S 0 12 F 0 9 F (malloc) S 0 12 F 8 9 F (;) S 50 J ( the value that ) S 0 12 F 0 9 F (malloc) S 0 12 F 8 9 F () S 50 J ( returns is officially a) S
2880 11788 P 0 12 F 0 9 F B (void) S E 0 12 F 8 9 F () S 50 J ( ) S 0 12 F 0 9 F B (*) S E 0 12 F 8 9 F () S 50 J ( pointer, but it is suitably aligned to store any sort of data.) S
2880 12228 P (If you have a function that returns a suitably aligned pointer, you can tell LINT by placing) S
3600 12648 P 0 12 F 0 9 F (#pragma) S 108 J ( aligned) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (21) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
2160 1968 P 8 9 F (in) S 50 J ( front of the start of the function declaration. This tells LINT that the function itself deals) S
2160 2208 P (with any alignment problems.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 22) S 0 12 F
PE
8300 1968 P 8 18 F (Chapter) S 100 J ( 14) S
5840 2448 P 0 12 F 8 18 F B (The) S 100 J ( LINT Command Line) S E
2880 4008 P 0 12 F 8 10 F B (Syntax:) S E
3600 4228 P 0 12 F 0 9 F (tlint) S 108 J ( [file] [option]*) S
3600 4648 P (\(+|-\)ControlComments \(-\) \(+|-\)Declarations \(-\)) S
3600 4868 P (\(+|-\)Keep \(-\) \(+|-\)StandardLibrary \(+\)) S
3600 5088 P (\(+|-\)Verbose \(-\) \(+|-\)Wide \(-\)) S
3600 5308 P (Configuration=file CrossReference=keyword) S
3600 5528 P (Define=name=value Include=directory) S
3600 5748 P (Installation=file Library=lib) S
3600 5968 P (libraryName=string Output=file) S
3600 6188 P (Output+=file StandardInclude=directory) S
3600 6408 P (StandardLibrary=name Summary=file) S
3600 6628 P (Target=keyword indeX=file) S
2880 7028 P 0 12 F 8 10 F B (Examples:) S E
3600 7248 P 0 12 F 0 9 F (tlint) S 108 J ( myfile) S
3600 7468 P (tlint x=files o=incls ln=proj def=PROJECT=1) S
2880 7868 P 0 12 F 8 10 F B (Options:) S E
2880 8108 P 0 12 F 0 9 F (file) S
3600 8348 P 0 12 F 8 9 F (is) S 50 J ( a source file containing C code. The other options on the command line) S
3600 8588 P (determine whether LINT scans this file for problem spots, or uses the file to) S
3600 8828 P (create a summary or an entry in a LINT library.) S
2880 9268 P 0 12 F 0 9 F (indeX=file) S
3600 9508 P 0 12 F 8 9 F (gives) S 50 J ( the name of a text file. Each line in this text file should contain the name of) S
3600 9748 P (one C source file. LINT checks each of these source files individually. In) S
3600 9988 P (addition to a source file name, a line in an index file may specify) S
3600 10228 P 0 12 F 0 9 F (ControlComments) S 0 12 F 8 9 F (,) S 50 J ( ) S 0 12 F 0 9 F (Configuration=) S 0 12 F 8 9 F (,) S 50 J ( ) S 0 12 F 0 9 F (Include=) S 0 12 F 8 9 F () S 50 J ( and ) S 0 12 F 0 9 F (Define=) S 0 12 F 8 9 F () S 50 J ( options.) S
3600 10468 P (These options only apply to the source file named on the same line. For) S
3600 10708 P (example, if the line) S
3888 11128 P 0 12 F 0 9 F (myfile) S 108 J ( define=VERSION=1) S
3600 11568 P 0 12 F 8 9 F (appeared) S 50 J ( in an index file, LINT would use the given option when examining) S
3600 11808 P 0 12 F 0 9 F (myfile) S 0 12 F 8 9 F () S 50 J ( but not for other files named in the index file. When processing an index) S
3600 12048 P (line, LINT normally uses all the options appearing on the main command line,) S
3600 12288 P (followed by the options specified on the index line. As a special case, however,) S
3600 12528 P 0 12 F 0 9 F (Include=) S 0 12 F 8 9 F () S 50 J ( options on a line in an index file are used before any ) S 0 12 F 0 9 F (Include=) S
3600 12768 P 0 12 F 8 9 F (options) S 50 J ( on the LINT command line. Only one ) S 0 12 F 0 9 F (indeX=) S 0 12 F 8 9 F () S 50 J ( option may appear on the) S
3600 13008 P (command line.) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (23) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
2160 1968 P 0 9 F (Configuration=file) S
2880 2208 P 0 12 F 8 9 F (specifies) S 50 J ( a configuration file for LINT. For more information on configuration files,) S
2880 2448 P (see below.) S
2160 2888 P 0 12 F 0 9 F (+ControlComments) S
2880 3128 P 0 12 F 8 9 F (indicates) S 50 J ( that control comments of the type) S
3168 3548 P 0 12 F 0 9 F (/*VARARGS*/) S
2880 3988 P 0 12 F 8 9 F (should) S 50 J ( be processed. The default is ) S 0 12 F 0 9 F (-ControlComments) S 0 12 F 8 9 F (,) S 50 J ( in which case such) S
2880 4228 P (comments are ignored. A ) S 0 12 F 0 9 F (ControlComments) S 0 12 F 8 9 F () S 50 J ( option on a line in an index file) S
2880 4468 P (overrides any ) S 0 12 F 0 9 F (ControlComments) S 0 12 F 8 9 F () S 50 J ( option on the main LINT command line.) S
2160 4908 P 0 12 F 0 9 F (CrossReference=keyword) S
2880 5148 P 0 12 F 8 9 F (indicates) S 50 J ( that LINT output should include a cross-reference table that shows) S
2880 5388 P (where symbols are defined, referenced, set, and used. \(By default, cross-) S
2880 5628 P (references are not provided.\) Possible values for the ) S 0 12 F 0 9 F (keyword) S 0 12 F 8 9 F () S 50 J ( are:) S
2880 6068 P 0 12 F 0 9 F (All) S 0 12 F 8 9 F () S 50 J ( - cross-references all symbols;) S
2880 6508 P 0 12 F 0 9 F (External) S 0 12 F 8 9 F () S 50 J ( - only cross-references external symbols.) S
2160 6948 P 0 12 F 0 9 F (+Declarations) S
2880 7188 P 0 12 F 8 9 F (may) S 50 J ( be used when creating a LINT library or summary file. With this option, LINT) S
2880 7428 P (treats every file scope declaration as if it were a definition for the variable, instead) S
2880 7668 P (of a simple reference.) S
2160 8108 P 0 12 F 0 9 F (Define=name=value) S
2880 8348 P 0 12 F 8 9 F (has) S 50 J ( the same effect as) S
3168 8768 P 0 12 F 0 9 F (#define) S 108 J ( name value) S
2880 9208 P 0 12 F 8 9 F (in) S 50 J ( the C source code. The option indicates that ) S 0 12 F 0 9 F ("name") S 0 12 F 8 9 F () S 50 J ( should be replaced with) S
2880 9448 P 0 12 F 0 9 F ("value") S 0 12 F 8 9 F () S 50 J ( \(as text\) wherever it appears in the source code being examined. If) S
2880 9688 P 0 12 F 0 9 F ("value") S 0 12 F 8 9 F () S 50 J ( contains blanks or tab characters, it should be enclosed in double or) S
2880 9928 P (single quotes.) S
2160 10368 P 0 12 F 0 9 F (Include=directory) S
2880 10608 P 0 12 F 8 9 F (is) S 50 J ( the same as the ) S 0 12 F 0 9 F (Include=) S 0 12 F 8 9 F () S 50 J ( option for the C compiler. When LINT tries to find) S
2880 10848 P (quoted include files, as in) S
3168 11268 P 0 12 F 0 9 F (#include) S 108 J ( "file") S
2880 11708 P 0 12 F 8 9 F (it) S 50 J ( begins by searching the given directory for the file. If the file is not found there,) S
2880 11948 P (LINT searches any directory named in ) S 0 12 F 0 9 F (StandardInclude=) S 0 12 F 8 9 F () S 50 J ( options, and finally) S
2880 12188 P (searches the directory that contains the source file being examined. Any number) S
2880 12428 P (of ) S 0 12 F 0 9 F (Include=) S 0 12 F 8 9 F () S 50 J ( options may be specified. Directories are searched in the order) S
2880 12668 P (given on the command line.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 24) S 0 12 F
PE
2880 1968 P 0 9 F (INSTallation=file) S
3600 2208 P 0 12 F 8 9 F (tells) S 50 J ( LINT where to find the installation file. The installation file tells where) S
3600 2448 P (various software components have been installed. For more information, see the) S
3600 2688 P (section on ) S 0 12 F 8 9 F I (Installation) S 50 J ( Files) S E 0 12 F 8 9 F () S 50 J ( below.) S
3600 3128 P (If you do not specify an ) S 0 12 F 0 9 F (INSTallation=) S 0 12 F 8 9 F () S 50 J ( option on the command line, LINT) S
3600 3368 P (checks for an environment variable named ) S 0 12 F 0 9 F (LINT_INST) S 0 12 F 8 9 F () S 50 J ( and uses its value as the) S
3600 3608 P (name of the installation file. If this environment variable does not exist, LINT) S
3600 3848 P (uses the default installation file.) S
2880 4288 P 0 12 F 0 9 F (+Keep) S
3600 4528 P 0 12 F 8 9 F (does) S 50 J ( not delete intermediate files left by the preprocessor and the LINT steps.) S
2880 4968 P 0 12 F 0 9 F (Library=lib) S
3600 5208 P 0 12 F 8 9 F (names) S 50 J ( a LINT library that should be used when checking source code. Any) S
3600 5448 P (number of ) S 0 12 F 0 9 F (Library=) S 0 12 F 8 9 F () S 50 J ( options may appear on the command line. By default,) S
3600 5688 P (LINT automatically includes LINT libraries of standard C functions \(e.g. ) S 0 12 F 0 9 F (printf) S 0 12 F 8 9 F (\)) S
3600 5928 P (so) S 50 J ( that such functions are always recognized.) S
2880 6368 P 0 12 F 0 9 F (libraryName=string) S
3600 6608 P 0 12 F 8 9 F (is) S 50 J ( used when creating a LINT library. See below for more details.) S
2880 7048 P 0 12 F 0 9 F (Output=file) S
3600 7288 P 0 12 F 8 9 F (is) S 50 J ( used when creating a LINT library or summary file \(see below\). The output) S
3600 7528 P (overwrites the file's current contents.) S
2880 7968 P 0 12 F 0 9 F (Output+=file) S
3600 8208 P 0 12 F 8 9 F (is) S 50 J ( the same as ) S 0 12 F 0 9 F (Output=file) S 0 12 F 8 9 F (,) S 50 J ( except that output is written to the end of the) S
3600 8448 P (current contents of the specified file, rather than overwriting what the file already) S
3600 8688 P (holds.) S
2880 9128 P 0 12 F 0 9 F (StandardInclude=directory) S
3600 9368 P 0 12 F 8 9 F (is) S 50 J ( the same as the ) S 0 12 F 0 9 F (StandardInclude=) S 0 12 F 8 9 F () S 50 J ( option for the C compiler. When LINT) S
3600 9608 P (tries to find include files whose names are enclosed in angle brackets, as in) S
3888 10028 P 0 12 F 0 9 F (#include) S 108 J ( <file>) S
3600 10468 P 0 12 F 8 9 F (it) S 50 J ( begins by searching the given directory for the file. If the file is not found there,) S
3600 10708 P (LINT searches directories named in ) S 0 12 F 0 9 F (Include=) S 0 12 F 8 9 F () S 50 J ( options, and finally searches the) S
3600 10948 P (directory that contains the source file being examined. Any number of) S
3600 11188 P 0 12 F 0 9 F (StandardInclude=) S 0 12 F 8 9 F () S 50 J ( options may be specified. Directories are searched in the) S
3600 11428 P (order given on the command line.) S
2880 11868 P 0 12 F 0 9 F (StandardLibrary=name) S
3600 12108 P 0 12 F 8 9 F (asks) S 50 J ( LINT to include the standard library indicated by "name". The following) S
3600 12348 P (names are recognized:) S
3600 12788 P 0 12 F 0 9 F (C) S 0 12 F 8 9 F () S 50 J ( - the standard C library. This is included automatically, unless) S
3600 13028 P 0 12 F 0 9 F (-StandardLibrary) S 0 12 F 8 9 F () S 50 J ( is specified.) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (25) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
2160 1968 P 0 9 F (-StandardLibrary) S
2880 2208 P 0 12 F 8 9 F (does) S 50 J ( not include the standard ) S 0 12 F 0 9 F (C) S 0 12 F 8 9 F () S 50 J ( library routines.) S
2160 2648 P 0 12 F 0 9 F (Summary=file) S
2880 2888 P 0 12 F 8 9 F (states) S 50 J ( that the given file is a summary file that should be used as input to the) S
2880 3128 P (LINT operation. See below for more on summary files.) S
2160 3568 P 0 12 F 0 9 F (Target=keyword) S
2880 3808 P 0 12 F 8 9 F (controls) S 50 J ( the kind of problem-checking you want to do. The following keywords) S
2880 4048 P (are recognized.) S
2880 4488 P 0 12 F 0 9 F (Host) S 0 12 F 8 9 F () S 50 J ( - describes any problems that may arise if the program is run on the host) S
2880 4728 P (machine \(i.e. the machine where you are running LINT\). This is the default.) S
2880 5168 P 0 12 F 0 9 F (Extensions) S 0 12 F 8 9 F () S 50 J ( - points out any extensions to C that might have been used, as well) S
2880 5408 P (as any machine-dependencies in the code. It also describes the problems) S
2880 5648 P (detected with ) S 0 12 F 0 9 F (Target=Host) S 0 12 F 8 9 F (.) S
2880 6088 P 0 12 F 0 9 F (Minimal) S 0 12 F 8 9 F () S 50 J ( - points out any features that may cause problems if you port this) S
2880 6328 P (program to a non-ANSI compiler. This will make note of all ANSI features used.) S
2880 6568 P (It also describes the problems detected with ) S 0 12 F 0 9 F (Target=Extensions) S 0 12 F 8 9 F (.) S
2160 7008 P 0 12 F 0 9 F (+Verbose) S
2880 7248 P 0 12 F 8 9 F (prints) S 50 J ( out the name of the file being examined. The default is ) S 0 12 F 0 9 F (-Verbose) S 0 12 F 8 9 F (.) S
2160 7688 P 0 12 F 0 9 F (+Wide) S
2880 7928 P 0 12 F 8 9 F (prints) S 50 J ( output in a format that is 132 columns wide. The default is ) S 0 12 F 0 9 F (-Wide) S 0 12 F 8 9 F (,) S 50 J ( which) S
2880 8168 P (prints in an 80-column format.) S
2160 8988 P 0 12 F 8 12 F B (Abbreviating) S 67 J ( Options:) S E
2160 9708 P 0 12 F 8 9 F (The) S 50 J ( option keywords given above can be abbreviated by omitting any or all of the letters) S
2160 9948 P (shown in lower case. For example, ) S 0 12 F 0 9 F (CrossReference=All) S 0 12 F 8 9 F () S 50 J ( may be abbreviated to) S
2880 10368 P 0 12 F 0 9 F (crossref=all) S
2880 10588 P (cref=all) S
2880 10808 P (cr=all) S
2880 11028 P (cr=a) S
2160 11468 P 0 12 F 8 9 F (and) S 50 J ( so on. When entering option keywords, you may type letters in upper, lower, or mixed) S
2160 11708 P (case; the use of upper and lower case in this documentation is simply to show what letters) S
2160 11948 P (are and aren't required.) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 26) S 0 12 F
PE
2880 2308 P 8 12 F B (Other) S 67 J ( Ways to Use LINT) S E
2880 3028 P 0 12 F 8 9 F (In) S 50 J ( addition to checking C code for irregularities, LINT can:) S
2880 3468 P (\(a\) Extract a summary file of information that can be used in other LINT operations.) S
2880 3908 P (\(b\) Create a LINT library.) S
2880 4348 P (Summary files and LINT libraries are discussed below.) S
2880 5168 P 0 12 F 8 12 F B (Summary) S 67 J ( Files) S E
2880 5888 P 0 12 F 8 9 F (A) S 50 J ( summary file contains a "summary" of your source code: the names and types of all the) S
2880 6128 P (external variables and functions defined or referenced in the code, plus any other) S
2880 6368 P (information LINT may need when checking the code \(such as the declared types of) S
2880 6608 P (function parameters\). Summary files also record any error messages that might be issued) S
2880 6848 P (by the C compiler when parsing the source code. All of this information is stored in a) S
2880 7088 P (special format that is not directly readable by humans.) S
2880 7528 P (To create a summary file from a normal source code file, use the ) S 0 12 F 0 9 F (Output=file) S 0 12 F 8 9 F () S 50 J ( option,) S
2880 7768 P (as in) S
3600 8188 P 0 12 F 0 9 F (tlint) S 108 J ( src1.c output=summ) S
2880 8628 P 0 12 F 8 9 F (You) S 50 J ( can add more material to the same summary file using ) S 0 12 F 0 9 F (Output+=file) S 0 12 F 8 9 F (,) S 50 J ( as in) S
3600 9048 P 0 12 F 0 9 F (tlint) S 108 J ( src2.c output+=summ) S
2880 9488 P 0 12 F 8 9 F (This) S 50 J ( appends new material to the existing contents of the summary file.) S
2880 9928 P (When LINT creates a Summary file, LINT only summarizes your source code and checks) S
2880 10168 P (for syntax errors. It does not check for such problems as non-portable constructs or type) S
2880 10408 P (mismatches. However, you can run a summary file through LINT again to do standard) S
2880 10648 P (type-checking. For example,) S
3600 11068 P 0 12 F 0 9 F (tlint) S 108 J ( srcfile output=lf) S
3600 11288 P (tlint summ=lf) S
2880 11728 P 0 12 F 8 9 F (creates) S 50 J ( a summary file, then uses the information in the summary file to see if types match) S
2880 11968 P (in symbol references and definitions.) S
2880 12408 P (The reason for creating summary files is the same as the reason for breaking up the) S
2880 12648 P (source code of your program into several source files: it is easier to deal with source code) S
2880 12888 P (in small pieces than in one big hunk. Some users may keep a summary file for every) S
2880 13128 P (source file. If the code in one source file is changed, you can create a summary file from) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (27) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
2160 1968 P 8 9 F (that) S 50 J ( source file, then run all the summary files of the program through LINT to see if the) S
2160 2208 P (change has caused any problems. This is much faster than using LINT on all the raw) S
2160 2448 P (source code.) S
2160 3268 P 0 12 F 8 12 F B (LINT) S 67 J ( Libraries) S E
2160 3988 P 0 12 F 8 9 F (A) S 50 J ( LINT library is similar to a summary file, in that it contains a summary of C source code.) S
2160 4228 P (However, LINT libraries are intended to parallel the way that object libraries work.) S
2160 4668 P (To create a LINT library, specify both the ) S 0 12 F 0 9 F (Output=) S 0 12 F 8 9 F () S 50 J ( option and the ) S 0 12 F 0 9 F (libraryName=) S 0 12 F 8 9 F () S 50 J ( option) S
2160 4908 P (on the LINT command line. For example,) S
2880 5328 P 0 12 F 0 9 F (tlint) S 108 J ( file output=mylib libname="abc") S
2160 5768 P 0 12 F 8 9 F (creates) S 50 J ( a LINT library named ) S 0 12 F 0 9 F (abc) S 0 12 F 8 9 F () S 50 J ( in the file ) S 0 12 F 0 9 F (mylib) S 0 12 F 8 9 F (.) S 50 J ( This name is used in LINT diagnostic) S
2160 6008 P (messages related to symbols found in the LINT library. Using LINT in this way only) S
2160 6248 P (generates minimal messages; full messages are printed when you actually use the LINT) S
2160 6488 P (library.) S
2160 6928 P (To use a LINT library, specify the ) S 0 12 F 0 9 F (Library=) S 0 12 F 8 9 F () S 50 J ( option on the LINT command line, as in) S
2880 7348 P 0 12 F 0 9 F (tlint) S 108 J ( myfile library=mylib) S
2160 7788 P 0 12 F 8 9 F (When) S 50 J ( LINT finds that ) S 0 12 F 0 9 F (myfile) S 0 12 F 8 9 F () S 50 J ( contains a reference to an undefined symbol, LINT checks) S
2160 8028 P (the information in the given LINT library to see if the symbol is defined there. This works) S
2160 8268 P (just like compiling a module while referring to an object library. No error occurs if a symbol) S
2160 8508 P (in the LINT library has the same name as a symbol in the source file; the source file) S
2160 8748 P (symbol is the one that is used.) S
2160 9188 P (Functions should only be placed in a LINT library when you are sure they contain no) S
2160 9428 P (errors. LINT does not look for errors when it is creating a LINT library.) S
2160 10248 P 0 12 F 8 12 F B (Review) S 67 J ( of Inputs and Outputs) S E
2160 10968 P 0 12 F 8 9 F (To) S 50 J ( specify a file as an input, simply give the file's name. To specify a summary file as) S
2160 11208 P (input, use ) S 0 12 F 0 9 F (Summary=file) S 0 12 F 8 9 F (.) S 50 J ( To specify a LINT library as input, use ) S 0 12 F 0 9 F (Library=file) S 0 12 F 8 9 F (.) S 50 J ( LINT) S
2160 11448 P (uses all of the contents of a source file or a summary file; it only uses library entries if they) S
2160 11688 P (are referenced by source code or a summary file.) S
2160 12128 P (An index file contains partial command lines to be used by LINT in its operations. These) S
2160 12368 P (command lines can name source files as input, but not summary files or LINT libraries.) S
2160 12808 P (When both an ) S 0 12 F 0 9 F (Output=) S 0 12 F 8 9 F () S 50 J ( and ) S 0 12 F 0 9 F (libraryName=) S 0 12 F 8 9 F () S 50 J ( option are specified, LINT creates a LINT) S
2160 13048 P (library. If only ) S 0 12 F 0 9 F (Output=) S 0 12 F 8 9 F () S 50 J ( is specified, LINT creates a summary file. If ) S 0 12 F 0 9 F (Output=) S 0 12 F 8 9 F () S 50 J ( is not) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 28) S 0 12 F
PE
2880 1968 P 8 9 F (specified,) S 50 J ( LINT examines a source file or summary file for problem spots and writes its) S
2880 2208 P (diagnostics to the standard output.) S
2880 3028 P 0 12 F 8 12 F B (Multiple) S 67 J ( Definitions) S E
2880 3748 P 0 12 F 8 9 F (If) S 50 J ( LINT finds two definitions for the same function or external variable, it always outputs a) S
2880 3988 P (diagnostic message. If the two definitions are both in normal source code, LINT arbitrarily) S
2880 4228 P (chooses the first definition it finds as the "correct" definition, and issues diagnostics for any) S
2880 4468 P (later deviations from this definition. If one of the two definitions is in a LINT library and the) S
2880 4708 P (other is in normal source code, LINT chooses the non-library version as the "correct") S
2880 4948 P (definition. In this way, a definition in normal source code overrides a library definition.) S
2880 5768 P 0 12 F 8 12 F B (Configuration) S 67 J ( Files) S E
2880 6488 P 0 12 F 8 9 F (A) S 50 J ( configuration file consists of a series of directives that control the behavior of LINT. The) S
2880 6728 P (possible directives are explained below.) S
2880 7168 P 0 12 F 0 9 F (define) S 108 J ( name string) S
3600 7408 P 0 12 F 8 9 F (has) S 50 J ( the same format and purpose as a ) S 0 12 F 0 9 F B (#define) S E 0 12 F 8 9 F () S 50 J ( directive in normal C code. It) S
3600 7648 P (creates a manifest or macro with the given value.) S
2880 8088 P 0 12 F 0 9 F (inline) S 108 J ( includefile) S
3600 8328 P 0 12 F 8 9 F (lets) S 50 J ( you simulate an include file. When LINT finds an ) S 0 12 F 0 9 F (inline) S 0 12 F 8 9 F () S 50 J ( directive, it begins) S
3600 8568 P (to gather input lines up until the first line consisting of only a ) S 0 12 F 0 9 F ('#') S 0 12 F 8 9 F () S 50 J ( character. For) S
3600 8808 P (example, in) S
3888 9228 P 0 12 F 0 9 F (inline) S 108 J ( sim.h) S
3888 9448 P (extern int junk1;) S
3888 9668 P (extern int junk2;) S
3888 9888 P (#) S
3600 10328 P 0 12 F 8 9 F (LINT) S 50 J ( collects the two declarations and associates them with the name ) S 0 12 F 0 9 F ("sim.h") S 0 12 F 8 9 F (.) S
3600 10568 P (If) S 50 J ( a program contains the directive,) S
3888 10988 P 0 12 F 0 9 F (#include) S 108 J ( <sim.h>) S
3600 11428 P 0 12 F 8 9 F (LINT) S 50 J ( takes the gathered text and includes it at that point in the program, as if it) S
3600 11668 P (had come from an included file.) S
2880 12108 P 0 12 F 0 9 F (map) S 108 J ( includename1 includename2) S
3600 12348 P 0 12 F 8 9 F (says) S 50 J ( that all references of the form) S
3888 12768 P 0 12 F 0 9 F (#include) S 108 J ( includename1) S
2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2880 14800 P 0 12 F 24 10 F (29) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F
PE
2880 1968 P 8 9 F (should) S 50 J ( be converted to) S
3168 2388 P 0 12 F 0 9 F (#include) S 108 J ( includename2) S
2160 2828 P (null includefile) S
2880 3068 P 0 12 F 8 9 F (tells) S 50 J ( LINT to ignore all ) S 0 12 F 0 9 F (#include) S 0 12 F 8 9 F () S 50 J ( directives that attempt to include the specified) S
2880 3308 P (file.) S
2160 3748 P 0 12 F 0 9 F (search) S 108 J ( pathname) S
2880 3988 P 0 12 F 8 9 F (is) S 50 J ( equivalent to ) S 0 12 F 0 9 F (Include=pathname) S 0 12 F 8 9 F () S 50 J ( on the LINT command line.) S
2160 4428 P 0 12 F 0 9 F (system_search) S 108 J ( pathname) S
2880 4668 P 0 12 F 8 9 F (is) S 50 J ( equivalent to ) S 0 12 F 0 9 F (StandardInclude=pathname) S 0 12 F 8 9 F () S 50 J ( on the LINT command line.) S
2160 5068 P 0 12 F 8 10 F B (Installation) S 56 J ( Files:) S E
2160 5308 P 0 12 F 8 9 F (An) S 50 J ( installation file specifies the pathnames for software and data files used by LINT.) S
2160 5548 P (Installation files are text files made up of comment lines and option lines.) S
2160 6008 P (Comment lines:) S
2880 6248 P (Any line whose first non-blank character is ) S 0 12 F 0 9 F (#) S 0 12 F 8 9 F () S 50 J ( will be taken as a comment. Blank) S
2880 6488 P (lines are also considered comments.) S
2160 6948 P (Option lines:) S
2880 7188 P (Option lines have the format) S
2880 7608 P 0 12 F 0 9 F (Keyword=pathname) S
2880 8048 P 0 12 F 8 9 F (In) S 50 J ( this documentation, keywords are written with some letters in upper case and) S
2880 8288 P (some in lower case. You may abbreviate keywords by omitting any or all of the) S
2880 8528 P (letters shown in lower case. The remaining letters may be entered in either) S
2880 8768 P (upper or lower case; the documentation simply uses upper case to show which) S
2880 9008 P (characters may not be omitted.) S
2160 9448 P (In this version of LINT, possible option lines are:) S
2160 9888 P 0 12 F 0 9 F (Include=pathname) S
2880 10128 P 0 12 F 8 9 F (gives) S 50 J ( the directory containing the LINT include files.) S
2160 10568 P 0 12 F 0 9 F (Library=pathname) S
2880 10808 P 0 12 F 8 9 F (gives) S 50 J ( the directory containing the LINT libraries.) S
2160 11248 P 0 12 F 0 9 F (Program=pathname) S
2880 11488 P 0 12 F 8 9 F (gives) S 50 J ( the directory containing the LINT executable files \(CPP, and so on\).) S
2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S
2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 30) S 0 12 F