PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2007/04/12 20:24:47
Name 레이노르
Subject c언어 질문좀 드릴게요;
오늘 학교에서 과제를 내주었는데

이 내용이 잘 이해가 안되네요;; 대충 어떻게 짜라는건지 좀 알려주세요;;

일단 문제내용은

두 수를 곱하는 매크로 MULT(x,y)를 정의하여 다음과 같은 문장이 실행되도록
프로그램을 작성하시오.

result = MULT(10,20)

이건데요..;

저 매크로를 정의하라는것이 헤더파일을 만들어서 하라는건지;;

그리고 저 결과물에 나온 10,20 은 제가 입력하라는거 겠죠?..아닌가;;

부탁드립니다;; c언어배운지 이제 한달되서 모든게 다 어렵네요ㅡ_ㅜ;;

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
chowizard
07/04/12 20:57
수정 아이콘
#define문을 이용하세요.

#define MULT(x,y) ((x) * (y))

이런 매크로를 작성하면 됩니다. define문은 뒤에 세미콜론 안 씁니다.
값 확인하는 건 printf문으로 대충 하나 짜 주시면 됨.
아이온
07/04/12 21:25
수정 아이콘
C 언어는 사실 2주면 배울 수 있습니다. 다만 컴퓨터의 기본 개념은 이해하는 데 좀더 시간이 걸립니다. 언어를 공부할 때 어려움을 겪는 까닭은 아마도 컴퓨터의 동작 원리를 잘 모르시기 때문인 것 같습니다. 논리회로 과목을 같이 공부하는 게 보통 도움이 된다고 봅니다.

소스 코드는 기계어로 번역되어야 수행될 수 있습니다. 기계어는 고급 언어보다 더 단순한 명령어 집합입니다. 극단적으로 소스 코드는 곱셈을 지원하지만 기계어는 덧셈이나 비교연산만 지원할 수도 있습니다. 그 경우 컴파일러는 소스 코드의 곱셈 기호를 읽어서, 반복적인 덧셈으로 번역해 주어야 합니다.

하지만 프로그래머는 여전히, 소스 코드의 곱셈을 자유롭게 사용합니다. 말하자면 컴파일러는 프로그래머에게 고급 언어라는 추상을 제공합니다.

function 역시 그런 추상의 하나입니다. 고급 언어에는 있지만, 기계어에는 보통 없습니다. 하드웨어의 기계어에 그런 고급 언어가 없는 까닭은, 그렇게 해야 하드웨어 디자인이 현실적으로 간단해지기 때문입니다.

function은 C에서 일을 divide and conquer, 모듈 단위로 잘개 쪼개어 처리하기 위해서 필수적인 도구입니다. 앞서 언급한 바 기계어는 보통 지원하지 않습니다.

따라서 컴파일러는 function의 코드를 기계어로 작성한 뒤, function을 부르는 부분을, 그 코드가 있는 부분으로 jump 하는 종류의 코드로 바꾸게 됩니다. 패러미터를 넘기거나 리턴값을 받거나 scope 문제를 처리하기 위해 보통 function에서 사용하는 변수나 인수를 위해 메모리 영역의 일부를 특별히 관리하는데, 이 관리 역시 기계어로 이루어지기 때문에 대개 function은 overhead가 큽니다.

매크로는 function처럼 module 단위로 일을 처리하되, overhead는 크지 않게 하는 방법입니다. function은, 실제로 기계어로 단 하나의 모듈만 작성되고, function을 call할 때, 그 기계어 코드가 있는 주소로 점프하는 방식이지만, 매크로는 컴파일러가 소스 코드를 기계어로 바꾸기 직전에, 모든 매크로를 정의된 source로 바꿉니다.

즉 MULT(x, y) 꼴로 등장하는 모든 소스 코드를 ((x)*(y))로 바꾸게 됩니다. 프로그래머에게 보이기는 매크로 쪽이 좀더 쓰기 복잡하다는 것 외에 펑션과 다를 바 없지만, 기계에게는 함수 호출 부분을 일일이 풀어서 써놓은 것이나 같은 효과를 냅니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
26839 DRM제한이 없는 음악사이트좀 알려주세요.... [3] Adada2146 07/04/14 2146
26837 차기 스타리그 부터는 16강인가요? [1] LeoStyLe1930 07/04/14 1930
26836 저그할때 오버로드로 뮤탈 뭉치는 이유 좀 알려주세요 [5] 김관진2477 07/04/13 2477
26834 툴바를 삭제하고 싶은데 이름이 없습니다;; [5] Breeze2110 07/04/13 2110
26833 디카 추천해주세요 [2] 이민재1751 07/04/13 1751
26831 번호이동으로 저렴하고 괜찮은 DMB핸드폰 추천좀해주세요~~ [1] 라임밍기뉴2394 07/04/13 2394
26830 헬스와 보충제에 대한 질문입니다~ [2] Tears...2666 07/04/13 2666
26828 개츠비 왁스가 머리(두발)에 안 좋나요? [7] Ms. Duff8564 07/04/13 8564
26827 24보신 분들에게 질문..(스포일러 될 수도 있습니다.) [2] sungsik-2169 07/04/13 2169
26826 외장 하드에 대해 질문입니다. [4] 영원한 초보2101 07/04/13 2101
26825 메가스터디 사회문화 선생님추천좀해주세요!! [2] PuyopuyO2645 07/04/12 2645
26824 지갑추천좀해주세요~ [9] PuyopuyO2093 07/04/12 2093
26823 수능 경제 개념서 하나 추천해주세요 [7] Daylight4195 07/04/12 4195
26822 소설책 황제의검 보신분들께 질문 [2] 마이스타일1990 07/04/12 1990
26821 aufeh2 O 님의 정체? [4] d2089 07/04/12 2089
26820 턴제 시뮬레이션 게임 추천 부탁드립니다. [3] 허저비4569 07/04/12 4569
26818 롱기누스 미네랄멀티?? [1] 대항해시대1961 07/04/12 1961
26817 c언어 질문좀 드릴게요; [2] 레이노르1717 07/04/12 1717
26816 mp3 플레이어 질문 입니다. [4] 고등어3마리2193 07/04/12 2193
26815 축구 사이트에 관해 [8] 푸른잎새1644 07/04/12 1644
26814 g마켓에서 물건사다가 질문 [2] 이민재2100 07/04/12 2100
26813 캠코더 구입 관련해서 질문드립니다! [1] 심심1623 07/04/12 1623
26812 디아블로 베틀넷 문제입니다.. [2] MOKA~★1916 07/04/12 1916
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로