home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tlint1_0.zip / tlint1_0 / doc / lnt10man.ps < prev    next >
Text File  |  1995-12-07  |  97KB  |  1,269 lines

  1. %!PS-Adobe-2.0 ExitServer
  2. %%Title: Microsoft Word Driver Prolog
  3. %%Creator: Microsoft
  4. %%CreationDate: Fri Aug 18 1988
  5. %%BeginDocument: Microsoft Word 5.0 0
  6. %%msinifile: POSTSCRP
  7. %%EndComments
  8. %%BeginExitServer: 0
  9.  userdict /msinifile known 
  10.  {msinifile (POSTSCRP) eq {stop} if} if
  11.  serverdict begin 0 exitserver
  12.  userdict /msorigstate known {msorigstate restore} if
  13.  save /msorigstate exch def
  14.  /msinifile (POSTSCRP) def
  15. %%EndExitServer
  16.  
  17. %%BeginFont: mslinedraw
  18. /mslinedraw 25 dict def
  19. /PSl {msdict begin /ptop 612 def /sw 0 def
  20.  /ftsz 12 def /smode 0 def /STh -3.6 def /fs 0 def /offset 0 def fonttable 1 get fontset E 90 rotate 0 -612 translate save statusdict begin /waittimeout 360 def end} def
  21. /PSp {msdict begin /ptop 792 def /sw 0 def
  22.  /ftsz 12 def /smode 0 def /STh -3.6 def /fs 0 def /offset 0 def fonttable 1 get fontset E save statusdict begin /waittimeout 360 def end} def
  23. mslinedraw begin
  24. /FontType 3 def
  25. /FontMatrix [1.0 30.0 div 0 0 1.0 30.0 div 0 0] def
  26. /FontBBox [0 -8 18 30] def
  27. /Encoding 256 array def
  28. 0 1 255 {Encoding exch /.notdef put} for
  29. Encoding 45 [
  30.  /sp   /sh   /sh /light /med /dark
  31.  /sv   /srj  /sdjr /dsjr /sdtr /dstr /djr  /dv
  32.  /dtr  /dbr  /sdbr /dsbr /str  /sbl  /sjb  /sjt
  33.  /sjl  /sh   /sjc  /sdjl /dsjl /dbl  /dtl  /djb
  34.  /djt  /djl  /dh   /djc  /dsjb /sdjb /dsjt /sdjt
  35.  /sdbl /dsbl /dstl /sdtl  /sdjc /dsjc /sbr  /stl
  36.  /black /bb /bl /br /bt] putinterval
  37.  
  38. /a {moveto lineto stroke} bind def
  39. /b {moveto lineto lineto stroke} bind def
  40. /c {moveto 9 7 lineto stroke} bind def
  41. /d {moveto lineto lineto} bind def
  42. /e {lineto closepath fill} bind def
  43. /f {7 30 7 9 0 9 b} def
  44. /g {12 30 12 9 18 9 b} def
  45. /h {7 -8 7 5 0 5 b} def
  46. /i {12 -8 12 5 18 5 b} def
  47. /j {0 7 18 7 a} def
  48. /k {9 22 9 -8 a} def
  49. /l {0 5 18 5 a 0 9 18 9 a} def
  50. /m {7 22 7 -8 a 12 22 12 -8 a} def
  51. /n {0 -8 18 -8 18 22 d 0 22 e} def
  52.  
  53. /CharProcs 55 dict def
  54. CharProcs begin
  55. /.notdef {} def
  56. /sp { 1 1 moveto } def
  57. /sv {k} def
  58. /srj {k 0 7 c} def
  59. /sdjr {k 0 5 9 5 a 0 9 9 9 a} def
  60. /dsjr {m 0 7 7 7 a} def
  61. /sdtr {0 7 12 7 12 -8 b 7 7 7 -8 a} def
  62. /dstr {0 9 9 9 9 -8 b 0 5 9 5 a} def
  63. /djr {f h 12 -8 12 22 a} def
  64. /dv {m} def
  65. /dtr {h 0 9 12 9 12 -8 b} def
  66. /dbr {f  0 5 12 5 12 30 b} def
  67. /sdbr {0 7 12 7 12 30 b 7 7 7 30 a} def
  68. /dsbr {0 5 9 5 9 30 b 0 9 9 9 a} def
  69. /str {0 7 9 7 9 -8 b} def
  70. /sbl {9 30 9 7 18 7 b} def
  71. /sjb {j 9 30 c} def
  72. /sjt {j 9 -8 c} def
  73. /sjl {k 18 7 c} def
  74. /sh {j} def
  75. /sjc {j k} def
  76. /sdjl {k 9 9 18 9 a 9 5 18 5 a} def
  77. /dsjl {m 12 7 18 7 a} def
  78. /dbl {g 7 30 7 5 18 5 b} def
  79. /dtl {i 7 -8 7 9 18 9 b} def
  80. /djb {f g 0 5 18 5 a} def
  81. /djt {h i 0 9 18 9 a} def
  82. /djl {g i 7 -8 7 22 a} def
  83. /dh {l} def
  84. /djc {f g h i} def
  85. /dsjb {l 9 30 9 9 a} def
  86. /sdjb {j 7 7 7 30 a 12 7 12 30 a} def
  87. /dsjt {l 9 -8 9 5 a} def
  88. /sdjt {j 7 7 7 -8 a 12 7 12 -8 a} def
  89. /sdbl {7 30 7 7 18 7 b 12 30 12 7 a} def
  90. /dsbl {9 30 9 5 18 5 b 9 9 18 9 a} def
  91. /dstl {9 -8 9 9 18 9 b 9 5 18 5 a} def
  92. /sdtl {7 -8 7 7 18 7 b 12 -8 12 7 a} def
  93. /sdjc {m j} def
  94. /dsjc {l k} def
  95. /sbr {0 7 9 7 9 30 b} def
  96. /stl {9 -8 9 7 18 7 b} def
  97. /light {0.90 setgray n} def
  98. /med {0.60 setgray n} def
  99. /dark {0.30 setgray n} def
  100. /black {n} def
  101. /bt {0 7 18 7 18 22 d 0 22 e} def
  102. /bb {0 -8 18 -8 18 7 d 0 7 e} def
  103. /bl {0 -8 9 -8 9 22 d 0 22 e} def
  104. /br {9 -8 18 -8 18 22 d 9 22 e} def
  105. end %CharProcs
  106.  
  107. /BuildChar
  108.   { fs 1 and 0 eq {1} {3} ifelse setlinewidth
  109.     18 0 setcharwidth
  110.     exch begin
  111.      Encoding exch get
  112.      CharProcs exch get
  113.      exec
  114.     end
  115.   } def
  116. end %mslinedraw
  117. %%EndFont
  118.  
  119. %%BeginProcSet: msdict 1.0 0
  120. /msdict 100 dict def
  121. FontDirectory /LineDraw known not
  122.  {/LineDraw mslinedraw definefont pop} if
  123. msdict begin
  124. /SLL {/LL def} def
  125. /P {exch msu exch msu neg ptop add moveto} bind def
  126. /S {sw 0 32 4 -1 roll widthshow} bind def
  127. /C {1 string dup 0 4 -1 roll put S} bind def
  128. /J {msu ( ) stringwidth pop sub /sw exch def} bind def
  129. /PE {showpage ptop exch restore save exch /ptop exch def} bind def
  130. /SFL {msu /ptop exch def} bind def
  131. %%BeginModelCheck
  132.  statusdict begin
  133.  product (OmniLaser) eq
  134. {
  135. end
  136. /B1 {statusdict begin 0 setpapertray end} def
  137. /B2 {statusdict begin 1 setpapertray end} def
  138. }{
  139. end
  140. /B1 {statusdict begin 1 setpapertray end} def
  141. /B2 {statusdict begin 2 setpapertray end} def
  142. } ifelse
  143. %%EndModelCheck
  144. /MB {statusdict begin /manualfeed true store end} def
  145. /ME {statusdict begin /manualfeed false store end} def
  146. /B {fs 2 and 0 eq {Bft} {BIft} ifelse
  147.  ftsz scalefont setfont fs 1 or /fs exch def} bind def
  148. /E {Eft ftsz scalefont setfont /fs 0 def} bind def
  149. /I {fs 1 and 0 eq {Ift} {BIft} ifelse
  150.  ftsz scalefont setfont fs 2 or /fs exch def} bind def
  151. /BI {BIft ftsz scalefont setfont fs 
  152.  2 or 1 or /fs exch def} bind def
  153. /LU {currentpoint /uy exch def /ux exch def 1 ssm} bind def
  154. /LD {currentpoint /uy exch def /ux exch def 2 ssm} bind def
  155. /LS {currentpoint /uy exch def /ux exch def 4 ssm} bind def
  156. /LL {currentpoint /uy exch def /ux exch def /ldmode exch def 8 ssm} bind def
  157. /LE {smode 1 and 0 ne {false (_) ul} if
  158.       smode 2 and 0 ne {true (_) ul} if
  159.       smode 4 and 0 ne {false (\352) ul} if
  160.       smode 8 and 0 ne {ux uy ldot pop pop} if
  161.   not smode and /smode exch def} bind def
  162. /BD {STh ssc} def
  163. /BU {STh neg ssc} def
  164. /BN {0 ssy neg rmoveto} def
  165. /F {/ftsz exch def (-) stringwidth pop 2 div neg /STh exch def
  166.  /ftcd exch def 
  167.  0 2 fonttable length 1 sub
  168.    {dup fonttable exch get ftcd eq
  169.      {1 add fonttable exch get fontset exit}{pop}ifelse
  170.    }for
  171.  E} bind def
  172. /msfindfont {dup FontDirectory exch known not {pop /Courier} if findfont} def
  173. /fontset {dup 0 get msfindfont /Eft exch def
  174.           dup 1 get msfindfont /Bft exch def
  175.           dup 2 get msfindfont /Ift exch def
  176.           3 get msfindfont /BIft exch def
  177.          }def
  178. /msu {20 div} def
  179. /ssc {dup /ssy exch def 0 exch rmoveto} bind def
  180. /ssm {dup smode or /smode exch def} bind def
  181. /Cf {/Eft /Courier  findfont def /Bft /Courier-Bold findfont def /Ift /Courier-Oblique findfont def /BIft /Courier-BoldOblique findfont def} def
  182. /DUL {cc true charpath pathbbox newpath exch pop 2 index 2 index moveto cx1 4 -1 roll sub dup 0 rlineto 3 1 roll exch
  183. sub 0 exch rlineto neg 0 rlineto closepath fill} bind def
  184. /ul {gsave /cc exch def currentpoint pop /cx1 exch def ux uy moveto DUL {grestore gsave ux uy 2.4 sub moveto DUL} if
  185. grestore} bind def
  186. /PSe {restore end currentfile closefile} bind def
  187. /ldot {gsave 2 copy currentpoint /y exch def /x exch def
  188.  newpath
  189.  ldmode 0 eq {/offset 0 def 1 setlinewidth [1 7] 4 setdash}
  190.  {ldmode 1 eq {[6 2] 6 setdash /offset STh def .2 setlinewidth}
  191.  {ldmode 2 eq {[] 0 setdash /offset 1.4 def .2 setlinewidth} if}
  192.  ifelse} ifelse
  193.  offset sub moveto x y offset sub lineto stroke grestore} bind def
  194. /Ccs /Courier findfont /CharStrings get def
  195.  
  196. % /OrigName /NewName vector ReEncodeSmall
  197. /ReEncodeSmall { %def
  198.   exch findfont begin
  199.   currentdict dup length dict begin
  200.     { 1 index /FID ne {def} {pop pop} ifelse } forall
  201.     /FontName exch def
  202.     /Encoding foreignvec def
  203.   currentdict dup end end
  204.   /FontName get exch definefont pop
  205. } bind def
  206. /Foreign { ReEncodeSmall } def
  207.  
  208. /foreignvec StandardEncoding 256 array copy def
  209. % the following are differences from StandardEncoding.
  210. % Sequential entries do not require indices:
  211. 0 [ 39/quotesingle 96/grave
  212. 128/Ccedilla/udieresis/eacute/acircumflex/adieresis
  213. /agrave/aring/ccedilla/ecircumflex/edieresis
  214. /egrave/idieresis/icircumflex/igrave/Adieresis
  215. /Aring/Eacute/ae/AE/ocircumflex
  216. /odieresis/ograve/ucircumflex/ugrave/ydieresis
  217. /Odieresis/Udieresis/cent/sterling/yen/P/florin/aacute
  218. /iacute/oacute/uacute/ntilde/Ntilde/ordfeminine
  219. /ordmasculine/questiondown/.notdef/.notdef
  220. /.notdef/.notdef/exclamdown/guillemotleft/guillemotright
  221. /Aacute/Acircumflex/Agrave/Atilde/Ecircumflex/Edieresis
  222. /Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute
  223. /Ocircumflex/Ograve/Otilde/Uacute/Ucircumflex/Ugrave
  224. /Scaron/Ydieresis/emdash/Zcaron/.notdef/otilde/scaron/zcaron
  225. /fraction/section/currency/quotesingle/quotedblleft
  226. /guilsinglleft/guilsinglright/.notdef/.notdef/endash/dagger/daggerdbl
  227. /paragraph/quotesinglbase/quotedblbase/quotedblright
  228. /ellipsis/.notdef/grave/acute/circumflex/tilde/macron
  229. /germandbls/breve/dotaccent/dieresis/cedilla/.notdef/hungarumlaut
  230. /ogonek/caron/emdash/Lslash/Oslash/dotlessi/lslash/oslash
  231. /.notdef/.notdef/.notdef/.notdef/.notdef/atilde
  232. /.notdef/.notdef/ring/bullet/periodcentered/.notdef/.notdef
  233. /.notdef/.notdef/.notdef
  234. ] { %forall
  235.   dup type /nametype eq { %ifelse
  236.     dup Ccs exch known not {pop /.notdef} if
  237.     foreignvec 2 index 2 index put
  238.     pop 1 add
  239.   }{ exch pop } ifelse
  240. } forall pop
  241.  
  242. %BeginMakeForeign
  243. /Courier /Courier-F Foreign
  244. /Courier-Bold /Courier-Bold-F Foreign
  245. /Courier-Oblique /Courier-Oblique-F Foreign
  246. /Courier-BoldOblique /Courier-BoldOblique-F Foreign
  247. /Helvetica /Helvetica-F Foreign
  248. /Helvetica-Bold /Helvetica-Bold-F Foreign
  249. /Helvetica-Oblique /Helvetica-Oblique-F Foreign
  250. /Helvetica-BoldOblique /Helvetica-BoldOblique-F Foreign
  251. /AvantGarde-Book /AvantGarde-Book-F Foreign
  252. /AvantGarde-Demi /AvantGarde-Demi-F Foreign
  253. /AvantGarde-BookOblique /AvantGarde-BookOblique-F Foreign
  254. /AvantGarde-DemiOblique /AvantGarde-DemiOblique-F Foreign
  255. FontDirectory /Helvetica-Condensed known
  256. {
  257. /Helvetica-Condensed /Helvetica-Narrow-F Foreign
  258. /Helvetica-Condensed-Bold /Helvetica-Narrow-Bold-F Foreign
  259. /Helvetica-Condensed-Oblique /Helvetica-Narrow-Oblique-F Foreign
  260. /Helvetica-Condensed-BoldObl /Helvetica-Narrow-BoldOblique-F Foreign
  261. }{
  262. /Helvetica-Narrow /Helvetica-Narrow-F Foreign
  263. /Helvetica-Narrow-Bold /Helvetica-Narrow-Bold-F Foreign
  264. /Helvetica-Narrow-Oblique /Helvetica-Narrow-Oblique-F Foreign
  265. /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-BoldOblique-F Foreign
  266. } ifelse
  267. /Bookman-Light /Bookman-Light-F Foreign
  268. /Bookman-Demi /Bookman-Demi-F Foreign
  269. /Bookman-LightItalic /Bookman-LightItalic-F Foreign
  270. /Bookman-DemiItalic /Bookman-DemiItalic-F Foreign
  271. /Times-Roman /Times-Roman-F Foreign
  272. /Times-Bold /Times-Bold-F Foreign
  273. /Times-Italic /Times-Italic-F Foreign
  274. /Times-BoldItalic /Times-BoldItalic-F Foreign
  275. /NewCenturySchlbk-Roman /NewCenturySchlbk-Roman-F Foreign
  276. /NewCenturySchlbk-Bold /NewCenturySchlbk-Bold-F Foreign
  277. /NewCenturySchlbk-Italic /NewCenturySchlbk-Italic-F Foreign
  278. /NewCenturySchlbk-BoldItalic /NewCenturySchlbk-BoldItalic-F Foreign
  279. /Palatino-Roman /Palatino-Roman-F Foreign
  280. /Palatino-Bold /Palatino-Bold-F Foreign
  281. /Palatino-Italic /Palatino-Italic-F Foreign
  282. /Palatino-BoldItalic /Palatino-BoldItalic-F Foreign
  283. /ZapfChancery-MediumItalic /ZapfChancery-MediumItalic-F Foreign
  284. %EndMakeForeign
  285.  
  286. /fonttable
  287.  [0 [/Courier-F /Courier-Bold-F /Courier-Oblique-F /Courier-BoldOblique-F]
  288.  8 [/Helvetica-F /Helvetica-Bold-F /Helvetica-Oblique-F /Helvetica-BoldOblique-F]
  289.  9 [/AvantGarde-Book-F /AvantGarde-Demi-F /AvantGarde-BookOblique-F /AvantGarde-DemiOblique-F]
  290.  10 [/Helvetica-Narrow-F /Helvetica-Narrow-Bold-F /Helvetica-Narrow-Oblique-F /Helvetica-Narrow-BoldOblique-F]
  291.  16 [/Bookman-Light-F /Bookman-Demi-F /Bookman-LightItalic-F /Bookman-DemiItalic-F]
  292.  24 [/Times-Roman-F /Times-Bold-F /Times-Italic-F /Times-BoldItalic-F]
  293.  25 [/NewCenturySchlbk-Roman-F /NewCenturySchlbk-Bold-F /NewCenturySchlbk-Italic-F /NewCenturySchlbk-BoldItalic-F]
  294.  26 [/Palatino-Roman-F /Palatino-Bold-F /Palatino-Italic-F /Palatino-BoldItalic-F]
  295.  50 [/ZapfChancery-MediumItalic-F /ZapfChancery-MediumItalic-F /ZapfChancery-MediumItalic-F /ZapfChancery-MediumItalic-F]
  296.  56 [/Symbol /Symbol /Symbol /Symbol]
  297.  57 [/LineDraw /LineDraw /LineDraw /LineDraw]
  298.  60 [/ZapfDingbats /ZapfDingbats /ZapfDingbats 
  299. /ZapfDingbats] 
  300. ] def
  301.  
  302. %BeginGraphicsDefs
  303. /M {moveto}  def
  304. /L {lineto} def
  305. /LH {currentpoint exch pop lineto} def
  306. /LV {currentpoint pop exch lineto} def
  307. /R {3 index 1 index 1 index 5 index 5 index 1 index M L L L closepath pop pop} def
  308. /setpat {setscreen 100 div setgray} def
  309. /setgrayed {{dup mul exch dup mul add 1 exch sub} setpat} def
  310. /setbar {{pop} setpat} def
  311. /setcross {{2 copy gt {pop} {exch pop} ifelse} setpat} def
  312. /fi {1 -1 scale} def
  313. /II1 {save count /mscount exch def} def
  314. /II2 {userdict begin /showpage {} def /letter {} def
  315.   /legal {} def /a4 {} def /b5 {} def
  316.   /clear { {cleartomark count msdict /mscount get eq {exit} if} loop mark} def
  317.    mark} def
  318. /IT {pop restore} def
  319. /IX {exch msu exch msu neg ptop add translate} def
  320. /IS {div 3 1 roll div exch scale} def
  321.  
  322. save /msdictstate exch def
  323. %!PS-Adobe-2.0 
  324. PSp 15840 SFL 
  325. 7740 1968 P 8 18 F B (Thinkage) S 100 J ( Ltd.) S E 
  326. 6100 2448 P B (LINT Reference Manual) S E 
  327. 2880 8448 P 0 12 F 8 9 F (Last) S 50 J ( Revision: November 11, 1995) S 0 12 F 
  328. PE 
  329. PE 
  330. 7040 2448 P 8 18 F B (Table) S 100 J ( of Contents) S E 
  331. 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 
  332. 2880 5368 P B (2.) S 67 J ( LINT Directives) S 0 LL 5054 J ( ) S LE (2) S E 
  333. 2880 6268 P B (3.) S 67 J ( LINT Output) S 0 LL 5411 J ( ) S LE (3) S E 
  334. 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 
  335. 3168 7268 P B (Output) S 50 J ( Grouping) S 0 LL 5362 J ( ) S LE (4) S E 
  336. 3168 7648 P B (Type) S 50 J ( Information) S 0 LL 5352 J ( ) S LE (6) S E 
  337. 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 
  338. 2880 9208 P B (5.) S 67 J ( Unused Definitions and Declarations) S 0 LL 2612 J ( ) S LE (8) S E 
  339. 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 
  340. 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 
  341. 2880 11388 P B (7.) S 67 J ( Unreachable Code) S 0 LL 4561 J ( ) S LE (10) S E 
  342. 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 
  343. 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 
  344. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  345. 2880 14800 P 0 12 F 24 10 F (Table) S 50 J ( of Contents) S 5709 J ( i) S 0 12 F 
  346. PE 
  347. 2448 1968 P 8 9 F B (Ignoring) S 50 J ( Return Values) S 0 LL 4732 J ( ) S LE (12) S E 
  348. 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 
  349. 2160 3528 P B (10.) S 67 J ( Function Declarations) S 0 LL 4013 J ( ) S LE (15) S E 
  350. 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 
  351. 2448 4528 P B (The) S 50 J ( #pragma argsused Directive) S 0 LL 3932 J ( ) S LE (17) S E 
  352. 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 
  353. 2160 6088 P B (12.) S 67 J ( Miscellaneous Notes) S 0 LL 4161 J ( ) S LE (20) S E 
  354. 2160 6988 P B (13.) S 67 J ( Extra Compiler Warnings) S 0 LL 3667 J ( ) S LE (21) S E 
  355. 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 
  356. 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 
  357. 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 
  358. 2448 9268 P B (Other) S 50 J ( Ways to Use LINT) S 0 LL 4662 J ( ) S LE (27) S E 
  359. 2448 9648 P B (Summary) S 50 J ( Files) S 0 LL 5432 J ( ) S LE (27) S E 
  360. 2448 10028 P B (LINT) S 50 J ( Libraries) S 0 LL 5502 J ( ) S LE (28) S E 
  361. 2448 10408 P B (Review) S 50 J ( of Inputs and Outputs) S 0 LL 4172 J ( ) S LE (28) S E 
  362. 2448 10788 P B (Multiple) S 50 J ( Definitions) S 0 LL 5052 J ( ) S LE (29) S E 
  363. 2448 11168 P B (Configuration) S 50 J ( Files) S 0 LL 5072 J ( ) S LE (29) S E 
  364. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  365. 2160 14800 P 0 12 F 24 10 F (ii) S 5653 J ( Table) S 50 J ( of Contents) S 0 12 F 
  366. PE 
  367. 8500 1968 P 8 18 F (Chapter) S 100 J ( 1) S 
  368. 7980 2448 P 0 12 F 8 18 F B (Introduction) S E 
  369. 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 
  370. 2880 4288 P (code.  When LINT was first implemented, its primary function was locating bugs and) S 
  371. 2880 4528 P (inefficiencies.  However, as the C programming language spread to a variety of machines) S 
  372. 2880 4768 P (and systems, LINT was enhanced to locate deviations from the strict definition of C.) S 
  373. 2880 5208 P (The ANSI standard for C now provides the "official" definition of C.  However, the ANSI) S 
  374. 2880 5448 P (standard does not entirely describe the behavior of C implementations, because the) S 
  375. 2880 5688 P (standard allows certain operations to be performed in a system-dependent way.  If a) S 
  376. 2880 5928 P (program is written in conformance with the ANSI standard, avoiding such system-) S 
  377. 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 
  378. 2880 6608 P (Ideally,) S 50 J ( all programs should be written in Strict C, since these programs are maximally) S 
  379. 2880 6848 P (portable.  One of the major functions of LINT is to detect code constructs which do not) S 
  380. 2880 7088 P (conform with Strict C.  Such constructs are often valid and can be used in working) S 
  381. 2880 7328 P (programs, but they are not truly portable and may be indications of loose programming) S 
  382. 2880 7568 P (style.  LINT shows where you have written non-portable code; for portability, you should) S 
  383. 2880 7808 P (try to remove such code.) S 
  384. 2880 8248 P (Before we begin, we should note that it is inevitable that LINT will miss some problems) S 
  385. 2880 8488 P (and will also complain about code that turns out to be valid.  The designers have tried to) S 
  386. 2880 8728 P (chart a course between too much laxness \(which may miss significant irregularities\) and) S 
  387. 2880 8968 P (too much nit-picking \(which produces quantities of irrelevant output that you will likely) S 
  388. 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 
  389. 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 
  390. 2880 9688 P (LINT from time to time, the majority of material that LINT locates should deserve the) S 
  391. 2880 9928 P (programmer's attention.) S 
  392. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  393. 2880 14800 P 0 12 F 24 10 F (1) S 4315 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  394. PE 
  395. 7780 1968 P 8 18 F (Chapter) S 100 J ( 2) S 
  396. 6740 2448 P 0 12 F 8 18 F B (LINT) S 100 J ( Directives) S E 
  397. 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 
  398. 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 
  399. 2160 4528 P (format:) S 
  400. 2880 4948 P 0 12 F 0 9 F (#pragma) S 108 J ( aligned) S 
  401. 2880 5168 P (#pragma argsused) S 
  402. 2880 5388 P (#pragma notreached) S 
  403. 2880 5608 P (#pragma optresult) S 
  404. 2880 5828 P (#pragma used) S 
  405. 2880 6048 P (#pragma varargs) S 
  406. 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 
  407. 2160 6728 P (provide more meaningful diagnostic messages.  The usage of each LINT directive is) S 
  408. 2160 6968 P (explained later in the manual.) S 
  409. 2160 7408 P (ANSI C compilers should not reject these special LINT directives; the ANSI standard says) S 
  410. 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 
  411. 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 
  412. 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 
  413. 2160 8368 P 0 12 F 0 9 F B (#pragma) S E 0 12 F 8 9 F (s.) S 
  414. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  415. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4315 J ( 2) S 0 12 F 
  416. PE 
  417. 8500 1968 P 8 18 F (Chapter) S 100 J ( 3) S 
  418. 8000 2448 P 0 12 F 8 18 F B (LINT) S 100 J ( Output) S E 
  419. 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 
  420. 2880 4288 P (terminal, but it can be redirected to a file using the standard output redirection) S 
  421. 2880 4528 P (constructions on the LINT command line.) S 
  422. 2880 4968 P (The first lines of output from LINT are diagnostic messages comparable to those that) S 
  423. 2880 5208 P (might be produced by a C compiler.  These diagnostics describe easily detected things) S 
  424. 2880 5448 P (like syntax errors.) S 
  425. 2880 5888 P (Following this comes output that is unique to LINT.  Most lines in the output have the form) S 
  426. 3600 6308 P 0 12 F 0 9 F (filename,lineno:) S 108 J ( class: text) S 
  427. 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 
  428. 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 
  429. 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 
  430. 2880 7468 P (specific information about the problem.) S 
  431. 2880 7908 P (Some lines may have the form) S 
  432. 3600 8328 P 0 12 F 0 9 F (libname:) S 108 J ( class: text) S 
  433. 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 
  434. 2880 9008 P (see the last section of this manual.) S 
  435. 2880 9828 P 0 12 F 8 12 F B (Message) S 67 J ( Classes) S E 
  436. 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 
  437. 2880 10788 P (the message describes.  The following message classes are recognized:) S 
  438. 2880 11228 P 0 12 F 0 9 F (Error:) S 
  439. 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 
  440. 3600 11708 P (is no way to generate any sort of object code.) S 
  441. 2880 12148 P 0 12 F 0 9 F (Warning:) S 
  442. 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 
  443. 3600 12628 P (object code.  For example, the ANSI standard does not allow assignments) S 
  444. 3600 12868 P (between pointers of different types, but most compilers can still generate sensible) S 
  445. 3600 13108 P (object code for such an operation.) S 
  446. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  447. 2880 14800 P 0 12 F 24 10 F (3) S 4315 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  448. PE 
  449. 2160 2168 P 0 9 F (Unusual:) S 
  450. 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 
  451. 2880 2648 P (example,) S 
  452. 3168 3068 P 0 12 F 0 9 F (i=i;) S 
  453. 2880 3508 P 0 12 F 8 9 F (is) S 50 J ( valid but suspicious, possibly indicating some problem in your code.) S 
  454. 2160 3948 P 0 12 F 0 9 F (Note:) S 
  455. 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 
  456. 2880 4428 P (machine.  For example,) S 
  457. 3168 4848 P 0 12 F 0 9 F (printf\("%ld",1\);) S 
  458. 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 
  459. 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 
  460. 2160 5968 P 0 12 F 0 9 F (MachDepd:) S 
  461. 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 
  462. 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 
  463. 2880 6688 P (of division to truncate either towards or away from zero.) S 
  464. 2160 7128 P 0 12 F 0 9 F (Extension:) S 
  465. 2880 7368 P 0 12 F 8 9 F (Marks) S 50 J ( a construct that is an extension to the ANSI standard.) S 
  466. 2160 7808 P 0 12 F 0 9 F (Efficiency:) S 
  467. 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 
  468. 2880 8288 P (constructs that are likely to execute slowly.) S 
  469. 2160 8728 P 0 12 F 0 9 F (NotMinimal:) S 
  470. 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 
  471. 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 
  472. 2160 9648 P 0 12 F 0 9 F (Info:) S 
  473. 2880 9888 P 0 12 F 8 9 F (Provides) S 50 J ( cross-reference information while using LINT.) S 
  474. 2160 10328 P 0 12 F 0 9 F (IntrnErr:) S 
  475. 2880 10568 P 0 12 F 8 9 F (An) S 50 J ( internal error in LINT itself \(for example, a table overflow\).) S 
  476. 2160 11388 P 0 12 F 8 12 F B (Output) S 67 J ( Grouping) S E 
  477. 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 
  478. 2160 12548 P (The first line of a group of messages gives the name of a function or an external variable.) S 
  479. 2160 12788 P (After that come all the messages pertaining to that function or variable.  The messages) S 
  480. 2160 13028 P (end with a blank line, followed by the group of messages for the next function or variable.) S 
  481. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  482. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4315 J ( 4) S 0 12 F 
  483. PE 
  484. 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 
  485. 2880 2408 P (The first line of every function group gives the name of the function and the type of value) S 
  486. 2880 2648 P (that the function returns.  If LINT has found a definition for the function, the first line of the) S 
  487. 2880 2888 P (function group is) S 
  488. 3600 3308 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" returns "TYPE".) S 
  489. 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 
  490. 2880 3988 P (returns.) S 
  491. 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 
  492. 2880 4668 P (function that appears in the source code and prints) S 
  493. 3600 5088 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" is assumed to return "TYPE".) S 
  494. 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 
  495. 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 
  496. 2880 6008 P (declared to have a different type.  If the first reference to the function does not use a return) S 
  497. 2880 6248 P (value from the function, the message is) S 
  498. 3600 6668 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" assumed to return no value.) S 
  499. 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 
  500. 2880 7348 P (return a value, LINT outputs the message) S 
  501. 3600 7768 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" returns no value.) S 
  502. 2880 8208 P 0 12 F 8 9 F (You) S 50 J ( should distinguish between this message and) S 
  503. 3600 8628 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" returns void.) S 
  504. 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 
  505. 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 
  506. 2880 9548 P 0 12 F 8 9 F (statements.) S 
  507. 2880 9988 P (The) S 50 J ( first appearance of an external variable is treated in much the same way as the first) S 
  508. 2880 10228 P (appearance of a function.  You will see a message like) S 
  509. 3600 10648 P 0 12 F 0 9 F (External) S 108 J ( "NAME" is "TYPE".) S 
  510. 2880 11088 P 0 12 F 8 9 F (or) S 
  511. 3600 11508 P 0 12 F 0 9 F (External) S 108 J ( "NAME" is assumed to be "TYPE".) S 
  512. 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 
  513. 2880 12188 P (or not there are errors.  The exception is when a symbol appears in a LINT library) S 
  514. 2880 12428 P (\(described later on\) and is not referenced in normal source code.  Messages about library) S 
  515. 2880 12668 P (functions and variables only appear if the symbol is used in source code.) S 
  516. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  517. 2880 14800 P 0 12 F 24 10 F (5) S 4315 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  518. PE 
  519. 2160 1968 P 8 9 F (Other) S 50 J ( messages in LINT output describe situations that may be errors.  These messages) S 
  520. 2160 2208 P (refer to difficulties within the function with which they are grouped.) S 
  521. 2160 3028 P 0 12 F 8 12 F B (Type) S 67 J ( Information) S E 
  522. 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 
  523. 2160 3988 P (program.  A typical line of output is) S 
  524. 2880 4408 P 0 12 F 0 9 F (filename,lineno:) S 108 J ( type) S 
  525. 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 
  526. 2160 5088 P (line number where the definition began.) S 
  527. 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 
  528. 2160 5768 P (unions that were involved in the messages produced.  This lets you locate the definitions) S 
  529. 2160 6008 P (of these types.) S 
  530. 2160 6448 P (If a type appears twice in this list, it usually means that there is more than one definition) S 
  531. 2160 6688 P (for the same type and the types are not assignment-compatible.) S 
  532. 2160 7128 P (LINT also checks for structures and unions which are used in functions and which have) S 
  533. 2160 7368 P (been incompletely defined.  Incomplete definitions are acceptable as long as there is a) S 
  534. 2160 7608 P (complete definition somewhere.  All complete definitions have to be identical.  If complete) S 
  535. 2160 7848 P (definitions conflict with each other, LINT issues a diagnostic beginning with) S 
  536. 2880 8268 P 0 12 F 0 9 F (filename) S 108 J ( : type) S 
  537. 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 
  538. 2160 8948 P (another definition.) S 
  539. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  540. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4315 J ( 6) S 0 12 F 
  541. PE 
  542. 8500 1968 P 8 18 F (Chapter) S 100 J ( 4) S 
  543. 7000 2448 P 0 12 F 8 18 F B (LINT) S 100 J ( Conventions) S E 
  544. 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 
  545. 2880 4288 P (type of value that the function returns and describes the arguments of the function.  An) S 
  546. 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 
  547. 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 
  548. 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 
  549. 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 
  550. 2880 5688 P (declaration does not allocate space for the variable; it merely describes the type of the) S 
  551. 2880 5928 P (variable and presumes that the variable is defined elsewhere.) S 
  552. 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 
  553. 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 
  554. 2880 6848 P (pointer marks a variable as both "set" and "used".  The answer is that once a pointer to a) S 
  555. 2880 7088 P (variable is taken, LINT can't keep track of assignments or uses of the variable through the) S 
  556. 2880 7328 P (pointer.  Once the pointer is taken, LINT can only assume that the data object may have) S 
  557. 2880 7568 P (been both set and used.\)) S 
  558. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  559. 2880 14800 P 0 12 F 24 10 F (7) S 4315 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  560. PE 
  561. 7780 1968 P 8 18 F (Chapter) S 100 J ( 5) S 
  562. 3080 2448 P 0 12 F 8 18 F B (Unused) S 100 J ( Definitions and Declarations) S E 
  563. 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 
  564. 2160 4288 P (used or called in the rest of the program.  Such items can usually be deleted, since they) S 
  565. 2160 4528 P (are not performing any function in the program.  The diagnostic messages for such) S 
  566. 2160 4768 P (situations are listed and explained below.) S 
  567. 2160 5208 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" is never called.) S 
  568. 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 
  569. 2160 5888 P 0 12 F 0 9 F (External) S 108 J ( "NAME" is never used.) S 
  570. 2880 6128 P 0 12 F 8 9 F (The) S 50 J ( given external variable was defined but never used.) S 
  571. 2160 6568 P 0 12 F 0 9 F (External) S 108 J ( "NAME" is defined but never set or used.) S 
  572. 2880 6808 P 0 12 F 8 9 F (This) S 50 J ( is essentially the same as the previous message.) S 
  573. 2160 7248 P 0 12 F 0 9 F (External) S 108 J ( "NAME" is set but never used.) S 
  574. 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 
  575. 2880 7728 P (anything.) S 
  576. 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 
  577. 2160 8988 P 0 12 F 8 12 F B (Marking) S 67 J ( Symbols As Used) S E 
  578. 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 
  579. 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 
  580. 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 
  581. 2160 10428 P (this condition, but you might not consider this situation an error.) S 
  582. 2160 10868 P (To avoid this sort of message, you can add the LINT directive) S 
  583. 2880 11288 P 0 12 F 0 9 F (#pragma) S 108 J ( used NAME NAME NAME ...) S 
  584. 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 
  585. 2160 11968 P (program, even if it doesn't look like they are.) S 
  586. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  587. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4315 J ( 8) S 0 12 F 
  588. PE 
  589. 8500 1968 P 8 18 F (Chapter) S 100 J ( 6) S 
  590. 3500 2448 P 0 12 F 8 18 F B (Undefined) S 100 J ( or Undeclared Data Objects) S E 
  591. 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 
  592. 2880 4288 P (variable is assumed to be undefined if a statement using the variable appears in the code) S 
  593. 2880 4528 P (before the variable is set.  Of course, it is possible to construct programs where this) S 
  594. 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 
  595. 2880 5008 P (outwitted.) S 
  596. 2880 5448 P (Because static and external variables are automatically initialized to zero by the compiler if) S 
  597. 2880 5688 P (they are not initialized explicitly, LINT does not pick up problems with these variables.) S 
  598. 2880 6128 P (The following diagnostics pertain to data objects that are used before they are set,) S 
  599. 2880 6368 P (defined, or declared.) S 
  600. 2880 6808 P 0 12 F 0 9 F (Function) S 108 J ( "NAME" is called but never defined.) S 
  601. 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 
  602. 3600 7288 P (defined anywhere in the code.) S 
  603. 2880 7728 P 0 12 F 0 9 F ("NAME") S 108 J ( is set but never defined.) S 
  604. 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 
  605. 3600 8208 P (appear in the source code.) S 
  606. 2880 8648 P 0 12 F 0 9 F ("NAME") S 108 J ( is used but never defined.) S 
  607. 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 
  608. 2880 9328 P 0 12 F 0 9 F ("NAME") S 108 J ( is used but never defined or set.) S 
  609. 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 
  610. 3600 9808 P (defined nor set.) S 
  611. 2880 10248 P 0 12 F 0 9 F ("NAME") S 108 J ( is defined and used but never set.) S 
  612. 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 
  613. 3600 10728 P (issued for local variables, since all external variables are automatically initialized) S 
  614. 3600 10968 P (to zero \(if no explicit initialization is specified\).) S 
  615. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  616. 2880 14800 P 0 12 F 24 10 F (9) S 4315 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  617. PE 
  618. 7780 1968 P 8 18 F (Chapter) S 100 J ( 7) S 
  619. 6200 2448 P 0 12 F 8 18 F B (Unreachable) S 100 J ( Code) S E 
  620. 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 
  621. 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 
  622. 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 
  623. 2160 4768 P (cannot be entered from the top.) S 
  624. 2160 5208 P (The message that is issued for detected unreachable code is) S 
  625. 2880 5628 P 0 12 F 0 9 F (Non) S 108 J ( reachable code at "TEXT".) S 
  626. 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 
  627. 2160 6888 P 0 12 F 8 12 F B (Marking) S 67 J ( Unreachable Code) S E 
  628. 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 
  629. 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 
  630. 2160 8088 P (unreachable code, as in) S 
  631. 2880 8508 P 0 12 F 0 9 F (g\(\)) S 
  632. 2880 8728 P ({) S 
  633. 2880 8948 P () S 108 J (    exit\(-1\);) S 
  634. 2880 9168 P (}) S 
  635. 2880 9388 P (f\(\)) S 
  636. 2880 9608 P ({) S 
  637. 2880 9828 P (    ...) S 
  638. 2880 10048 P (    g\(\);) S 
  639. 2880 10268 P (    /* everything that follows) S 
  640. 2880 10488 P (     * is unreachable */) S 
  641. 2880 10708 P (    ...) S 
  642. 2880 10928 P (}) S 
  643. 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 
  644. 2880 11788 P 0 12 F 0 9 F (#pragma) S 108 J ( notreached) S 
  645. 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 
  646. 2160 12468 P (the directive as unreachable, up to the end of the block or the next statement label.) S 
  647. 2160 12708 P (Appropriate diagnostic messages will be issued.) S 
  648. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  649. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 10) S 0 12 F 
  650. PE 
  651. 8500 1968 P 8 18 F (Chapter) S 100 J ( 8) S 
  652. 6040 2448 P 0 12 F 8 18 F B (Function) S 100 J ( Return Values) S E 
  653. 2880 4048 P 0 12 F 8 9 F (LINT) S 50 J ( reports functions that contain both) S 
  654. 3600 4468 P 0 12 F 0 9 F (return\() S 108 J ( expression \);) S 
  655. 2880 4908 P 0 12 F 8 9 F (and) S 
  656. 3600 5328 P 0 12 F 0 9 F (return;) S 
  657. 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 
  658. 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 
  659. 2880 6448 P (Correspondingly, LINT makes note of whether or not a call to a function makes use of a) S 
  660. 2880 6688 P (return value from the function.  If the caller expects a value but the function does not) S 
  661. 2880 6928 P (return one, it is clearly a bug.  If the function returns a value but the the caller does not use) S 
  662. 2880 7168 P (it, it could be an error, an inefficiency, or sloppy programming style.) S 
  663. 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 
  664. 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 
  665. 2880 8088 P (reference to the function before it finds the function definition, it assumes that the function) S 
  666. 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 
  667. 2880 8568 P (used to looser controls than this will find themselves with a large number of diagnostic) S 
  668. 2880 8808 P (messages.) S 
  669. 2880 9248 P (The messages related to function return values are listed below.) S 
  670. 2880 9688 P 0 12 F 0 9 F (Value) S 108 J ( is used but none returned.) S 
  671. 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 
  672. 3600 10168 P (behaved as if a value was returned.) S 
  673. 2880 10608 P 0 12 F 0 9 F (Function) S 108 J ( NAME has no return value) S 
  674. 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 
  675. 3600 11088 P (not contain a) S 
  676. 3888 11508 P 0 12 F 0 9 F (return\(expression\)) S 
  677. 3600 11948 P 0 12 F 8 9 F (statement.) S 
  678. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  679. 2880 14800 P 0 12 F 24 10 F (11) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  680. PE 
  681. 2160 1968 P 0 9 F (Return) S 108 J ( value ignored.) S 
  682. 2880 2208 P 0 12 F 8 9 F (The) S 50 J ( given function contains a) S 
  683. 3168 2628 P 0 12 F 0 9 F (return\(expression\);) S 
  684. 2880 3068 P 0 12 F 8 9 F (statement,) S 50 J ( but the caller never uses the return result.) S 
  685. 2160 3508 P 0 12 F 0 9 F (Return) S 108 J ( value sometimes ignored.) S 
  686. 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 
  687. 2880 3988 P (used, sometimes not.) S 
  688. 2160 4808 P 0 12 F 8 12 F B (Ignoring) S 67 J ( Return Values) S E 
  689. 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 
  690. 2160 5768 P (ignored.  The C library has several functions whose return value is superfluous.  For) S 
  691. 2160 6008 P (example,) S 
  692. 2880 6428 P 0 12 F 0 9 F (strcpy\(A,B\)) S 
  693. 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 
  694. 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 
  695. 2160 7548 P (LINT) S 50 J ( lets you mark functions with optional return values by using a directive similar to the) S 
  696. 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 
  697. 2880 8208 P 0 12 F 0 9 F (#pragma) S 108 J ( optresult) S 
  698. 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 
  699. 2160 8888 P (result.  LINT then recognizes that this function returns a result that can be ignored; LINT) S 
  700. 2160 9128 P (does not give error messages if the result is ignored.) S 
  701. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  702. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 12) S 0 12 F 
  703. PE 
  704. 8500 1968 P 8 18 F (Chapter) S 100 J ( 9) S 
  705. 7520 2448 P 0 12 F 8 18 F B (Type) S 100 J ( Checking) S E 
  706. 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 
  707. 2880 4288 P (different types of data are intermixed, LINT observes the strict conventions for conversions) S 
  708. 2880 4528 P (of data and requires that everything else be properly cast.) S 
  709. 2880 4968 P (LINT checks for type incompatibilities in three places:) S 
  710. 2880 5408 P ( \(a\)         in the arguments passed to functions) S 
  711. 2880 5648 P ( \(b\)         in the return values received by functions) S 
  712. 2880 5888 P ( \(c\)) S 460 J ( in) S 50 J ( structure manipulations) S 
  713. 2880 6328 P (For fullest type-checking, the code should use prototypes wherever possible.  LINT also) S 
  714. 2880 6568 P (checks for situations in which some function calls take place with a prototype in scope) S 
  715. 2880 6808 P (while others do not.) S 
  716. 2880 7248 P (When arguments are passed to functions, LINT issues a diagnostic if the argument type) S 
  717. 2880 7488 P (passed by the caller differs from the argument type expected by the called function.) S 
  718. 2880 7728 P (Similarly, LINT complains if the argument type returned by the called function differs from) S 
  719. 2880 7968 P (the argument type expected by the caller.  The messages associated with this situation) S 
  720. 2880 8208 P (are given below.) S 
  721. 2880 8648 P 0 12 F 0 9 F (Argument) S 108 J ( N is "TYPE1", but declared as "TYPE2".) S 
  722. 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 
  723. 3600 9128 P (argument number N, but the called function expected a value of TYPE2.  For) S 
  724. 3600 9368 P (example, you might see) S 
  725. 3888 9788 P 0 12 F 0 9 F (Argument) S 108 J ( 2 is "int", declared "unsigned int".) S 
  726. 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 
  727. 3600 10468 P (the function, but the called function expected an unsigned integer.) S 
  728. 2880 10908 P 0 12 F 0 9 F (Argument) S 108 J ( N is "TYPE", but declared as a different "TYPE") S 
  729. 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 
  730. 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 
  731. 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 
  732. 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 
  733. 3600 12108 P (invalidly tries to combine external and local variables of type X, you get the above) S 
  734. 3600 12348 P (message; even though the types have the same name, they are different.  The) S 
  735. 3600 12588 P (same sort of situation may happen with other LINT error messages.) S 
  736. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  737. 2880 14800 P 0 12 F 24 10 F (13) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  738. PE 
  739. 2160 1968 P 0 9 F ("NAME") S 108 J ( is redeclared as function type "TYPE".) S 
  740. 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 
  741. 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 
  742. 2160 2888 P 0 12 F 0 9 F ("NAME") S 108 J ( declared as returning "TYPE") S 
  743. 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 
  744. 2880 3368 P (its definition.) S 
  745. 2160 3808 P 0 12 F 0 9 F ("NAME") S 108 J ( declared as "TYPE") S 
  746. 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 
  747. 2880 4288 P (definition.) S 
  748. 2160 4728 P 0 12 F 0 9 F ("NAME") S 108 J ( is redefined as function.) S 
  749. 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 
  750. 2880 5208 P (function.) S 
  751. 2160 5648 P (LINT also issues a message whenever a data object is implicitly shortened.  For example,) S 
  752. 2160 5888 P (suppose we have) S 
  753. 2880 6308 P 0 12 F 0 9 F (long) S 108 J ( l;) S 
  754. 2880 6528 P (int i;) S 
  755. 2880 6748 P (  /* stuff */) S 
  756. 2880 6968 P (i = l;) S 
  757. 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 
  758. 2160 7648 P (LINT flags this as a potential problem \(since different integer sizes on different machines) S 
  759. 2160 7888 P (may affect how this works\).  No error message is issued if the conversion is done) S 
  760. 2160 8128 P (explicitly, as in) S 
  761. 2880 8548 P 0 12 F 0 9 F (i) S 108 J ( = \(int\) l;) S 
  762. 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 
  763. 2160 9228 P (wrong.  For example, warnings about structures that contain arrays of structures do not) S 
  764. 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 
  765. 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 
  766. 2880 10128 P 0 12 F 0 9 F (struct) S 108 J ( ABC *ptr;) S 
  767. 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 
  768. 2160 10808 P (have enough information to determine if code is valid, so the warning messages may not) S 
  769. 2160 11048 P (be entirely accurate.) S 
  770. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  771. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 14) S 0 12 F 
  772. PE 
  773. 8300 1968 P 8 18 F (Chapter) S 100 J ( 10) S 
  774. 6300 2448 P 0 12 F 8 18 F B (Function) S 100 J ( Declarations) S E 
  775. 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 
  776. 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 
  777. 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 
  778. 2880 4768 P (practice, there is no difference between these two pointer types; however, LINT makes) S 
  779. 2880 5008 P (note of the situation because it may be indicative of an error.) S 
  780. 2880 5448 P (In addition to checking that the argument types expected by a called function match the) S 
  781. 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 
  782. 2880 5928 P (expected by the called function matches the number of arguments passed by the caller.  If) S 
  783. 2880 6168 P (there is a mismatch, it prints) S 
  784. 3600 6588 P 0 12 F 0 9 F (Called) S 108 J ( with N arguments, requires M) S 
  785. 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 
  786. 2880 7268 P (arguments that the function expects.) S 
  787. 2880 7708 P (Whenever possible, LINT checks to see that argument declarations in function prototypes) S 
  788. 2880 7948 P (agree exactly with the declarations in the function definition.  If the declarations do not) S 
  789. 2880 8188 P (agree, LINT outputs) S 
  790. 3600 8608 P 0 12 F 0 9 F (Prototype) S 108 J ( argument N is "TYPE" but declared as "TYPE") S 
  791. 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 
  792. 2880 9288 P (considered assignment-compatible with all pointer types and therefore there is not a) S 
  793. 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 
  794. 2880 9768 P (difference, simply to warn you that there seems to be a discrepancy in your code.) S 
  795. 2880 10208 P (Finally, LINT makes sure that the number of arguments in a prototype declaration matches) S 
  796. 2880 10448 P (the number in the function definition.  If not, LINT prints) S 
  797. 3600 10868 P 0 12 F 0 9 F (Prototyped) S 108 J ( with N arguments, but requires M) S 
  798. 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 
  799. 2880 12128 P 0 12 F 8 12 F B (The) S 67 J ( #pragma varargs Directive) S E 
  800. 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 
  801. 2880 13088 P (specifies or to pass fewer arguments.  This is not valid in ANSI C unless you use the) S 
  802. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  803. 2880 14800 P 0 12 F 24 10 F (15) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  804. PE 
  805. 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 
  806. 2160 2208 P (sequences and most compilers still handle the situation properly.) S 
  807. 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 
  808. 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 
  809. 2880 3308 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs N) S 
  810. 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 
  811. 2160 3988 P (must have a minimum of N arguments.  For example, we might write) S 
  812. 2880 4408 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs 3) S 
  813. 2880 4628 P (int Mini\(N,a,b,c,d\);) S 
  814. 2880 4848 P (int N,a,b,c,d;) S 
  815. 2880 5068 P ({ ....) S 
  816. 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 
  817. 2160 5748 P (this case, LINT does not issue an error message if you have at least three integer) S 
  818. 2160 5988 P (arguments present.) S 
  819. 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 
  820. 2160 6668 P (that are present.  In the above example, LINT ensures that all the arguments being) S 
  821. 2160 6908 P (passed are integers.) S 
  822. 2160 7348 P (The second form of the directive is) S 
  823. 2880 7768 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs N M) S 
  824. 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 
  825. 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 
  826. 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 
  827. 2160 8928 P (plus one or more values to print.  This could be preceded with) S 
  828. 2880 9348 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs 2 1) S 
  829. 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 
  830. 2160 10028 P (one output value\) but that only the first argument should be typechecked \(since the output) S 
  831. 2160 10268 P (value\(s\) need not have a fixed type\).) S 
  832. 2160 10708 P (The directive can also take the form) S 
  833. 2880 11128 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs printf) S 
  834. 2880 11348 P (#pragma varargs scanf) S 
  835. 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 
  836. 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 
  837. 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 
  838. 2160 12508 P (any conflicts between types.  For example, it tells you if the argument corresponding to a) S 
  839. 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 
  840. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  841. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 16) S 0 12 F 
  842. PE 
  843. 2880 2308 P 8 12 F B (The) S 67 J ( #pragma argsused Directive) S E 
  844. 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 
  845. 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 
  846. 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 
  847. 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 
  848. 2880 3988 P (be defined with) S 
  849. 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 
  850. 3600 4628 P (int N,a,b,c,d,e,f,g,h,i;) S 
  851. 3600 4848 P ({) S 
  852. 3600 5068 P (    int j,m,*p;) S 
  853. 3600 5288 P (    m = a;) S 
  854. 3600 5508 P (    p = &a;) S 
  855. 3600 5728 P (    for \(j=1; j < N; ++j\)) S 
  856. 3600 5948 P (        if \(p[j] > m\) m = p[j];) S 
  857. 3600 6168 P (    return\(m\);) S 
  858. 3600 6388 P (}) S 
  859. 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 
  860. 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 
  861. 2880 7308 P (Therefore) S 50 J ( the values are used.) S 
  862. 2880 7748 P (This sort of coding practice is a violation of the ANSI standard.  The standard doesn't let) S 
  863. 2880 7988 P (you use subscripts to access memory locations outside the bounds of a single object, so) S 
  864. 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 
  865. 2880 8468 P (this and older programs may use it.) S 
  866. 2880 8908 P (For such programs, you can avoid some diagnostic messages from LINT by putting the) S 
  867. 2880 9148 P (LINT directive) S 
  868. 3600 9568 P 0 12 F 0 9 F (#pragma) S 108 J ( argsused) S 
  869. 2880 10008 P 0 12 F 8 9 F (on) S 50 J ( a line preceding the function, as in) S 
  870. 3600 10428 P 0 12 F 0 9 F (#pragma) S 108 J ( argsused) S 
  871. 3600 10648 P (int Max10\(N,a,b,c,d,e,f,g,h,i\)) S 
  872. 3600 10868 P (   ...) S 
  873. 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 
  874. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  875. 2880 14800 P 0 12 F 24 10 F (17) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  876. PE 
  877. 7580 1968 P 8 18 F (Chapter) S 100 J ( 11) S 
  878. 6600 2448 P 0 12 F 8 18 F B (Alternate) S 100 J ( Forms) S E 
  879. 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 
  880. 2160 4288 P (directives in the form of comments.  These are only recognized if the) S 
  881. 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 
  882. 2880 4948 P 0 12 F 0 9 F (/*VARARGSN*/) S 
  883. 2160 5388 P 0 12 F 8 9 F (\(where) S 50 J ( N is an integer\) is automatically converted to) S 
  884. 2880 5808 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs 0 N) S 
  885. 2160 6248 P 0 12 F 8 9 F (For) S 50 J ( example,) S 
  886. 2880 6668 P 0 12 F 0 9 F (/*VARARGS3*/) S 
  887. 2160 7108 P 0 12 F 8 9 F (is) S 50 J ( equivalent to) S 
  888. 2880 7528 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs 0 3) S 
  889. 2160 7968 P 0 12 F 8 9 F (In) S 50 J ( addition,) S 
  890. 2880 8388 P 0 12 F 0 9 F (/*VARARGS*/) S 
  891. 2160 8828 P 0 12 F 8 9 F (\(with) S 50 J ( no value N\) is equivalent to) S 
  892. 2880 9248 P 0 12 F 0 9 F (#pragma) S 108 J ( varargs 0) S 
  893. 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 
  894. 2880 10108 P 0 12 F 0 9 F (/*ARGSUSED*/) S 
  895. 2160 10548 P 0 12 F 8 9 F (is) S 50 J ( automatically converted to) S 
  896. 2880 10968 P 0 12 F 0 9 F (#pragma) S 108 J ( argsused) S 
  897. 2160 11408 P 0 12 F 8 9 F (and) S 50 J ( the comment) S 
  898. 2880 11828 P 0 12 F 0 9 F (/*NOTREACHED*/) S 
  899. 2160 12268 P 0 12 F 8 9 F (is) S 50 J ( equivalent to) S 
  900. 2880 12688 P 0 12 F 0 9 F (#pragma) S 108 J ( notreached) S 
  901. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  902. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 18) S 0 12 F 
  903. PE 
  904. 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 
  905. 2880 2208 P (All alphabetic characters must be in upper case and there can be nothing else in the) S 
  906. 2880 2448 P (comment except the keyword and any number that should follow.) S 
  907. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  908. 2880 14800 P 0 12 F 24 10 F (19) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  909. PE 
  910. 7580 1968 P 8 18 F (Chapter) S 100 J ( 12) S 
  911. 5800 2448 P 0 12 F 8 18 F B (Miscellaneous) S 100 J ( Notes) S E 
  912. 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 
  913. 2160 4288 P (between upper and lower case letters.  This is the way that C compilers are supposed to) S 
  914. 2160 4528 P (work as well.  However, some compilers or loaders truncate long names to a certain) S 
  915. 2160 4768 P (number of characters, and some compilers or loaders do not distinguish between the case) S 
  916. 2160 5008 P (of letters in names.  For this reason, LINT issues the following warnings.) S 
  917. 2160 5448 P 0 12 F 0 9 F (NAME1) S 108 J ( and NAME2 not unique in first N caseless characters.) S 
  918. 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 
  919. 2880 5928 P (requirements.) S 
  920. 2160 6368 P 0 12 F 0 9 F (NAME1) S 108 J ( and NAME2 not unique without case distinction.) S 
  921. 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 
  922. 2160 7048 P (LINT detects redeclaration of functions and variables defined outside the scope of any) S 
  923. 2160 7288 P (function.  The set of messages dedicated to this kind of problem are given below.) S 
  924. 2160 7728 P 0 12 F 0 9 F (NAME) S 108 J ( redeclared.) S 
  925. 2880 7968 P 0 12 F 8 9 F (A) S 50 J ( given variable has been invalidly declared in a second place.) S 
  926. 2160 8408 P 0 12 F 0 9 F (NAME) S 108 J ( retyped as "TYPE".) S 
  927. 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 
  928. 2160 9088 P 0 12 F 0 9 F (NAME) S 108 J ( redeclared with type "TYPE".) S 
  929. 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 
  930. 2880 9568 P (previously had.) S 
  931. 2160 10008 P 0 12 F 0 9 F (NAME) S 108 J ( is redefined as function.) S 
  932. 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 
  933. 2880 10488 P (a function.) S 
  934. 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 
  935. 2160 11168 P (a length of 32 bits, regardless of what length these data types have on your machine.  The) S 
  936. 2160 11408 P (reason is that short and long integers are guaranteed to have at least these lengths on all) S 
  937. 2160 11648 P (machines.  Your hardware may allow longer integers \(for example, 36 bits\) but code that) S 
  938. 2160 11888 P (uses the increased size is not portable to machines with smaller words.  For the same) S 
  939. 2160 12128 P (reason, LINT assumes that all characters are 8-bit signed quantities, even though they) S 
  940. 2160 12368 P (may be longer or unsigned on your machine.) S 
  941. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  942. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 20) S 0 12 F 
  943. PE 
  944. 8300 1968 P 8 18 F (Chapter) S 100 J ( 13) S 
  945. 5780 2448 P 0 12 F 8 18 F B (Extra) S 100 J ( Compiler Warnings) S E 
  946. 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 
  947. 2880 4288 P (all the error and warning messages produced by the parsing phase of the C compiler.) S 
  948. 2880 4528 P (Most of these are self-explanatory, but there are a few that deserve further comment.) S 
  949. 2880 4968 P 0 12 F 0 9 F (Constant) S 108 J ( "CONSTANT" too large for "TYPE".) S 
  950. 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 
  951. 3600 5448 P (are 32 bits long.  Therefore you may get this message, even though a short or) S 
  952. 3600 5688 P (long integer type on your machine is actually long enough to hold a given) S 
  953. 3600 5928 P (constant.) S 
  954. 2880 6368 P 0 12 F 0 9 F (Character) S 108 J ( constant with no characters.) S 
  955. 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 
  956. 3600 6848 P (accept such constants, but LINT still complains about the construct.) S 
  957. 2880 7288 P 0 12 F 0 9 F (Constant) S 108 J ( valued logical expression.) S 
  958. 3600 7528 P 0 12 F 8 9 F (This) S 50 J ( refers to situations like) S 
  959. 3888 7948 P 0 12 F 0 9 F (while) S 108 J ( \(1\) { ... }) S 
  960. 2880 8768 P 0 12 F 8 12 F B (Alignment) S 67 J ( Problems) S E 
  961. 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 
  962. 3600 9908 P 0 12 F 0 9 F (Possible) S 108 J ( alignment problems with cast) S 
  963. 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 
  964. 2880 10588 P (example, there may be difficulties in casting a character pointer to an integer pointer if the) S 
  965. 2880 10828 P (character pointer is not aimed at a word boundary.  At times, however, you may have) S 
  966. 2880 11068 P (taken pains to make sure that this kind of alignment problem will not occur.  In particular,) S 
  967. 2880 11308 P (you may have created a function that returns a value or pointer that is suitably aligned for) S 
  968. 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 
  969. 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 
  970. 2880 12228 P (If you have a function that returns a suitably aligned pointer, you can tell LINT by placing) S 
  971. 3600 12648 P 0 12 F 0 9 F (#pragma) S 108 J ( aligned) S 
  972. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  973. 2880 14800 P 0 12 F 24 10 F (21) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  974. PE 
  975. 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 
  976. 2160 2208 P (with any alignment problems.) S 
  977. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  978. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 22) S 0 12 F 
  979. PE 
  980. 8300 1968 P 8 18 F (Chapter) S 100 J ( 14) S 
  981. 5840 2448 P 0 12 F 8 18 F B (The) S 100 J ( LINT Command Line) S E 
  982. 2880 4008 P 0 12 F 8 10 F B (Syntax:) S E 
  983. 3600 4228 P 0 12 F 0 9 F (tlint) S 108 J ( [file] [option]*) S 
  984. 3600 4648 P (\(+|-\)ControlComments \(-\)  \(+|-\)Declarations \(-\)) S 
  985. 3600 4868 P (\(+|-\)Keep \(-\)             \(+|-\)StandardLibrary \(+\)) S 
  986. 3600 5088 P (\(+|-\)Verbose \(-\)          \(+|-\)Wide \(-\)) S 
  987. 3600 5308 P (Configuration=file        CrossReference=keyword) S 
  988. 3600 5528 P (Define=name=value         Include=directory) S 
  989. 3600 5748 P (Installation=file         Library=lib) S 
  990. 3600 5968 P (libraryName=string        Output=file) S 
  991. 3600 6188 P (Output+=file             StandardInclude=directory) S 
  992. 3600 6408 P (StandardLibrary=name      Summary=file) S 
  993. 3600 6628 P (Target=keyword            indeX=file) S 
  994. 2880 7028 P 0 12 F 8 10 F B (Examples:) S E 
  995. 3600 7248 P 0 12 F 0 9 F (tlint) S 108 J ( myfile) S 
  996. 3600 7468 P (tlint x=files o=incls ln=proj def=PROJECT=1) S 
  997. 2880 7868 P 0 12 F 8 10 F B (Options:) S E 
  998. 2880 8108 P 0 12 F 0 9 F (file) S 
  999. 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 
  1000. 3600 8588 P (determine whether LINT scans this file for problem spots, or uses the file to) S 
  1001. 3600 8828 P (create a summary or an entry in a LINT library.) S 
  1002. 2880 9268 P 0 12 F 0 9 F (indeX=file) S 
  1003. 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 
  1004. 3600 9748 P (one C source file.  LINT checks each of these source files individually.  In) S 
  1005. 3600 9988 P (addition to a source file name, a line in an index file may specify) S 
  1006. 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 
  1007. 3600 10468 P (These options only apply to the source file named on the same line.  For) S 
  1008. 3600 10708 P (example, if the line) S 
  1009. 3888 11128 P 0 12 F 0 9 F (myfile) S 108 J ( define=VERSION=1) S 
  1010. 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 
  1011. 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 
  1012. 3600 12048 P (line, LINT normally uses all the options appearing on the main command line,) S 
  1013. 3600 12288 P (followed by the options specified on the index line.  As a special case, however,) S 
  1014. 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 
  1015. 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 
  1016. 3600 13008 P (command line.) S 
  1017. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  1018. 2880 14800 P 0 12 F 24 10 F (23) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  1019. PE 
  1020. 2160 1968 P 0 9 F (Configuration=file) S 
  1021. 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 
  1022. 2880 2448 P (see below.) S 
  1023. 2160 2888 P 0 12 F 0 9 F (+ControlComments) S 
  1024. 2880 3128 P 0 12 F 8 9 F (indicates) S 50 J ( that control comments of the type) S 
  1025. 3168 3548 P 0 12 F 0 9 F (/*VARARGS*/) S 
  1026. 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 
  1027. 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 
  1028. 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 
  1029. 2160 4908 P 0 12 F 0 9 F (CrossReference=keyword) S 
  1030. 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 
  1031. 2880 5388 P (where symbols are defined, referenced, set, and used. \(By default, cross-) S 
  1032. 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 
  1033. 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 
  1034. 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 
  1035. 2160 6948 P 0 12 F 0 9 F (+Declarations) S 
  1036. 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 
  1037. 2880 7428 P (treats every file scope declaration as if it were a definition for the variable, instead) S 
  1038. 2880 7668 P (of a simple reference.) S 
  1039. 2160 8108 P 0 12 F 0 9 F (Define=name=value) S 
  1040. 2880 8348 P 0 12 F 8 9 F (has) S 50 J ( the same effect as) S 
  1041. 3168 8768 P 0 12 F 0 9 F (#define) S 108 J ( name value) S 
  1042. 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 
  1043. 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 
  1044. 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 
  1045. 2880 9928 P (single quotes.) S 
  1046. 2160 10368 P 0 12 F 0 9 F (Include=directory) S 
  1047. 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 
  1048. 2880 10848 P (quoted include files, as in) S 
  1049. 3168 11268 P 0 12 F 0 9 F (#include) S 108 J ( "file") S 
  1050. 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 
  1051. 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 
  1052. 2880 12188 P (searches the directory that contains the source file being examined.  Any number) S 
  1053. 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 
  1054. 2880 12668 P (given on the command line.) S 
  1055. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  1056. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 24) S 0 12 F 
  1057. PE 
  1058. 2880 1968 P 0 9 F (INSTallation=file) S 
  1059. 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 
  1060. 3600 2448 P (various software components have been installed.  For more information, see the) S 
  1061. 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 
  1062. 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 
  1063. 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 
  1064. 3600 3608 P (name of the installation file.  If this environment variable does not exist, LINT) S 
  1065. 3600 3848 P (uses the default installation file.) S 
  1066. 2880 4288 P 0 12 F 0 9 F (+Keep) S 
  1067. 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 
  1068. 2880 4968 P 0 12 F 0 9 F (Library=lib) S 
  1069. 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 
  1070. 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 
  1071. 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 
  1072. 3600 5928 P (so) S 50 J ( that such functions are always recognized.) S 
  1073. 2880 6368 P 0 12 F 0 9 F (libraryName=string) S 
  1074. 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 
  1075. 2880 7048 P 0 12 F 0 9 F (Output=file) S 
  1076. 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 
  1077. 3600 7528 P (overwrites the file's current contents.) S 
  1078. 2880 7968 P 0 12 F 0 9 F (Output+=file) S 
  1079. 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 
  1080. 3600 8448 P (current contents of the specified file, rather than overwriting what the file already) S 
  1081. 3600 8688 P (holds.) S 
  1082. 2880 9128 P 0 12 F 0 9 F (StandardInclude=directory) S 
  1083. 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 
  1084. 3600 9608 P (tries to find include files whose names are enclosed in angle brackets, as in) S 
  1085. 3888 10028 P 0 12 F 0 9 F (#include) S 108 J ( <file>) S 
  1086. 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 
  1087. 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 
  1088. 3600 10948 P (directory that contains the source file being examined.  Any number of) S 
  1089. 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 
  1090. 3600 11428 P (order given on the command line.) S 
  1091. 2880 11868 P 0 12 F 0 9 F (StandardLibrary=name) S 
  1092. 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 
  1093. 3600 12348 P (names are recognized:) S 
  1094. 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 
  1095. 3600 13028 P 0 12 F 0 9 F (-StandardLibrary) S 0 12 F 8 9 F () S 50 J ( is specified.) S 
  1096. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  1097. 2880 14800 P 0 12 F 24 10 F (25) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  1098. PE 
  1099. 2160 1968 P 0 9 F (-StandardLibrary) S 
  1100. 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 
  1101. 2160 2648 P 0 12 F 0 9 F (Summary=file) S 
  1102. 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 
  1103. 2880 3128 P (LINT operation.  See below for more on summary files.) S 
  1104. 2160 3568 P 0 12 F 0 9 F (Target=keyword) S 
  1105. 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 
  1106. 2880 4048 P (are recognized.) S 
  1107. 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 
  1108. 2880 4728 P (machine \(i.e. the machine where you are running LINT\).  This is the default.) S 
  1109. 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 
  1110. 2880 5408 P (as any machine-dependencies in the code.  It also describes the problems) S 
  1111. 2880 5648 P (detected with ) S 0 12 F 0 9 F (Target=Host) S 0 12 F 8 9 F (.) S 
  1112. 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 
  1113. 2880 6328 P (program to a non-ANSI compiler.  This will make note of all ANSI features used.) S 
  1114. 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 
  1115. 2160 7008 P 0 12 F 0 9 F (+Verbose) S 
  1116. 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 
  1117. 2160 7688 P 0 12 F 0 9 F (+Wide) S 
  1118. 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 
  1119. 2880 8168 P (prints in an 80-column format.) S 
  1120. 2160 8988 P 0 12 F 8 12 F B (Abbreviating) S 67 J ( Options:) S E 
  1121. 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 
  1122. 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 
  1123. 2880 10368 P 0 12 F 0 9 F (crossref=all) S 
  1124. 2880 10588 P (cref=all) S 
  1125. 2880 10808 P (cr=all) S 
  1126. 2880 11028 P (cr=a) S 
  1127. 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 
  1128. 2160 11708 P (case; the use of upper and lower case in this documentation is simply to show what letters) S 
  1129. 2160 11948 P (are and aren't required.) S 
  1130. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  1131. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 26) S 0 12 F 
  1132. PE 
  1133. 2880 2308 P 8 12 F B (Other) S 67 J ( Ways to Use LINT) S E 
  1134. 2880 3028 P 0 12 F 8 9 F (In) S 50 J ( addition to checking C code for irregularities, LINT can:) S 
  1135. 2880 3468 P (\(a\)          Extract a summary file of information that can be used in other LINT operations.) S 
  1136. 2880 3908 P (\(b\)          Create a LINT library.) S 
  1137. 2880 4348 P (Summary files and LINT libraries are discussed below.) S 
  1138. 2880 5168 P 0 12 F 8 12 F B (Summary) S 67 J ( Files) S E 
  1139. 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 
  1140. 2880 6128 P (external variables and functions defined or referenced in the code, plus any other) S 
  1141. 2880 6368 P (information LINT may need when checking the code \(such as the declared types of) S 
  1142. 2880 6608 P (function parameters\).  Summary files also record any error messages that might be issued) S 
  1143. 2880 6848 P (by the C compiler when parsing the source code.  All of this information is stored in a) S 
  1144. 2880 7088 P (special format that is not directly readable by humans.) S 
  1145. 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 
  1146. 2880 7768 P (as in) S 
  1147. 3600 8188 P 0 12 F 0 9 F (tlint) S 108 J ( src1.c output=summ) S 
  1148. 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 
  1149. 3600 9048 P 0 12 F 0 9 F (tlint) S 108 J ( src2.c output+=summ) S 
  1150. 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 
  1151. 2880 9928 P (When LINT creates a Summary file, LINT only summarizes your source code and checks) S 
  1152. 2880 10168 P (for syntax errors.  It does not check for such problems as non-portable constructs or type) S 
  1153. 2880 10408 P (mismatches.  However, you can run a summary file through LINT again to do standard) S 
  1154. 2880 10648 P (type-checking.  For example,) S 
  1155. 3600 11068 P 0 12 F 0 9 F (tlint) S 108 J ( srcfile output=lf) S 
  1156. 3600 11288 P (tlint summ=lf) S 
  1157. 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 
  1158. 2880 11968 P (in symbol references and definitions.) S 
  1159. 2880 12408 P (The reason for creating summary files is the same as the reason for breaking up the) S 
  1160. 2880 12648 P (source code of your program into several source files: it is easier to deal with source code) S 
  1161. 2880 12888 P (in small pieces than in one big hunk.  Some users may keep a summary file for every) S 
  1162. 2880 13128 P (source file.  If the code in one source file is changed, you can create a summary file from) S 
  1163. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  1164. 2880 14800 P 0 12 F 24 10 F (27) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  1165. PE 
  1166. 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 
  1167. 2160 2208 P (change has caused any problems.  This is much faster than using LINT on all the raw) S 
  1168. 2160 2448 P (source code.) S 
  1169. 2160 3268 P 0 12 F 8 12 F B (LINT) S 67 J ( Libraries) S E 
  1170. 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 
  1171. 2160 4228 P (However, LINT libraries are intended to parallel the way that object libraries work.) S 
  1172. 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 
  1173. 2160 4908 P (on the LINT command line. For example,) S 
  1174. 2880 5328 P 0 12 F 0 9 F (tlint) S 108 J ( file output=mylib libname="abc") S 
  1175. 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 
  1176. 2160 6008 P (messages related to symbols found in the LINT library.  Using LINT in this way only) S 
  1177. 2160 6248 P (generates minimal messages; full messages are printed when you actually use the LINT) S 
  1178. 2160 6488 P (library.) S 
  1179. 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 
  1180. 2880 7348 P 0 12 F 0 9 F (tlint) S 108 J ( myfile library=mylib) S 
  1181. 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 
  1182. 2160 8028 P (the information in the given LINT library to see if the symbol is defined there.  This works) S 
  1183. 2160 8268 P (just like compiling a module while referring to an object library.  No error occurs if a symbol) S 
  1184. 2160 8508 P (in the LINT library has the same name as a symbol in the source file; the source file) S 
  1185. 2160 8748 P (symbol is the one that is used.) S 
  1186. 2160 9188 P (Functions should only be placed in a LINT library when you are sure they contain no) S 
  1187. 2160 9428 P (errors.  LINT does not look for errors when it is creating a LINT library.) S 
  1188. 2160 10248 P 0 12 F 8 12 F B (Review) S 67 J ( of Inputs and Outputs) S E 
  1189. 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 
  1190. 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 
  1191. 2160 11448 P (uses all of the contents of a source file or a summary file; it only uses library entries if they) S 
  1192. 2160 11688 P (are referenced by source code or a summary file.) S 
  1193. 2160 12128 P (An index file contains partial command lines to be used by LINT in its operations.  These) S 
  1194. 2160 12368 P (command lines can name source files as input, but not summary files or LINT libraries.) S 
  1195. 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 
  1196. 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 
  1197. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  1198. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 28) S 0 12 F 
  1199. PE 
  1200. 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 
  1201. 2880 2208 P (diagnostics to the standard output.) S 
  1202. 2880 3028 P 0 12 F 8 12 F B (Multiple) S 67 J ( Definitions) S E 
  1203. 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 
  1204. 2880 3988 P (diagnostic message.  If the two definitions are both in normal source code, LINT arbitrarily) S 
  1205. 2880 4228 P (chooses the first definition it finds as the "correct" definition, and issues diagnostics for any) S 
  1206. 2880 4468 P (later deviations from this definition.  If one of the two definitions is in a LINT library and the) S 
  1207. 2880 4708 P (other is in normal source code, LINT chooses the non-library version as the "correct") S 
  1208. 2880 4948 P (definition.  In this way, a definition in normal source code overrides a library definition.) S 
  1209. 2880 5768 P 0 12 F 8 12 F B (Configuration) S 67 J ( Files) S E 
  1210. 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 
  1211. 2880 6728 P (possible directives are explained below.) S 
  1212. 2880 7168 P 0 12 F 0 9 F (define) S 108 J ( name string) S 
  1213. 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 
  1214. 3600 7648 P (creates a manifest or macro with the given value.) S 
  1215. 2880 8088 P 0 12 F 0 9 F (inline) S 108 J ( includefile) S 
  1216. 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 
  1217. 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 
  1218. 3600 8808 P (example, in) S 
  1219. 3888 9228 P 0 12 F 0 9 F (inline) S 108 J ( sim.h) S 
  1220. 3888 9448 P (extern int junk1;) S 
  1221. 3888 9668 P (extern int junk2;) S 
  1222. 3888 9888 P (#) S 
  1223. 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 
  1224. 3600 10568 P (If) S 50 J ( a program contains the directive,) S 
  1225. 3888 10988 P 0 12 F 0 9 F (#include) S 108 J ( <sim.h>) S 
  1226. 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 
  1227. 3600 11668 P (had come from an included file.) S 
  1228. 2880 12108 P 0 12 F 0 9 F (map) S 108 J ( includename1 includename2) S 
  1229. 3600 12348 P 0 12 F 8 9 F (says) S 50 J ( that all references of the form) S 
  1230. 3888 12768 P 0 12 F 0 9 F (#include) S 108 J ( includename1) S 
  1231. 2880 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  1232. 2880 14800 P 0 12 F 24 10 F (29) S 4215 J ( Thinkage) S 50 J ( LINT Reference Manual) S 0 12 F 
  1233. PE 
  1234. 2880 1968 P 8 9 F (should) S 50 J ( be converted to) S 
  1235. 3168 2388 P 0 12 F 0 9 F (#include) S 108 J ( includename2) S 
  1236. 2160 2828 P (null includefile) S 
  1237. 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 
  1238. 2880 3308 P (file.) S 
  1239. 2160 3748 P 0 12 F 0 9 F (search) S 108 J ( pathname) S 
  1240. 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 
  1241. 2160 4428 P 0 12 F 0 9 F (system_search) S 108 J ( pathname) S 
  1242. 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 
  1243. 2160 5068 P 0 12 F 8 10 F B (Installation) S 56 J ( Files:) S E 
  1244. 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 
  1245. 2160 5548 P (Installation files are text files made up of comment lines and option lines.) S 
  1246. 2160 6008 P (Comment lines:) S 
  1247. 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 
  1248. 2880 6488 P (lines are also considered comments.) S 
  1249. 2160 6948 P (Option lines:) S 
  1250. 2880 7188 P (Option lines have the format) S 
  1251. 2880 7608 P 0 12 F 0 9 F (Keyword=pathname) S 
  1252. 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 
  1253. 2880 8288 P (some in lower case.  You may abbreviate keywords by omitting any or all of the) S 
  1254. 2880 8528 P (letters shown in lower case.  The remaining letters may be entered in either) S 
  1255. 2880 8768 P (upper or lower case; the documentation simply uses upper case to show which) S 
  1256. 2880 9008 P (characters may not be omitted.) S 
  1257. 2160 9448 P (In this version of LINT, possible option lines are:) S 
  1258. 2160 9888 P 0 12 F 0 9 F (Include=pathname) S 
  1259. 2880 10128 P 0 12 F 8 9 F (gives) S 50 J ( the directory containing the LINT include files.) S 
  1260. 2160 10568 P 0 12 F 0 9 F (Library=pathname) S 
  1261. 2880 10808 P 0 12 F 8 9 F (gives) S 50 J ( the directory containing the LINT libraries.) S 
  1262. 2160 11248 P 0 12 F 0 9 F (Program=pathname) S 
  1263. 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 
  1264. 2160 14520 P 0 12 F 57 12 F (DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) S 
  1265. 2160 14800 P 0 12 F 24 10 F (Thinkage) S 50 J ( LINT Reference Manual) S 4215 J ( 30) S 0 12 F 
  1266. PE PSe
  1267. %%Trailer
  1268.  
  1269.