मैं इस नमूने कार्यक्रम है नीचे से ऊपर कार्यक्रम के#pragma पैक() धक्का और पॉप बनाम खोल
#include <stdio.h>
#include <stdlib.h>
#pragma pack(push)
#pragma pack(1)
typedef struct{
char a;
int b;
char c;
}st_a;
#pragma pack(pop)
typedef struct{
char a;
int b;
char c;
}st_b;
int main()
{
printf("size of struct a %zd \n",sizeof(st_a));
printf("size of struct b %zd \n",sizeof(st_b));
return 0;
}
आउटपुट
size of struct a 6
size of struct b 12
अब है अगर मैं नीचे के रूप में struct घोषणा को बदलने के साथ: कार्यक्रम के
#pragma pack(1)
typedef struct{
char a;
int b;
char c;
}st_a;
#pragma unpack()
आउटपुट
हैsize of struct a 6
size of struct b 6
व्यवहार में यह अंतर क्यों है? मेरी समझ यह थी कि दोनों संरचना घोषणाएं एक ही काम कर रही हैं।
मैं इसे अपने एमबीपी पर चला रहा हूं।
$gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.4.0
Thread model: posix
आप किस कंपाइलर का उपयोग कर रहे हैं? – slugonamission
मुझे लगता है कि आप एमएसवीसी का उपयोग कर रहे हैं। AFAICT में कोई प्रगति नहीं है 'अनपैक() ' – Hasturkun
@ हस्तार्कुन - रेनेसास कंपाइलर्स' #pragma unpack' का समर्थन करते हैं, लेकिन 'pragma पैक (पुश) 'एस का समर्थन नहीं करते हैं। – slugonamission