h 파일은 .c(.cpp) 파일의 헤드에 배치되는 경우가 많아 "헤더 파일"이라고 명명됩니다. h 파일은 .c 파일에서 반복되는 선언문을 추출하여 새 파일에 넣은 다음 필수 .c(.cpp) 파일에 "#include XXXX"와 같은 문을 입력하는 파일입니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, C++17 버전, Dell G3 컴퓨터.
C 언어 프로젝트에서 .h 파일과 .c 파일의 관계에 대한 자세한 설명
컴파일러가 .c(.cpp)) 파일만 인식하고 .h가 무엇인지 몰랐던 시대에 당시 사람들은 많은 .c(.cpp) 파일을 작성했지만 점차적으로 사람들은 많은 .c(.cpp) 파일의 선언문이 동일하지만 이러한 내용을 각 단어에 하나씩 반복적으로 입력해야 한다는 사실을 알게 되었습니다. .cpp) 파일입니다. 하지만 더욱 무서운 점은 선언 중 하나가 변경되면 모든 .c(.cpp) 파일을 확인해야 한다는 것입니다.
그래서 사람들은 반복되는 부분을 추출하여 새 파일에 넣은 다음 필수 .c(.cpp) 파일에 #include XXXX와 같은 문을 입력합니다. 이렇게 하면 특정 구문이 변경되더라도 여기저기서 검색하고 수정할 필요가 없습니다. 이 새 파일은 종종 .c(.cpp) 파일의 헤드에 배치되므로 이름이 "헤더 파일"이고 확장자는 .h입니다.
우리 언어를 배우는 초기 단계에서 우리 프로그램은 종종 하나의 .c 파일 또는 그 중 몇 개만 가지고 있습니다. 현재 프로그램이 증가함에 따라 코드가 수천 개 또는 심지어 몇 개로 늘어나는 문제가 거의 발생하지 않습니다. 수만 라인이 측정되었으며 파일 수도 증가하고 있습니다. 이때 이러한 파일의 구성이 문제가 됩니다. 사실 직설적으로 말하면 이러한 파일의 구성은 이론적으로 소프트웨어 엔지니어링 등의 모듈 설계의 문제입니다.
헤더 파일의 역할에 대한 간략한 설명:
(1) 헤더 파일을 통해 라이브러리 함수를 호출합니다. 많은 경우, 헤더 파일과 바이너리 라이브러리가 사용자에게 제공되는 한 소스 코드를 사용자에게 공개하는 것은 불편하거나 허용되지 않습니다. 사용자는 인터페이스가 어떻게 구현되는지 신경쓰지 않고 헤더 파일의 인터페이스 선언에 따라 라이브러리 함수만 호출하면 됩니다. 컴파일러는 라이브러리에서 해당 코드를 추출합니다.
(2) 헤더 파일은 유형 안전 검사를 강화할 수 있습니다. 인터페이스가 헤더 파일의 선언과 일치하지 않는 방식으로 구현되거나 사용되면 컴파일러는 오류를 지적합니다. 이 간단한 규칙은 오류를 디버깅하고 수정하는 프로그래머의 부담을 크게 줄일 수 있습니다.
예를 들어 aaa.h에서 함수 선언을 정의한 다음 aaa.h와 동일한 디렉터리에 aaa.c를 생성합니다. 이 함수의 구현은 aaa.c에서 정의된 다음 주요 함수입니다. 이 aaa.h를 .c 파일에 #include한 다음 이 기능을 사용할 수 있습니다. main이 실행되면 이 함수를 정의하는 aaa.c 파일을 찾습니다. 그 이유는 주 함수가 표준 C/C++의 프로그램 진입점이고 컴파일러가 먼저 함수가 있는 파일을 찾기 때문입니다.
컴파일러가 myproj.c(main() 포함)를 컴파일할 때 mylib.h(void test() 함수 선언)가 포함되어 있음을 발견한 다음 컴파일러가 미리 설정된 경로(포함 경로 목록 포함)를 따른다고 가정합니다. 및 코드 파일이 있는 경로) 파일이 발견되고 해당 파일에서 함수가 발견되면 동일한 이름(확장자 .cpp 또는 .c, 이 경우 mylib.c)을 가진 구현 파일을 찾습니다. 이 경우는 void test())의 구현 코드입니다. 컴파일을 계속하세요.
지정된 디렉터리에서 구현 파일을 찾을 수 없거나, 파일 및 후속 포함 파일에서 구현 코드를 찾을 수 없으면 컴파일 오류가 반환됩니다. 실제로 포함 프로세스는 파일로 "표시"될 수 있습니다. 스플라이싱 과정에서는 선언과 구현이 각각 헤더 파일과 C 파일에 작성되거나 두 파일이 동시에 헤더 파일에 작성되면 이론상 본질적인 차이는 없습니다.
이론적으로 C 파일과 헤더 파일의 내용이 C 언어에서 지원된다면 무엇이든 작성할 수 있습니다. 예를 들어 헤더 파일에 함수 본문을 작성한다면 이 헤더 파일만 포함하면 됩니다. 모든 C 파일에서 이 함수는 대상 파일의 일부로 컴파일될 수 있습니다(컴파일은 C 파일을 기반으로 합니다. 이 헤더 파일이 C 파일에 포함되지 않으면 이 코드는 쓸모가 없습니다). C 파일 선언, 구조 선언, 이것은 문제가 되지 않습니다! ! ! 그렇다면 왜 헤더 파일과 C 파일로 나누어야 할까요? 그리고 함수, 변수 선언, 매크로 선언, 구조 선언은 왜 일반적으로 헤더에서 만들어지나요? C 파일에서 변수를 정의할 때 함수 구현은 어떻게 되나요? ?
C 파일과 헤더 파일의 차이점을 이해하려면 먼저 컴파일러의 작업 프로세스를 이해해야 합니다. 일반적으로 컴파일러는 다음 프로세스를 수행합니다.
1. 어휘 및 구문 분석. 단계
3. 컴파일 단계, 먼저 순수 어셈블리 문으로 컴파일한 다음 이를 CPU와 관련된 바이너리 코드로 어셈블하여 각 대상 파일을 생성합니다
4. 연결 단계에서는 특정 플랫폼과 관련된 실행 파일을 생성하기 위해 각 대상 파일의 각 코드에 대해 절대 주소가 배치됩니다. 프로젝트의 C 파일이 아닌 경우, 커넥터는 대상 파일을 기반으로 컴파일되지 않습니다. 하나 이상의 대상 파일을 함수 및 변수로 재배치하여 PC에서 최종 실행 파일을 생성합니다. 인터넷에서 일반적으로 주요 기능은 각 컴파일러의 규칙입니다. 최종 실행 파일을 생성하기 위해서는 몇 가지 타겟 파일, 즉 C 파일이 필요하며, 이러한 C 파일에는 실행 프로그램의 진입점이 되는 main 함수가 필요합니다.
간단히 말하면 C언어의 컴파일은 전처리, 컴파일, 어셈블리, 링크로 나누어집니다. (test.c test.h => test.i => test.s => test.o => ; 테스트) 4가지 주요 단계. c 파일의 #include 매크로 처리는 전처리 단계에서 c에서 참조하는 h 파일의 모든 내용을 c 파일에 쓰고 최종적으로 .i 중간 파일을 생성합니다. 이때 h 파일의 내용은 다음과 같습니다. c 파일을 작성하는 것과 동일합니다.
또한 코드 재사용을 위한 채널을 제공합니다. 많은 c 파일이 동일한 h 파일을 참조할 수 있으므로 h 파일은 여러 c 파일에 배치되고 여러 번 컴파일됩니다. 정의를 넣을 때만 선언을 넣을 수 있다는 점은 정의를 넣으면 여러 번 컴파일된다는 점입니다. 프로그램이 링크되면(여러 int a; 강력한 기호 정의가 시스템에 정의됨) 선언이 다릅니다. . 선언은 정의에 대한 변경 사항을 나타내므로 확장은 결국 정의로 끝나므로 연결 시 정의가 반복되는 오류가 발생하지 않습니다.
프로그래밍에서 우리는 h 파일에서 다음 형식을 사용했음에 틀림없습니다
#ifndef XXX_H #define XXX_H //…… #endif
하하, 그렇다면 그 용도는 무엇입니까? h 파일이 서로 참조할 때 중복 정의를 제거할 수 있습니다. 물론 매크로 정의는 전처리 단계에서 역할을 하며, 컴파일 후 과정에서는 매크로의 그림자가 없습니다.
A.h int a(); B.h #include "A.h" C.h #include "A.h" D.h #include "A.h" #include "B.h"
위의 D.h 파일에는 두 개의 int a(); 선언이 반복되는데, 이는 약간 반복적입니다. 이때 조건부 컴파일 매크로가 유용합니다.
A.h #ifndef A_H #define A_H int a(); #endif
이렇게 하면 반복되는 정의가 없습니다.
추천 튜토리얼: "C#"
위 내용은 h 파일과 c 파일의 관계는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

C# .NET 개발을 시작하려면 다음과 같은 것이 필요합니다. 1. C#의 기본 지식과 .NET 프레임 워크의 핵심 개념을 이해하십시오. 2. 변수, 데이터 유형, 제어 구조, 기능 및 클래스의 기본 개념을 마스터하십시오. 3. LINQ 및 비동기 프로그래밍과 같은 C#의 고급 기능을 배우십시오. 4. 일반적인 오류에 대한 디버깅 기술 및 성능 최적화 방법에 익숙해 지십시오. 이러한 단계를 통해 C#.NET의 세계를 점차적으로 침투하고 효율적인 응용 프로그램을 작성할 수 있습니다.

C#과 .NET의 관계는 분리 할 수 없지만 같은 것은 아닙니다. C#은 프로그래밍 언어이며 .NET은 개발 플랫폼입니다. C#은 코드를 작성하고 .NET의 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행되는 데 사용됩니다.

C#.NET은 여러 응용 프로그램 개발을 지원하는 강력한 도구 및 라이브러리를 제공하기 때문에 여전히 중요합니다. 1) C#은 .NET 프레임 워크를 결합하여 개발 효율적이고 편리하게 만듭니다. 2) C#의 타입 안전 및 쓰레기 수집 메커니즘은 장점을 향상시킵니다. 3) .NET은 크로스 플랫폼 실행 환경과 풍부한 API를 제공하여 개발 유연성을 향상시킵니다.

C#.NETISVERSATILEFORBOTHWEBBANDDESKTOPDEVENTROMMENT.1) FORWEB, useASP.NETFORRICHINTERFACES.3) FORDESKTOP.3) USEXAMARINFORCROSS-PLATFORMDEEVENTRIMMENT, LINABILEDEV, MACODEDEV, and MACODEDOWS, 및 MACODEDOWS.

C# 및 .NET는 지속적인 업데이트 및 최적화를 통해 신흥 기술의 요구에 적응합니다. 1) C# 9.0 및 .NET5는 레코드 유형 및 성능 최적화를 소개합니다. 2) .NETCORE는 클라우드 네이티브 및 컨테이너화 된 지원을 향상시킵니다. 3) ASP.NETCORE는 최신 웹 기술과 통합됩니다. 4) ML.NET는 기계 학습 및 인공 지능을 지원합니다. 5) 비동기 프로그래밍 및 모범 사례는 성능을 향상시킵니다.

C#.netissuitable forenterprise-levelapplications는 richlibraries, androbustperformance, 그러나 itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical, wherelanguagesslikerustorthightordogrordogrognegrognegrognegrognecross-platformdevelopmentor.

.NET에서 C#의 프로그래밍 프로세스에는 다음 단계가 포함됩니다. 1) C# 코드 작성, 2) 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행됩니다. .NET에서 C#의 장점은 현대적인 구문, 강력한 유형 시스템 및 .NET 프레임 워크와의 긴밀한 통합으로 데스크탑 응용 프로그램에서 웹 서비스에 이르기까지 다양한 개발 시나리오에 적합합니다.

C#은 Microsoft가 개발 한 최신 객체 지향 프로그래밍 언어이며 .NET 프레임 워크의 일부로 개발되었습니다. 1.C#은 캡슐화, 상속 및 다형성을 포함한 객체 지향 프로그래밍 (OOP)을 지원합니다. 2. C#의 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키기 위해 비동기 및 키워드를 기다리는 키워드를 통해 구현됩니다. 3. LINQ를 사용하여 데이터 컬렉션을 간결하게 처리하십시오. 4. 일반적인 오류에는 NULL 참조 예외 및 인덱스 외 예외가 포함됩니다. 디버깅 기술에는 디버거 사용 및 예외 처리가 포함됩니다. 5. 성능 최적화에는 StringBuilder 사용 및 불필요한 포장 및 Unboxing을 피하는 것이 포함됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.
