poppack.h wrong?
i got a Project to go on coding, so its not my code till now and i can´t explain the following warning message in VS2008 compiling my code:
Warnung 2 warning C4161: #pragma pack(pop...): Mehr pop- als push-Vorgänge c:\programme\microsoft sdks\windows\v6.0a\include\poppack.h 29
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
poppack.h
Abstract:
This file turns packing of structures off. (That is, it e开发者_JAVA技巧nables
automatic alignment of structure fields.) An include file is needed
because various compilers do this in different ways.
poppack.h is the complement to pshpack?.h. An inclusion of poppack.h
MUST ALWAYS be preceded by an inclusion of one of pshpack?.h, in one-to-one
correspondence.
For Microsoft compatible compilers, this file uses the pop option
to the pack pragma so that it can restore the previous saved by the
pshpack?.h include file.
--*/
#if ! (defined(lint) || defined(RC_INVOKED))
#if ( _MSC_VER >= 800 && !defined(_M_I86)) || defined(_PUSHPOP_SUPPORTED)
#pragma warning(disable:4103)
#if !(defined( MIDL_PASS )) || defined( __midl )
#pragma pack(pop)
#else
#pragma pack()
#endif
#else
#pragma pack()
#endif
#endif // ! (defined(lint) || defined(RC_INVOKED))
Can you explain why? Isnt this a Microsoft File?
You need to make sure that you match every
#include <pshpack.h>
with a use of
#include <poppack.h>
If my German is serving me right, it's complaining about a mis-match.
It seems that you must include pshpack.h
at the beginning of your code, and include poppack.h
at the end.
精彩评论