When I compile this simple C file:
#include <stddef.h>
int main() {
return '\1\2';
}
I get a warning:
foo.c:3:10: warning: multi-character character constant
When I compile the same file using --save-temps, I do not get a warning.
Similarly, if I use -E to produce a preprocessed file, and compile that, I do
not get a warning. This is a bug: options like --save-temps and -E should not
affect the set of warnings which are issued.
However ,I noticed that I do get a warning if I compile with --save-temps
-Wsystem-headers.
This appears to be a bug in libcpp: when a line directive indicates that it is
entering a system header file, it records the current state. However, it
apparently does not restore the old state when it exits the system header file.
The effect is that preprocessor warnings and errors are suppressed in a .i
file if a system header file is included.
--
Summary: gcc --save-temps does not give "multi-character
character constant" error
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: preprocessor
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ian at airs dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29612