2011년4월22일..#define, -D옵션, CFLAGS, avr-gcc에서 Makefile의 CFLAGS, 인수(매개변수)가 있는 사용자 정의 함수
#define (임베디드C p.21 p1-6.c) |
예제1-6을,
# gcc –save-temps –o main main.c
컴파일시 중간파일들을 삭제하지 않고 main.i를 열어 보면 오른쪽과 같이 PI가 3.1416으로 바뀌어져 있다.
전처리 후 #include와 #define은 C코드와 어셈블단계에 맞게 변형되어진 코드들로 변환된다는 것을 알 수 있다.
★왜 #define을 쓰는가?
심재원氏: 코드가 길어지면 상수가 의미하는 바를 알기 힘드니 PI로 두면 다른 사람이 보았을 때 “PI니까 원주율이겠구나!”라고 알게 됨.
공정우氏: (!@#$%@#%&%^) (말소리가 작아 못 알아 들었다. 내 귀는 S/N비가 좋지 않다.)
두 사람을 합하면 정답이다. 그럼 공정우氏의 답을 추측할 수 있겠군…
아래와 같이,
변수를 선언하면 메모리를 사용하므로 임베디드같이 메모리=돈인 시스템에선 좋지 않다. (PC에서도 좋지 않음)
PI가 500개 쓰이면 #define의 PI값만 바꾸면 500개의 값이 동시에 바뀌므로 500개의 값을 다 바꾸는 노가다를 하지 않아도 된다.
(문서작성 예약명령모음)
○#define부분을 주석처리하고 컴파일…추가
○# gcc -DPI=3.1416 –o main main.c 컴파일시 결과화면과 설명추가
○Makefile (CFLAGS)추가
○win-avr에서 -DF부분…Makefile의 컴파일옵션…추가
○비주얼스튜디오 프로젝트-세팅-디버그 or C/C++ 비주얼 스튜디오도 옵션을 쳐야하나…추가
○20110422_function test.c 소스와 설명 추가
○중복선언관련 추가
○인자 두개인 함수 추가
○반환있는 함수 추가
○DK-128 확장보드 KEY TEST회로와 설명 추가
○DK-128 확장보드 LED TEST회로와 설명 추가
○오늘실습 KEY입력받아 바로 LED에 출력 코드와 설명 동영상설명 추가
○응용실습예제 1과 2 코드와 설명, 동영상설명 추가…
(첨부영상)
16.000은 16.000Mhz 그 이하는 오차… 20일날 CM선생님께서 설명하신 것…사진은 오늘 찍었음.. 쿠쿠