본문 바로가기
코스웨어/11년 내장형하드웨어

[내장형]이동현_08월18일_일일보고서

by 알 수 없는 사용자 2011. 8. 19.
728x90
반응형

 

[임베디드 C]

 
☆전역변수와 열거형을 사용하여 요일출력 예제

<결과>



<설명>


열거형의 MON은 0의 값을 가지고 있기때문에 for문을 돌려서 출력하는것과 day[MON]을 사용하는것은 같은 결과 값을 가진다.

 

☆명령어 해석기 기법 예제

<결과>



<설명>


void (*fp)();는 void MONDAY()의 함수포인터이다.


반환형 void와 인자는 그대로 내려오게 되고 이름의 자리에 (*)포인터를 써주게 된다.

함수포인터를 배열로 타나내기 위해서는

[]를 밖에 써주게 되면 오류가 발생한다. 

도스에서 명령프롬프트는 현재위치>_ 커서가 무한으로 반복하게 된다.
그래서 무한반복을 위해 while문을 써주게 된다.
그리고 printf와scanf대신 저수준함수인 write와read함수를 써준다.
scanf는 길이 체크를 안하기 때문에 뻑이 난다. read는 사이즈를 체크하기때문에 뻑이 안난다.


는 iret는 NULL과 엔터키를 포함하고 있다. iret-1은 엔터자리에 NULL을 넣어서 엔터를 제외한다.
iret = strlen[buff]는 버퍼의 길이를 iret에 대입한다.
그래서 iret값이 0이 되면 반복문이 종료가된다. 즉, 명령에 엔터를 치게 되면 종료를 한다.
명령이 입력되면 이제 for문을 실행하게 되는데 buff와day[icnt]를 비교하여서 일치하게 되면 for문이 종료가 된다. 일치하지 않으면 for문을 다 수행하고 다시 while문을 수행한다.


buff와day가 일치하면 icnt와 같은값을 가진 열거형의 함수를 출력하게 된다.



※함수를 사용할때 잘못쓸수가 있는 fp[i]();에서 ()를 빼주고 fp[i]만 사용하게 되면 에러도 없고 컴파일도 잘되지만 아무것도 아니다. main()함수를 그냥 main써주는것과 같으니까 주의해야 될꺼 같다!!
 
Message Map


<결과>

글짜 하나만을 이용해서 요일찾기!! 비교함수를 strcmp대신 strncmp를 사용하였다.기존에 있던 요일 함수 fp와 day를 Message Map에 넣어 버렸다!!

[윈도우즈 API]

윈도우즈
-그래픽 기반 OS(GUI)
-멀티 태스킹 가능
-메시지 구동 시스템


-장치에 독립적이다.
-일관성이 있다.
-리소스가 분리되어 있다.



※윈도우즈API와 Win32API는 같은 말이다 Win32API는 (window 32bit API)이다.
 
 

API를 알아야하는 이유
1.운영체제를 이해하기 위해
2.어차피 알아야 하므로
 -클래스 라이브러리는 API함수의 기반 위에 만들어지는 것이므로 API를 모르고는 클래스라이브러리를 이해하기 힘들다.
3.자유를 얻기 위해
-클래스 라이브러리나 비주얼 툴은 편리하지만 프로그래머를 일정한 틀 안에 가두어 버린다. API는 자유를 구속하지 않는다.
4.가장 자연스러운 학습 과정이므로


CAPIC++MFC가 가장 이상적인 학습과정이다.

변수 명명법


-예를 들어 cbString이면 문자열의 바이트 수를 나타내는 정수형 변수라는 것을 알수 있다. 이런 변수 명명법을 헝가리식 명명법이라고도 한다. 함수의 원형을 보면 hWnd는 핸들이고 lpRect는 포인터이면 bErase는 진위형이라는 것을 금방 알수 있다.

윈도우즈 사용자 정의 데이터형



핸들에 대한 이해
-핸들이란 구체적인 어떤 대상에 붙여진 번호이며 문법적으로는 32비트(또는 64비트)의 정수값이다.
①핸들은 일단 정수값이며 대부분의 경우 32비트 값이다. 핸들을 사용하는 목적은 오로지 구분을 위한 것이므
   로 핸들끼리는 중복이 되지 않아야한다.
②핸들은 운용체제가 발급하며 사용자는 쓰기만 한다.
③같은 종류의 핸들끼리는 절대로 중복된 값을 가지지 않는다.
④핸들은 정수형이므로 값을 가지겠지만 그 실제값이 무엇인지는 몰라도 상관없다.

유니코드
-유니 코드는 16비트의 단일한 값으로 지구상의 모든 문자를 표현할 수 있는 문자 코드체계이다.



☆문자열 처리함수



☆윈도우즈 API 첫소스


<결과>



728x90