BUG: Incorrect Use of #pragma Pack Causes C1001 Errors

ID: Q119873


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


SYMPTOMS

When compiling code that uses #pragma pack() to pop an ID that has not been pushed after successfully popping an ID that was pushed, the compilers listed above will generate:

fatal error C1001: INTERNAL COMPILER ERROR
In addition, this error will be followed by a message similar to

(compiler file 'msc1.cpp', line 902)
Please choose the Technical Support command on the Visual C++ Help menu, or open the Technical Support help file for more information


RESOLUTION

Pop only IDs that have been previously pushed onto the compiler's internal stack.


STATUS

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


MORE INFORMATION

The following sample code demonstrates the bug:

Sample Code


/* packfail.c

Compile options needed: none
*/ 

#pragma pack(push, a)
#pragma pack(push, b, 4)
#pragma pack(pop, b)
#pragma pack(pop, value)
 

Additional query words: kbVC400bug 8.00 9.00 buglist1.00 buglist2.00 buglist8.00 buglist9.00 10.00 10.10 10.20

Keywords : kbCompiler kbVC100bug kbVC200bug kbVC400bug kbVC410bug kbVC420bug kbVC500bug kbVC600bug
Version : winnt:1.0,2.0,4.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.