In article <[EMAIL PROTECTED]> of Wed, 21 Aug 2002 10:19:27 in , David Evans <[EMAIL PROTECTED]> writes > >You could fake this by making them enum types: > ># ifdef S_SPLINT_S >typedef enum { S_JUNK1 } seconds; >typedef enum { S_JUNK2 } minutes; ># else >typedef int seconds; >typedef int minutes; ># endif > >If you used the -enumint flag, then you'll get the warnings you want for >this. > >--- Dave > >On Wed, 21 Aug 2002, Simon Hosie wrote: > >> Was searching the archives and found the post about using >>/*@abstract@*/ in a typedef. That's almost what I'm after, but it's >>much too obstructive for me. What I'd like is something along these >>lines: >> >> typedef /*@abstract@*/ int seconds; >> typedef /*@abstract@*/ int minutes; >> >> void test(void) >> { >> seconds tod_sec = (seconds)5; // legal >> minutes tod_min = (minutes)7; // legal >> >> tod_min++; // legal >> tod_sec = tod_min; // illegal >> tod_min = 10; // illegal >> >> if (tod_min > tod_sec) // illegal >> ; >> } >> >> 'tod_min = 10' may be clear in context, but it could easily be >>obfuscated by macros or less obvious variable names... so I'd be happy >>to see it trapped. >> >
I suggest you look at "Strong Type Checking" introduced to the www.gimpel.com PC/Flexelint range in 1991. I recently posted news:[EMAIL PROTECTED] It shows errors given assignment type mismatches. The following shows the controls and the types; The controls could be in an initialisation file or on a command line. /*lint -strong(AXJ) -fhd Be fussy about typedef mismatches */ typedef signed long fruit; typedef fruit orange; typedef fruit banana; Of course, those products cost money. I am a BETA tester and no longer pay for my copies. -- Walter Briscoe