Submitter: Rajan Bhakta
Submission Date: 2016-04-12
Document: WG14 N2039
Related: WG14 N1997
Title: _Pragma problem example

For _Pragma, nothing seems to prevent it from not being the first statement on a line.

6.10.9#1 does not give the limitation.
It actually explicitly says it is treated as pp-tokens in a preprocessing directive,
but does not say it has to be the first statement in a line.

6.10#2 says preprocessing directives have to be the first statement in a line,
but _Pragma is an operator not a directive and hence does not have that restriction.
Even if it is considered a directive, it does not have # as the first preprocessing token that 6.10#2 requires.

Ex.
vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) _Pragma("map(vsscanf, \"__isoc99_vsscanf\")")
may be valid but this is likely not intended.