Your "One-Stop-Shop" for your next Embedded Project

Static Code Analysis | PC-lint for C/C++ | Unique Features to find bugs, glitches | Carnica Technology
Stacks Image 11121

PC-lint for C/C++: Features



PC-lint for C/C++:
Windows 10 / 8 / 7 / Vista / XP / NT / 2000 / 98 / ME


  • Supports K&R C, ANSI C, ANSI/ISO C++
  • Explicit support for Microsoft, GCC and most other major compilers and libraries
  • Support for most major embedded-system compilers including bit addressing.
  • Numerous options to support rogue compilers
  • Scalars sizes can be specified for cross-compiling

Special Checking Facilities

  • Value tracking of auto and static (even global) variable, to detect subtle initialization and value misuse problems
  • Inter-function Value Tracking -- The powerful inter-statement value tracking crosses function boundaries. Functions called with specific values are later processed, with these values used to initialize parameters.
  • Multi-Pass -- To take full advantage of inter-function tracking and static variable tracking, a multi-pass operation has been introduced. The user can control the number of passes. (See Designer's Notes)
  • With value tracking as an enabling technology, we support semantics checking for almost 100 library functions, this checking can be extended to user functions (see function mimicry)
  • Optional strong type checking (typedef-based) with a rich option set to detect nominal type differences. You can even form a fully checked type hierarchy of scalar types using only typedef
  • User-defined semantic checking for function arguments and return values
  • Find unused macros, typedef's, classes, members, declarations, etc. across the entire project (see weak definials)
  • Checks flow of control for possibly uninitialized variables.
  • Explicit support for a subset of the MISRA C and MISRA C++ (TM) (Motor Industry Software Reliability Association) standards
  • Other special torture tests


  • Multiple modules are processed at high speed using pre-compiled headers

Message Suppression and Enabling:

  • By message number
  • By message number and symbol name (including wild cards)
  • By message number and symbol type
  • By message number and message parameter
  • One-line suppression
  • By macro name
  • For library headers, by message number (a header is library depending on how it is included; this can be overridden via user options)
  • For specified functions, by message number
  • For expressions


  • Indirect files (nested to any depth) can contain filenames, options, environment variables
  • Format of lint error messages can be customized to support integration with a wide variety of editors and IDEs
  • All options can be embedded in user code


  • Fast one-pass operation, with a multi-pass option for inter-function value tracking
  • Robust - tables will expand as needed to handle large applications