C Language Possible pitfall due to trigraphs


Example

C99

While writing // delimited comments, it is possible to make a typographical error that affects their expected operation. If one types:

int x = 20;  // Why did I do this??/

The / at the end was a typo but now will get interpreted into \. This is because the ??/ forms a trigraph.

The ??/ trigraph is actually a longhand notation for \, which is the line continuation symbol. This means that the compiler thinks the next line is a continuation of the current line, that is, a continuation of the comment, which may not be what is intended.

int foo = 20; // Start at 20 ??/
int bar = 0;

// The following will cause a compilation error (undeclared variable 'bar')
// because 'int bar = 0;' is part of the comment on the preceding line
bar += foo;