Microsoft KB Archive/122275

= FIX: C Run-time Include Files Missing #pragma Pack Directives =

Article ID: 122275

Article Last Modified on 11/18/2003

-

APPLIES TO

 The C Run-Time (CRT), when used with:  Microsoft Visual C++ 1.0 Professional Edition

 Microsoft Visual C++ 2.0 Professional Edition 

-



This article was previously published under Q122275



SYMPTOMS
The include (.H) files shipped with Visual C++ do not use the #pragma pack preprocessor directive around declarations of structures used by C run-time functions. You may run into problems using C run-time functions in your program if:


 * You are compiling files with the /Zp compiler option and using a value other than 8 as the argument. -or-


 * You are using #pragma pack in your source files.



CAUSE
Problems occur because most C run-time functions expect the structures they work on to be built with the default compiler structure packing. The structure packing they expect would be specified with one of these compiler options: /Zp8, /Zp, or no /Zp.



RESOLUTION
If you are changing the default structure packing when building your application, add #pragma pack directives around the #includes of the C run-time include files to specify 8 as the packing alignment. This is illustrated in the sample code shown in the More Information section.

<div class="status_section">

STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem was fixed in Microsoft Visual C++, version 4.0.

<div class="moreinformation_section">

MORE INFORMATION
There are other potential problems with changing the default structure packing. For additional information, please see the following article in the Microsoft Knowledge Base:

117388 PRB: Structure Packing Causes Some Win32 Programs to Fail

<div class="references_section">

Sample Code
/* Compile options needed: none


 * 1) pragma pack( push, 8 )
 * 2) include <stdio.h>
 * 3) pragma pack( pop )

void main( void ) {   FILE *fp;

fp = fopen( "c:\\autoexec.bat", "r" ); }

Additional query words: 1.00 2.00 runtime run time error errors errno

Keywords: kbbug kbfix kbcrt KB122275

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.