#pragma pack
지시문을 _Pragma оperator
까지 구현하여 데이터 구조 정렬을위한 매크로를 만들려고합니다. 이 책 의 책에 기술되어 전체 'C : 요컨대 "C 매크로를 이용한 구조체 패킹
#define STR(s) #s
#define ALIGNMENT(n) _Pragma(STR (pack(n)))
#define ALIGNLEVEL(l) ALIGNMENT(l)
int main()
{
....
if(1)
{
ALIGNLEVEL(1)
printf("%s\n", STR(Byte-aligned: no padding));>
}
else
{
ALIGNLEVEL(4)
printf("%s\n", STR(four-byte: boundaries));
}
typedef struct s
{
size_t l_num;
short h_num;
char ch;
} s;
내 구조의 크기 7 바이트 같아야하는 예상 결과 (바이트 배열) 또는 11 바이트 x64 비트 플랫폼 위의 코드는 GCC 4.7.x 및 -Werror
옵션으로 컴파일되며 반환 결과는 8 바이트 (32 비트 OS)입니다.
이 매크로에 어떤 문제가 있습니까?
왜 이런 일이 발생합니까?
매크로의 사용이 적절하지 않은 것으로 의심됩니다. –