문제

그것은 모두 제목에 있습니다. Super-Simple I Reskon이지만 어디서나 구문을 찾기가 어렵습니다.

이들은 복사 한 두 개의 라이브러리 파일입니다 CS50.net, 그리고 왜 그들이 두 가지 다른 확장을 가지고 있는지 궁금합니다.

도움이 되었습니까?

해결책

.C : C 파일 (실제 행동이 일반적으로)

.h : 헤더 파일 (사전 처리기에 포함 #include 지령). 기능 프로토 타입, #Define'd Sitture, 글로벌 변수에 대한 외부 선언 등과 같은 코드의 다른 부분과 일반적으로 공유되는 것으로 간주되는 것들이 포함되어 있습니다.

기술적으로 모든 것을 단일 파일로 넣을 수 있습니다. 전체 C 프로그램. 백만의 줄. 그러나 우리 인간은 사물을 조직하는 경향이 있습니다. 따라서 특정 기능이 포함 된 다른 C 파일을 만듭니다. 그것은 모두 멋지고 깨끗합니다. 그런 다음 갑자기 당신은 그것을 알고 있습니다 선언 주어진 C 파일에 다른 C 파일에도 존재해야합니다. 그래서 당신은 그들을 복제 할 것입니다. 따라서 최선은 선언을 추출하여 공통 파일에 넣는 것입니다.

예를 들어, CS50.h에서는 기능의 "전진 선언"이라고 불리는 것을 찾을 수 있습니다. 전달 선언은 컴파일러에게 기능을 호출 해야하는 방법 (예 : 어떤 입력 매개 변수)와 반환 내용을 알려주는 빠른 방법입니다. 따라서 올바른 확인을 수행 할 수 있습니다 (예 : 잘못된 수의 매개 변수가있는 함수를 호출하는 경우 IT 불평 할 것입니다).

또 다른 예. 정규 표현식 일치를 수행하는 기능이 포함 된 .C 파일을 작성한다고 가정 해 봅시다. 당신은 당신의 함수가 정규 표현식, 일치하는 문자열 및 비교가 케이스 무의미 해야하는지 알려주는 매개 변수를 받아들이기를 원합니다.

따라서 .C에서는 당신이 넣을 것입니다

bool matches(string regexp, string s, int flags) { the code }

이제 다음 깃발을 전달한다고 가정합니다.

0 : 검색이 사례에 민감한 경우

1 : 검색이 케이스 둔감 한 경우

그리고 당신은 새로운 깃발을 열어두고 싶어서 부울을하지 않았습니다. 숫자를 가지고 노는 것은 어렵 기 때문에이 깃발에 유용한 이름을 정의합니다.

#define MATCH_CASE_SENSITIVE 0
#define MATCH_CASE_INSENSITIVE 1

이 정보는 .h로 들어갑니다. 어떤 프로그램 이이 레이블을 사용하려면 정보를 포함하지 않으면 알 수있는 방법이 없기 때문입니다. 물론 .C에 넣을 수는 있지만 시간 낭비와 문제의 원인 인 .c 코드 (전체!)를 포함해야합니다.

다른 팁

물론 헤더 파일의 확장이 .h 그리고 C 소스 파일의 확장은 .c. 이것들은 유용한 규칙입니다.

E:\Temp> type my.interface
#ifndef MY_INTERFACE_INCLUDED
#define MYBUFFERSIZE 8
#define MY_INTERFACE_INCLUDED
#endif

E:\Temp> type my.source
#include <stdio.h>

#include "my.interface"

int main(void) {
    char x[MYBUFFERSIZE] = {0};
    x[0] = 'a';
    puts(x);
    return 0;
}

E:\Temp> gcc -x c my.source -o my.exe

E:\Temp> my
a

그들은 실제로 라이브러리 파일이 아닙니다. 그들은 단지 소스 파일입니다. 스테파노가 말했듯이 .씨 파일은 실제로 요약 된 내용의 실제 소스를 실제로 사용/정의하는 C 소스 파일입니다. .시간 파일, 헤더 파일 헤더 파일은 일반적으로 실제 소스 파일에 사용될 모든 기능 프로토 타입 및 구조를 간략하게 설명합니다. 참조/부록처럼 생각하십시오. 이것은 당신이 볼 수 있듯이 헤더 파일을 보면 분명합니다. :) 그러면 이러한 소스 파일에 작성된 것을 사용하고 싶을 때는 #include 컴파일러가 알아야 할 정보가 포함 된 헤더 파일.

.c는 소스 파일이고 .h는 헤더 파일.

.C 파일은 컴파일 될 소스 파일입니다. .H 파일은 프로그램의 API를 해당 프로그램의 다른 부분에 노출시키는 데 사용됩니다. 또는 다른 프로그램은 라이브러리를 작성하는 것입니다.

예를 들어, 프로그램 PizzAdelivery는 기본 프로그램이있는 1.c 파일과 유틸리티 함수가있는 1.c 파일을 가질 수 있습니다. 이제 프로그램의 기본 부분이 유틸리티 함수를 사용할 수 있으려면 기능 프로토 타입을 통해 API를 .h 파일에 노출해야합니다.

.c : 'C' source code
.h : Header file

보통 .c 파일에는 구현이 포함되어 있습니다 .h 파일에는 구현의 "인터페이스"가 포함되어 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top