[cfe-dev] Warnings are different on preprocessed file
Richtarsky, Martin
martin.richtarsky at sap.com
Wed Mar 12 07:13:59 PDT 2014
Hi,
is this expected behavior?
cat preproc_warning.sh
#!/bin/bash
echo "-- direct compilation:"
clang++ -c preproc_warning.cpp -o /dev/null
echo "-- preprocessing:"
clang++ -E preproc_warning.cpp -o preproc_out.cpp
echo "-- compilation of preprocessed source:"
clang++ -c preproc_out.cpp -o /dev/null
cat preproc_warning.cpp
#include <stddef.h>
#define CHECK(a) ( a ? 1 : NULL)
int func1()
{
int a;
return NULL; // produces warning during direct compilation and compilation of preprocessed source
}
int func2()
{
int a;
return (CHECK(a)); // produces warning only on preprocessed source
}
shows this output:
-- direct compilation:
preproc_warning.cpp:8:12: warning: implicit conversion of NULL constant to 'int' [-Wnull-conversion]
return NULL; // produces warning during direct compilation and compilation of preprocessed source
~~~~~~ ^~~~
0
1 warning generated.
-- preprocessing:
-- compilation of preprocessed source:
preproc_warning.cpp:8:12: warning: implicit conversion of NULL constant to 'int' [-Wnull-conversion]
return __null;
~~~~~~ ^~~~~~
0
preproc_warning.cpp:14:23: warning: implicit conversion of NULL constant to 'int' [-Wnull-conversion]
return (( a ? 1 : __null));
~~~~~~ ^~~~~~
0
2 warnings generated.
Best regards,
Martin
More information about the cfe-dev
mailing list