> 백엔드 개발 > C++ > 내 C 코드에 구현 파일(.cpp)이 아닌 헤더 파일(.h)만 포함해야 하는 이유는 무엇입니까?

내 C 코드에 구현 파일(.cpp)이 아닌 헤더 파일(.h)만 포함해야 하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-11 18:01:11
원래의
785명이 탐색했습니다.

Why Should I Only Include Header Files (.h) and Not Implementation Files (.cpp) in My C   Code?

헤더 및 구현 파일 포함 이해

C 코드 작업 시 헤더 파일(.h) 포함의 차이점을 이해하는 것이 중요합니다. 및 구현 파일(.cpp). 이러한 구별은 컴파일 오류를 방지하고 코드 구성을 유지하는 데 중요합니다.

헤더 파일만 포함하는 이유

대신 구현 파일(.cpp)을 포함하려고 할 때 헤더 파일(.h)을 사용하면 "함수 다중 정의"와 같은 컴파일 오류가 발생할 수 있습니다. 이는 헤더가 주로 함수 선언과 클래스 사양을 포함하는 반면 구현 파일은 실제 함수 구현을 보유하기 때문입니다.

구현 파일을 직접 포함하면 코드가 여러 소스 파일에 중복되기 때문에 함수 정의가 여러 개로 이어질 수 있습니다. 전처리기의 작업. 이러한 중복은 컴파일러를 혼란스럽게 하여 오류를 발생시킵니다.

헤더 포함 작동 방식

헤더 파일을 포함하면 해당 내용이 참조되는 소스 파일에 복사됩니다. 다음 예를 고려하십시오.

// main.cpp
#include "foop.h"

int main() {
  int x = 42;
  std::cout << x << std::endl;
  std::cout << foo(x) << std::endl;
}
로그인 후 복사

전처리기가 이 코드를 처리한 후 main.cpp는 다음과 같습니다.

// iostream stuff

int foo(int a) {
  return ++a;
}

int main() {
  int x = 42;
  std::cout << x << std::endl;
  std::cout << foo(x) << std::endl;
}
로그인 후 복사

보시다시피 이제 foo()의 구현은 다음과 같습니다. main.cpp에서 직접. 그러나 foop.cpp라는 구현 파일에 foo() 정의도 포함되어 있으면 컴파일러는 중복된 정의를 감지하고 오류를 발생시킵니다.

위 내용은 내 C 코드에 구현 파일(.cpp)이 아닌 헤더 파일(.h)만 포함해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿