Vault 7: Projects
This publication series is about specific projects related to the Vault 7 main publication.
MPLAB
®
XC16 C Compiler Users Guide
DS50002071C-page 280 2012-2013 Microchip Technology Inc.
suggest hiding #directive from traditional C with an indented #
The specified directive is not traditional C and may be hidden by indenting the #.
A directive is ignored unless its # is in column 1.
suggest not using #elif in traditional C
#elif should not be used in traditional K&R C.
suggest parentheses around assignment used as truth value
When assignments are used as truth values, they should be surrounded by
parentheses, to make the intention clear to readers of the source program.
suggest parentheses around + or - inside shift
suggest parentheses around && within ||
suggest parentheses around arithmetic in operand of |
suggest parentheses around comparison in operand of |
suggest parentheses around arithmetic in operand of ^
suggest parentheses around comparison in operand of ^
suggest parentheses around + or - in operand of &
suggest parentheses around comparison in operand of &
While operator precedence is well defined in C, sometimes a reader of an expression
might be required to expend a few additional microseconds in comprehending the
evaluation order of operands in an expression if the reader has to rely solely upon the
precedence rules, without the aid of explicit parentheses. A case in point is the use of
the + or - operator inside a shift. Many readers will be spared unnecessary effort if
parentheses are use to clearly express the intent of the programmer, even though the
intent is unambiguous to the programmer and to the compiler.
T
identifier takes only zero or two arguments
Expecting zero or two arguments only.
the meaning of \a is different in traditional C
When the -wtraditional
option is used, the escape sequence \a is not recognized
as a meta-sequence: its value is just a. In non-traditional compilation, \a represents
the ASCII BEL character.
the meaning of \x is different in traditional C
When the -wtraditional option is used, the escape sequence \x is not recognized
as a meta-sequence: its value is just x. In non-traditional compilation, \x introduces
a hexadecimal escape sequence.
third argument of identifier should probably be char **
Expecting third argument of specified identifier to be of type char **.
this function may return with or without a value
All exit paths from non-void function should return an appropriate value. The compiler
detected a case where a non-void function terminates, sometimes with and sometimes
without an explicit return value. Therefore, the return value might be unpredictable.
this target machine does not have delayed branches
The -fdelayed-branch option is not supported.
too few arguments for format
When checking the argument list of a call to printf, scanf, etc., the compiler found that
the number of actual arguments was fewer than that required by the format string.
Protego_Release_01_05-Related-OEM-Documentation-MPLAB-XC16-C-Compiler.pdf