반응형
일단 전처리 명령어 인것을 알아두자.
컴파일할대 플랫폼이 틀려지거나 CPU가 틀려지건자 하면 컴파일 옵션을 주게되는데
pragma 가 그런 역활을 한다.
옵션을 보면
once : 해당 소스가 한번만 include되게 하여 여러번include되는것을 컴파일러 차원에서 막아준다.
컴파일할대 플랫폼이 틀려지거나 CPU가 틀려지건자 하면 컴파일 옵션을 주게되는데
pragma 가 그런 역활을 한다.
옵션을 보면
once : 해당 소스가 한번만 include되게 하여 여러번include되는것을 컴파일러 차원에서 막아준다.
즉 컴파일 시간을 줄일수 있다.
comment(lib, *) : comment로 사용할수 있는 명령은 여러개가 있는데 그중 대표적인것이 lib
이므로 해당 라이브러리를 링크 시켜준다.
data_seg : dll에서 데이터를 공유하고자 할때 사용된다.
warning : 특정 warning을 체크하지 않는다. 예)warning(disable : 4705) => 4705번 warning은
나타자지 않는다.
message : 컴파일시 특정 문장을 표시한다.
예)message("이건 아닌 #pragma message야")
pack : 변수정렬을 인위적으로 변경시킨다. 보통은 4byte로 지정되어 있다.
예)#pragma pack(1)의 예
typedef struct test
{
comment(lib, *) : comment로 사용할수 있는 명령은 여러개가 있는데 그중 대표적인것이 lib
이므로 해당 라이브러리를 링크 시켜준다.
data_seg : dll에서 데이터를 공유하고자 할때 사용된다.
warning : 특정 warning을 체크하지 않는다. 예)warning(disable : 4705) => 4705번 warning은
나타자지 않는다.
message : 컴파일시 특정 문장을 표시한다.
예)message("이건 아닌 #pragma message야")
pack : 변수정렬을 인위적으로 변경시킨다. 보통은 4byte로 지정되어 있다.
예)#pragma pack(1)의 예
typedef struct test
{
char A;
char B;
int C;
char* D;
int E;
char B;
int C;
char* D;
int E;
}test;
이렇게되면 14byte 같지만 실제로는 16byte를 차지한다.(sizeof 해보면됨)
이럴경우 pack을 사용하는데
#pragma pack(1)
typedef struct test
{
이렇게되면 14byte 같지만 실제로는 16byte를 차지한다.(sizeof 해보면됨)
이럴경우 pack을 사용하는데
#pragma pack(1)
typedef struct test
{
char A;
char B;
int C;
char* D;
int E;
char B;
int C;
char* D;
int E;
}test;
#pragama pack
이런형식으로 사용하면 된다. 그런후 sizeof를 해보면 14byte를 나타 내게될 것이다.
기타 pack (push, n) / (pop)
#pragama pack
이런형식으로 사용하면 된다. 그런후 sizeof를 해보면 14byte를 나타 내게될 것이다.
기타 pack (push, n) / (pop)
반응형
'C' 카테고리의 다른 글
- 동적배열 - malloc() (0) | 2010.10.21 |
---|---|
- 함수 포인터 , void형 포인터 - (0) | 2010.10.20 |
- 비트 연산자 - (0) | 2010.10.18 |
- goto문 - (0) | 2010.10.18 |
===== 웹 컴파일러 ====== (0) | 2010.09.28 |