The difference between a string literal in C and a quoted header name is that the latter is " q-char-sequence " in the Standard (section 6.10.2). This is indeed also a valid string literal, but not vice versa.
A string literal can include an encoding prefix (such as L) and escape sequences.
pcpp looks for a string literal following #include. It uses the characters in the token's value as the file name. Instead, it should look for " q-char-sequence ".
Examples:
This will try to open "test.h" but with wide characters in the string, which is not what is intended. Instead, this should be a syntax error (assuming L is not a macro).
The intention is to open "test.h" in the parent directory (on Windows systems). The \ is just an ordinary character in the file name. pcpp will try to open "..\test.h" in the current directory, with ]t` being a tab character.
The fix
Use similar code to that used for #include < h-char-sequence >. Note (Standard section A.1.8), an h-char is any character other than > or \n.
The difference between a string literal in C and a quoted header name is that the latter is
" q-char-sequence "in the Standard (section 6.10.2). This is indeed also a valid string literal, but not vice versa.A string literal can include an encoding prefix (such as
L) and escape sequences.pcpp looks for a string literal following
#include. It uses the characters in the token's value as the file name. Instead, it should look for" q-char-sequence ".Examples:
This will try to open "test.h" but with wide characters in the string, which is not what is intended. Instead, this should be a syntax error (assuming
Lis not a macro).The intention is to open "test.h" in the parent directory (on Windows systems). The
\is just an ordinary character in the file name. pcpp will try to open "..\test.h" in the current directory, with ]t` being a tab character.The fix
Use similar code to that used for
#include < h-char-sequence >. Note (Standard section A.1.8), anh-charis any character other than>or\n.