2011년5월6일...절대값abs(), linux man page, const, 난수발생함수rand(), 함수포인터, ATmega128 타이머/카운터0를 이용한 ms단위 지연함수 sleep()

 

자료수집하는 시간보다 분석, 정리, 요약해 블로그에 올리는 시간이 더 많이 걸리고 집에선 문서작성이 잘 되지 않는다. 해결책은?

이번에 작성한 5월6일자 포스트는 10일에 새로 작성할 것.

 

임베디드C p.187 수학함수

○절대값을 구하는 함수 abs()

image

★수학함수도 이렇게 만들 수 있다. 

# man (Manual) 

(Manual의 약자로 명령이나 함수의 자세한 사용법에 대해 알려준다.)

 

image

man 다음에 아무 파라메터(명령이나 함수)를 넘기지 않아 뭘 원하느냐고 질문한다.

 

# man abs

image

abs(3) 에서 3은 함수를 뜻한다.
나가려면 q키를 누른다.

 

# man ls

image

ls(1) 1은 리눅스콘솔에서 내리는 명령을 뜻한다.

★우리는 리눅스관리자가 아니니 리눅스 프로그래머 메뉴얼인 3번이 중요하다. 잘 읽어 볼 것.

 

# man printf

image

PRINTF(1L)은 C언어에서의 printf() 함수가 아니라 리눅스콘솔에서 명령이다.
L은 어떤 의미일까?

 

# man 3 printf

image

 

★1번 linux user command보다 3번 programmer’s manual이 중요.

 

printf의 경우 콘솔명령과 C언어에서의 함수…이렇게 같은 이름이 있을 땐 중간에 섹션번호를 아래와 같이 적어준다,

# man {섹션번호} [명령 또는 함수]

image

NAME에는 비슷한 함수들을 나열해 보여준다. 형식변환에 관한 것들인데 모두 printf라는 단어를 포함하고 있다. 그러니..
모두 비슷한 일을 하는 함수들이라 볼 수 있다.

SYNOPSIS는 함수의 인터페이스...프로토타입과 비슷한 것이라 생각하면 된다.
여기서 printf()의 반환값이 int형이라는 것을 알 수 있고 전에 확인하였듯이 화면에 출력된 문자의 수를 리턴한다.

const char * format,...); 에서,

const는 상수를 의미하는 예약어로 앞에 붙이면 변수도 값을 변경할 수 없는 신비한 마법과 같은 일이 일어난다.
char *는 문자열의 시작을 나타낸다. const와 char *를 합하면 문자열이 된다.

printf(“바보”);에서 “바보”가 바로 const char *인 것이다.
format은 아마도 “바보 %d”처럼 어떤 양식이 있다는 것을 알려주는 것일 것이다. (밑에 format에 관한 설명이 있구나)

,…는 가변인자로,

특징은 첫 번째 인자를 반드시 필요로 한다. 인자를 넣지 않을 수도 한개, 두개 넣을 수도 있다.
이것도 신비한 마법과 같은 C언어 문법이 아닐까?
printf()어렵다.

1교시 중간정리…

man명령에서,
1번 섹션은 shell명령
3번 섹션은 C언어(gcc)에서 함수

 

image

 

 

const (임시 제목)

 

 image

 image


const int *p = &A;   ← p가 가리키는 곳이 상수 (수정불가)
*p = 101; ← 경고 read only location

 

 

 

man page 정리

 

 

 

난수발생함수 rand()

 

 

 

함수포인터

 

 

ATmega128 타이머/카운터

 

 

타이머/카운터를 이용한 시간지연함수

 DSCN2938

 image

 image

 

 

 

 

참조 (Reference)

 

DSCN2930 DSCN2931 DSCN2932 DSCN2933 DSCN2934 DSCN2935 DSCN2936 DSCN2937 DSCN2938