BUG: Trigraph Statements May Produce End-of-File Error

ID: Q120668


The information in this article applies to:
  • The C/C++ Compiler (CL.EXE), included with:
    • Microsoft Visual C++ for Windows, 16-bit edition, versions 1.0, 1.5
    • Microsoft Visual C++, 32-bit Editions, versions 1.0, 2.0, 4.1, 4.2, 5.0, 6.0


SYMPTOMS

Trigraphs are three-character sequences used to represent punctuation unavailable in a character set. When the compiler encounters Trigraph statements that use ifdef and endif statements, it gives the following erroneous end-of-file error:

fatal error C1004: unexpected end of file found.


CAUSE

Trigraph translation is not finished before processing, so the #endif (the equivalent of ??=endif) is not reached.


STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.

NOTE: This problem did not occur in Microsoft Visual C++, 32-bit Edition, version 4.0.


MORE INFORMATION

The following is sample code to reproduce the problem:


   /* Compile options needed: none
   */ 

   ??=ifdef TESTING
   int i=0;
   ??=endif 

Additional query words: 1.00 1.50 2.00 8.00 8.00c 9.00 5.00

Keywords : kbCompiler kbVC100bug kbVC150bug kbVC200bug kbVC410bug kbVC420bug kbVC500bug kbVC600bug
Version : winnt:1.0,2.0,4.1,4.2,5.0,6.0
Platform : winnt
Issue type : kbbug


Last Reviewed: April 16, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.