http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51259
Bug #: 51259 Summary: no escape on control characters on linemarker lines Classification: Unclassified Product: gcc Version: 4.6.2 Status: UNCONFIRMED Severity: trivial Priority: P3 Component: preprocessor AssignedTo: unassig...@gcc.gnu.org ReportedBy: pertu...@free.fr In the cpp manual, node 'Preprocessor Output' it is told about linemarker lines They mean that the following line originated in file filename at line linenum. filename will never contain any non-printing characters; they are replaced with octal escape sequences. This is not what the following test shows (\x01 is also often denoted as C^A): echo "int main() { }" > aa`printf '\x01'`bb.h echo '#include "aa'`printf '\x01'`'bb.h"' > inc.c And look at cpp inc.c or gcc -E inc.c gcc compiles the file inc.c fine. I have no idea whether cpp should conform to the documentation or whether the documentation should be changed... $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/i486-linux-gnu/4.6/lto-wrapper Target: i486-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.2-4' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --enable-targets=all --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu Thread model: posix gcc version 4.6.2 (Debian 4.6.2-4)