1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] NATE HARDISON : 프로그래밍에서는 라이브러리의 모음입니다 2 00:00:09,470 --> 00:00:11,380 관련 prewritten 코드입니다. 3 00:00:11,380 --> 00:00:14,350 도서관은 어떻게 같은 프로그래머, 공유 공통이며 4 00:00:14,350 --> 00:00:16,930 다른 프로그램들과 서로 도움이 코드를, 우리 5 00:00:16,930 --> 00:00:19,470 , 쓰기, 심지어 서로 다른 프로세스에서 실행과 6 00:00:19,470 --> 00:00:21,380 우리 컴퓨터에서 같은 시간에. 7 00:00:21,380 --> 00:00:23,000 >> 의 좀를 둘러 보자. 8 00:00:23,000 --> 00:00:25,070 아마 표시 한 더 일반적인 기능 중 하나 9 00:00:25,070 --> 00:00:27,500 사용하고는 printf 함수입니다. 10 00:00:27,500 --> 00:00:29,820 이제 printf 있었 마법의 기능은 없습니다 11 00:00:29,820 --> 00:00:31,670 컴퓨터에 하드 코딩 - 12 00:00:31,670 --> 00:00:34,320 대신에,은 C 표준 라이브러리의 일부입니다 13 00:00:34,320 --> 00:00:36,080 함께 제공 기능 모음 14 00:00:36,080 --> 00:00:38,050 C 프로그래밍 언어입니다. 15 00:00:38,050 --> 00:00:40,920 printf가 컴퓨터에 내장되지 않기 때문에, 그 의미 16 00:00:40,920 --> 00:00:43,520 거기에 실제로 들어 갔어요 일부 프로그래머가이고 썼다 17 00:00:43,520 --> 00:00:46,310 printf 함수와 표준의 나머지와 함께 번들로 18 00:00:46,310 --> 00:00:48,880 도서관 미래의 프로그래머가 필요하지 않을 수 있도록 19 00:00:48,880 --> 00:00:50,310 노력을 중복. 20 00:00:50,310 --> 00:00:52,620 확인 때문에 우리는, 그런 경우 확인 감사이야 21 00:00:52,620 --> 00:00:54,710 실제로 printf 구현하는 데 걸리는 얼마나 코드 아웃. 22 00:00:59,590 --> 00:01:02,860 >> printf 부분 중 C 표준 라이브러리가 있으며, 23 00:01:02,860 --> 00:01:04,480 가장 중요한 도구 중 하나 당신이 24 00:01:04,480 --> 00:01:06,770 CS50를 예방에 있습니다. 25 00:01:06,770 --> 00:01:08,780 입력 - 출력 라이브러리 외에도 곳 26 00:01:08,780 --> 00:01:11,370 printf 생활은 다른 도서관의 폭도 그 27 00:01:11,370 --> 00:01:14,230 당신은 아마 CS50의 과정을 통해 사용합니다. 28 00:01:14,230 --> 00:01:16,730 예를 들어, 문자열 라이브러리에 기능을 가지고 29 00:01:16,730 --> 00:01:20,960 C 문자열을 비교, 자신의 길이를, 그를 연결. 30 00:01:20,960 --> 00:01:22,410 그리고 수학 라이브러리가 도움 제공 31 00:01:22,410 --> 00:01:25,062 파이와 전자 같은 상수. 32 00:01:25,062 --> 00:01:27,650 이제 다른 프로그래밍의 표준 라이브러리에 비해 33 00:01:27,650 --> 00:01:31,190 언어는 C 표준 라이브러리는 정말 작은 34 00:01:31,190 --> 00:01:34,060 하지만 그들은 여전히​​ 물건이 많이 있습니다. 35 00:01:34,060 --> 00:01:36,370 그래서 표준 라이브러리가 있다는 것은 아니다 36 00:01:36,370 --> 00:01:39,020 만 C 라이브러리, 안에있는 많은이 있습니다 37 00:01:39,020 --> 00:01:42,460 세계가 CS50 도서관을 포함하여 사용하기위한 38 00:01:42,460 --> 00:01:45,150 암호화 및 해독과지도 제작 라이브러리 39 00:01:45,150 --> 00:01:48,000 인코딩 및하는 기능이있는 기능, 도서관 40 00:01:48,000 --> 00:01:50,970 동영상이 재생 등. 41 00:01:50,970 --> 00:01:53,190 >> 이 중요한 따로 우리를 제공합니다. 42 00:01:53,190 --> 00:01:55,500 공학의 핵심 기술 중 하나는 잠을 수 있습니다 43 00:01:55,500 --> 00:01:58,090 도구는 도구 상자에서 사용할 수있는 사용할 수 있도록 44 00:01:58,090 --> 00:01:59,850 그들과하지 않는 휠을 reinventing 방지 45 00:01:59,850 --> 00:02:01,510 당신은 그렇게해야합니다. 46 00:02:01,510 --> 00:02:04,120 프로그래머로서 도서관은 가장 중요한 중 하나입니다 47 00:02:04,120 --> 00:02:05,520 우리가 도구를 제공합니다. 48 00:02:05,520 --> 00:02:08,520 당신이 찾아내는 경우 직접 지루한 또는 보이는 작업에 직면 49 00:02:08,520 --> 00:02:11,940 평범한, C 문자열의 길이를 찾는처럼, 당신 50 00:02:11,940 --> 00:02:14,020 이 경우 될 수 있으면 자신에게 물어해야한다고 51 00:02:14,020 --> 00:02:16,520 사람은 이미 전에 같은 일을하던. 52 00:02:16,520 --> 00:02:17,760 기회는 일부를 찾을 수 아르 53 00:02:17,760 --> 00:02:20,110 도서관에서 도움이됩니다. 54 00:02:20,110 --> 00:02:23,260 >> 따라서 기술 측면에서, 도서관은 이진 파일입니다 55 00:02:23,260 --> 00:02:26,210 의 컬렉션을 함께 연결하여 제작되었습니다 56 00:02:26,210 --> 00:02:28,880 도구를 사용하여 객체 파일,라고하면 57 00:02:28,880 --> 00:02:31,010 그, 링커를 추측. 58 00:02:31,010 --> 00:02:33,830 객체 파일들입니다. O 파일을 할 때 당신이 얻을 59 00:02:33,830 --> 00:02:35,860 C 소스 코드를 컴파일합니다. 60 00:02:35,860 --> 00:02:38,420 프로그래머가 라이브러리를 작성하면, 그들은 일반적으로 61 00:02:38,420 --> 00:02:41,560 파일의 두 가지 유형으로 자신의 C 코드를 분리 : 62 00:02:41,560 --> 00:02:44,880 헤더 파일과 구현 파일. 63 00:02:44,880 --> 00:02:49,820 대회의 헤더 파일은. H 파일 확장명 주어집니다 64 00:02:49,820 --> 00:02:51,940 그리고 도서관의를 선언 코드를 포함 65 00:02:51,940 --> 00:02:55,120 당신이 사용하실 수 있습니다 자원. 66 00:02:55,120 --> 00:02:58,830 이러한 리소스는 함수, 변수, structs를 포함 67 00:02:58,830 --> 00:03:01,980 타입 정의 등, 함께, 그들은 아르 68 00:03:01,980 --> 00:03:04,620 일반적으로 인터페이스라고. 69 00:03:04,620 --> 00:03:07,280 사실, 경우 혹시, 도서관에 뭐가 있는지 궁금 하시죠? 70 00:03:07,280 --> 00:03:09,580 헤더 파일을 찾을 수있는 곳입니다. 71 00:03:09,580 --> 00:03:14,030 >> 예를 들어, USR를 당겨 / 포함 / stdio.h와 확인하실 수 있습니다 72 00:03:14,030 --> 00:03:16,210 모든 아웃 혹시에 대해 알고 싶어요 73 00:03:16,210 --> 00:03:18,570 표준 입출력 라이브러리. 74 00:03:18,570 --> 00:03:20,610 가 여기에 일이 너무, 그리고는 약간의 걸릴 수 있습니다 75 00:03:20,610 --> 00:03:22,420 을 통해 웨이드 할 시간. 76 00:03:22,420 --> 00:03:25,840 그러나, 구글과 맨 페이지와 함께, 이쪽은 77 00:03:25,840 --> 00:03:28,060 당신이 궁금해하는 경우 이동 배치 방법을 표준 I / O 78 00:03:28,060 --> 00:03:30,460 라이브러리 함수가 작동합니다. 79 00:03:30,460 --> 00:03:33,910 그래서 여기 유의 한 주요 문제는,하지만 헤더 파일 그입니다 80 00:03:33,910 --> 00:03:36,740 일반적으로 함수 정의에 포함되지 않습니다 - 81 00:03:36,740 --> 00:03:40,020 즉, 실제 기능 구현입니다. 82 00:03:40,020 --> 00:03:42,470 이 중요한 컴퓨터 과학의 도면이다 83 00:03:42,470 --> 00:03:45,700 원칙은 또한에 언급, 정보 은신처를 호출 84 00:03:45,700 --> 00:03:48,960 캡슐화와 같은 시간. 85 00:03:48,960 --> 00:03:52,630 >> 라이브러리의 사용자 또는 클라이언트로, 당신은 필요 없어요 86 00:03:52,630 --> 00:03:54,230 에있는 라이브러리의 내부에 대해 알고 87 00:03:54,230 --> 00:03:55,380 을 사용하려면. 88 00:03:55,380 --> 00:03:57,800 단지 조금 전에 printf보고 기억 나? 89 00:03:57,800 --> 00:04:00,275 당신은 전에 실제 코드를 본? 90 00:04:00,275 --> 00:04:02,535 음, 난 당신이 수는 없었지만, 당신이하지 않은 것으로 간주 91 00:04:02,535 --> 00:04:05,090 시대의 printf 톤 사용했습니다. 92 00:04:05,090 --> 00:04:08,110 당신이 알고했던 모든 함수 선언 존재 93 00:04:08,110 --> 00:04:10,940 stdio.h 헤더 파일 인치 94 00:04:10,940 --> 00:04:14,010 어쨌든, 좋은 정보가 숨어의 이익은 당신 95 00:04:14,010 --> 00:04:16,820 및 작성 프로그램의 변경에서 절연 아르 96 00:04:16,820 --> 00:04:20,209 라이브러리 함수의 구현의 코드입니다. 97 00:04:20,209 --> 00:04:22,880 printf 변화의 구현, 당신은되어 있지 않은 경우 98 00:04:22,880 --> 00:04:26,310 가서 printf 사용하는 프로그램을 모두 변경 될 수 있습니다. 99 00:04:26,310 --> 00:04:28,450 >> 그럼 구현은 어디로 가야합니까? 100 00:04:28,450 --> 00:04:31,020 음, 다시, 컨벤션에 의해 구현에갑니다 101 00:04:31,020 --> 00:04:34,310 . C의 파일 확장명을 가진 파일입니다. 102 00:04:34,310 --> 00:04:36,820 보통 헤더 파일과 구현 파일은 손을 이동 103 00:04:36,820 --> 00:04:39,380 손에 있으므로 새로운 문자열의 무리를 선포 한 경우 104 00:04:39,380 --> 00:04:42,950 mystring.h의 기능은 다음 당신은 모든 정의 105 00:04:42,950 --> 00:04:46,960 mystring에 그 기능. 다. 106 00:04:46,960 --> 00:04:49,230 그래서 헤더와 구현 파일 했군요 107 00:04:49,230 --> 00:04:52,230 다음 링크 객체 파일을 작성, 컴파일 108 00:04:52,230 --> 00:04:55,360 이진 라이브러리 파일을 생성하기 위해 함께. 109 00:04:55,360 --> 00:04:58,520 도서관 작가는 바이너리 파일을 따라을 배송 할 것입니다 110 00:04:58,520 --> 00:05:00,720 헤더 파일 사용하려는 프로그래머에게로 111 00:05:00,720 --> 00:05:02,280 도서관. 112 00:05:02,280 --> 00:05:04,640 이 시점에서. C 구현 파일은 없습니다 113 00:05:04,640 --> 00:05:07,840 따라서 처음부터 라이브러리를 다시 컴파일하는 경우를 제외하고, 필요 114 00:05:07,840 --> 00:05:10,270 종종 생략하고 있습니다. 115 00:05:10,270 --> 00:05:13,670 >> C 라이브러리를 사용하려면 두 가지 작업을 수행해야합니다. 116 00:05:13,670 --> 00:05:16,890 첫째, # 라이브러리의 헤더 파일과 포함해야합니다 117 00:05:16,890 --> 00:05:18,700 당신이 사용하고자하는 소스 코드 파일 118 00:05:18,700 --> 00:05:20,530 도서관의 코드. 119 00:05:20,530 --> 00:05:23,200 이 선언의 모든 컴파일러를 알려줍니다 120 00:05:23,200 --> 00:05:26,890 함수, 변수, structs, 기타 등등,에 존재하는 121 00:05:26,890 --> 00:05:30,510 헤더 파일 그래서 컴파일러는 하나의 보험에 가입 할 수있는 그 122 00:05:30,510 --> 00:05:33,280 당신은 적절한 방법으로 라이브러리의 리소스를 사용하는 123 00:05:33,280 --> 00:05:37,120 두, 해당 어셈블리 코드를 생성합니다. 124 00:05:37,120 --> 00:05:38,910 도서관의 헤더 파일의 위치에 따라 125 00:05:38,910 --> 00:05:42,720 자리 # 포함 구문은 다릅니다. 126 00:05:42,720 --> 00:05:44,880 헤더 파일은 시스템의에있는 경우 127 00:05:44,880 --> 00:05:46,690 기본값은 디렉토리를 포함 - 128 00:05:46,690 --> 00:05:48,780 일반적으로 usr/include-- 129 00:05:48,780 --> 00:05:52,200 포함 #에서와 같이 다음 꺾쇠 괄호 구문이 사용됩니다 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 그러나, 헤더 파일은 같은에 거주하는 경우 132 00:05:59,540 --> 00:06:02,960 디렉토리는 사용자 자신의 코드와 같이 큰 따옴표 구문은 133 00:06:02,960 --> 00:06:04,870 # "mylib.h '를 포함에서와 같이 사용됩니다. 134 00:06:08,630 --> 00:06:11,220 >> 당신이해야 할 두 번째는 바이너리에 연결하는 것입니다 135 00:06:11,220 --> 00:06:13,760 귀하의 코드를 컴파일 라이브러리 파일입니다. 136 00:06:13,760 --> 00:06:15,810 이 슈퍼 중요한 단계입니다. 137 00:06:15,810 --> 00:06:17,540 헤더 방법에 대한 우리의 이전 논의를 기억 138 00:06:17,540 --> 00:06:20,200 파일은 실행 코드를 포함하지 않는? 139 00:06:20,200 --> 00:06:22,200 이 단계를 잊어 버린 경우, 당신은에 대한 오류를 얻을 것 140 00:06:22,200 --> 00:06:24,990 undefined 기호는 코드에서 참조. 141 00:06:24,990 --> 00:06:29,580 이러한 문제를 해결하기 위해, - 내가 플래그는 즉시 다음 사용 142 00:06:29,580 --> 00:06:32,320 라이브러리의 이름 공간이없는. 143 00:06:32,320 --> 00:06:35,410 어플라이언스에서, C 표준 등 많은 시스템에서 144 00:06:35,410 --> 00:06:38,350 라이브러리가 자동으로 연결됩니다. 145 00:06:38,350 --> 00:06:41,700 그러나 수학 라이브러리는 때때로 별도로 제공된다 146 00:06:41,700 --> 00:06:44,600 및 LM으로 연결해야 할 수도 있습니다. 147 00:06:44,600 --> 00:06:47,760 어플라이언스에, 우리는 당신이 일을 처리하며, 또한 148 00:06:47,760 --> 00:06:52,170 - lcs50로 CS50 라이브러리를 연결할 수 있습니다. 149 00:06:52,170 --> 00:06:54,540 당신은 make 명령을 실행 어플라이언스에이 모든을 볼 수 있습니다. 150 00:06:57,620 --> 00:06:59,130 >> 이제 사용하기 위해 필요한 지식을 가지고 있어야 151 00:06:59,130 --> 00:07:02,150 C.에 도서관 탐험 즐거운 시간을 보내세요. 152 00:07:02,150 --> 00:07:05,880 내 이름은 네이트 Hardison 있으며,이 CS50입니다.