본문 바로가기

C 언어/임베디드 C

#pragma 지시어의 사용법 정리 #pragma는 이것을 지원하는 다른 compiler에서 방해가 없이 C++ Builder에서 원하는 지시어를 정의할 수 있도록 해줍니다. 만일 지시명을 인식하지 못한다면 에러 또는 경고 메세지를 수반하지 않고서 #pragma의 지시를 무시하게 됩니다. Borland C++ Builder에서 지원하는 #pragma지시어는 모두 18가지가 있습니다. 1. #pragma anon_struct . 사용법 #pragma anon_struct on #pragma anon_struct off . Class에 익명의 구조체를 포함하여 compile하는것을 허락할 것인지를 지시합니다. 익명이란 tag를 갖지 않는다는것을 의미합니다. ex) 1: #pragma anon_struct on 2: struct S { 3: i.. 더보기
FILE 구조체 FILE 구조체 내용 C에서 정의된 FILE 구조체 typedef struct _iobuf { char* _ptr; //파일포인터로 파일의 현재 위치를 나타낸다. int _cnt; //입력버퍼에서 사용할 수 있는 문자의 개수 char* _base; //메모리상에 있는 파일 원형의 주소를 가리킨다. int _flag; //파일 포인터가 파일의 끝에 오면 제 5bit가 1이 됨. int _file; //파일 식별자 int _charbuf; //문자열 버퍼 int _bufsiz; //버퍼의 크기 char* _tmpfname; //임시 파일 이름의 위치? } FILE; FILE *fp; fp=("data.txt", "w+t"); char* _ptr; //파일포인터로 파일의 현재 위치를 나타낸다. int _cnt.. 더보기
공용체(메모리 겹쳐쓰기를 허용) 공용체는 선언이나 사용방법이 구조체와 유사하지만 자료형이 다른 멤버들이 같은 메모리를 공유한다는 점이 다르다. 일반 구조체 #include typedef struct emb { unsigned int a; unsigned short b; unsigned char c; }EMB; int main() { EMB test; test.a = 0x12345678; test.b = 0xaaaa; test.c = 0xbb; printf("test.a = %08X\n", test.a); printf("test.b = %08X\n", test.b); printf("test.c = %08X\n", test.c); test.a = 0x11223344; printf("test.a = %08X\n", test.a); print.. 더보기
열거형 열거형은 이름을 갖는 정수형의 상수를 정의하여 프로그램을 이해하기 쉽게 해 준다. 열거형은 예약어 enum을 사용하여 정의한다. #include struct test { int one; }; enum test2 { ZERO = 100, ONE, TWO //기준점으로부터 1씩 증가 }; int main() { struct test a; a.one = ONE; printf("a.one = %d\n", a.one); //1 출력 printf("ONE = %d\n", ONE); //1 출력 printf("ZERO = %d\n", ZERO); //0 출력 printf("TWO = %d\n", TWO); //2 출력 return 0; } [결과] ZERO에 100이라는 수가 없다면 0으로 나온다. #include .. 더보기
연결리스트 Linked List #include /*struct _node { int iNum; }; //1번 typedef struct _node{} NODE;*/ //2번 typedef struct _node { int iNum; struct _node *next; }NODE; //1번+2번(이렇게 쓰는 구조체가 편리) int main() { NODE one; NODE two; NODE three; NODE *p; //초기값 one.iNum = 1; two.iNum = 2; three.iNum = 3; //값출력 printf("one.iNum = %d\n", one.iNum); printf("two.iNum = %d\n", two.iNum); printf("three.iNum = %d\n", three.iNum.. 더보기