Language&Framework&Etc112 파일의 분할과 헤더파일의 디자인(27-3) 헤더파일의 디자인과 활용 #include 지시자의 의미를 알면 헤더파일을 완전히 이해할 수 있음 예시 헤더파일 두 개를 아래와 같은 코드로 만든다. 1. header1.h { puts("Hello man!"); 2. header2.h return 0; } main문을 아래와 같은 코드로 구성한다. #include int main(void) #include "header1.h" #include "header2.h" 이상해보이지만 실행을 해보면 아래와 같이 결과가 나온다. 그렇다면 아래의 의미는 무엇인가 #include "header1.h" 이는 "이 문장의 위치에다가 header1.h에 저장된 내용을 가져다 놓으세요" 그렇다면 아래의 의미도 동일하다. #include "header2.h" "이 문장의 위치에다가 header2.h에.. 2020. 12. 19. 파일의 분할과 헤더파일의 디자인(27-2) 둘 이상의 파일을 컴파일하는 방법과 static에 대한 고찰 파일정리 총 세 개의 파일을 만든다. num.c func.c main.c main.c에서는 printf 함수의 호출문이 존재하기 때문에 C 언어의 표준 라이브러리 함수의 매크로 정의, 상수, 여러 형의 입출력 함수가 포함된 헤더 파일인 #include 추가 파일분할 예시 파일 추가(소스 파일 → 추가 → 새 항목) 아래와 같이 파일명 수정 후 추가 버튼 파일 세 개 작성 num.c func.c main.c main.c 실행 함수에도 static 선언 가능 전역변수에 static 선언을 할 수 있듯이 함수에도 static 선언을 할 수 있다. static 전역변수와 마찬가지로 파일 내에서만 접근이 가능하도록 함수를 제한 static void MinCnt(void) // 외부 파일에서 호출 불가능한 함수 {.. 2020. 12. 19. 파일의 분할과 헤더파일의 디자인(27-1) 파일의 분할 파일을 그냥 나눠도 될까요? 파일을 나누는 이유도 서랍장과 비슷하다. 파일을 나눠서 각각의 파일에, 용도 및 특성 별로 함수와 변수를 나눠서 저장하면 소스코드의 관리가 용이해진다. 프로그램을 나누는 방법을 고민 예시 #include /*======num.c========*/ int num = 0; /*===================*/ /*======func.c=======*/ void increment(void) { num++; } int getnum(void) { return num; } /*===================*/ /*======main.c=======*/ int main(void) { printf("num: %d \n", getnum()); increment(); printf(".. 2020. 12. 18. 매크로와 선행처리기(26-4) 매개변수의 결합과 문자열화 문자열 내에서는 매크로의 매개변수 치환이 발생하지 않는다. 문자열의 구성을 위한 매크로 함수를 다음의 형태로 정의 #define STRING_JOB(A, B) "A의 직업은 B입니다" 그리고 STRING_JOB(하이, 맨)이라는 매크로 문장이 다으므이 문자열을 만들어낼 것을 기대 "이동춘의 직업은 나무꾼입니다" 그러나 선행처리기는 기대대로 문자열을 만들어내지 못한다. "문자열 안에서는 매크로의 매개변수 치환이 발생하지 않는다." 따라서 "A의 직업은 B입니다"로 출력이 된다. 이 문제를 어떻게 해결? # 연산자를 사용하면 됨 문자열 내에서 매크로의 매개변수 치환이 발생하게 만들기: # 연산자 #define STR(ABC) #ABC "매개변수 ABC에 전달되는 인자를 문자열 "ABC"로 치환해라!" 이렇듯.. 2020. 12. 18. 이전 1 ··· 11 12 13 14 15 16 17 ··· 28 다음