Use the C preprocessor cpp
to syntax check code, without compiling nor linking.
Prprocessed C/C++ code is saved in an intermediate .i
file, which can be syntax checked using the -fsyntax-only
flag.
C
CFLAGS = -g -Wall -Wextra -Werror -ansi -pedantic
cpp $(CPPFLAGS) $(CFLAGS) foo.c -o foo.i && gcc $(CFLAGS) -fsyntax-only foo.i
C++
CXXFLAGS = -g -Wall -Wextra -Werror -std=c++98
cpp $(CPPFLAGS) $(CXXFLAGS) foo.cpp -o foo.ii && gcc $(CXXFLAGS) -fsyntax-only foo.ii
Alternative way, use gcc
with the -E
flag:
C
gcc -ansi -pedantic -E foo.c > foo.i && gcc -ansi -pedantic -fsyntax-only foo.i
gcc -c -o foo.o foo.i
g++ -o foo foo.o
rm -f foo.i foo.o
C++
$ make
g++ -std=c++98 -E foo.cpp > foo.ii && g++ -std=c++98 -fsyntax-only foo.ii
g++ -c -o foo.o foo.ii
g++ -o foo foo.o
rm -f foo.ii foo.o
Makefile
Syntax check only:
make clean syntax
Syntax check and compile:
make clean all