> 백엔드 개발 > C++ > C에서 구현(.cpp) 파일 대신 헤더(.h) 파일을 포함해야 하는 이유는 무엇입니까?

C에서 구현(.cpp) 파일 대신 헤더(.h) 파일을 포함해야 하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-26 01:06:12
원래의
502명이 탐색했습니다.

Why Should I Include Header (.h) Files Instead of Implementation (.cpp) Files in C  ?

.cpp 파일 포함: 함수 중복 사례

C로 개발할 때 일반적으로 헤더(.h)를 포함하는 것이 좋습니다. 구현(.cpp) 파일이 아닌 기능용 파일입니다. .cpp 파일을 포함하면 기능 중복으로 인해 오류가 발생할 수 있습니다.

다음 코드 예를 살펴보겠습니다.

// main.cpp
#include <iostream>
#include "foop.h" // Header file containing the function declaration

int main() {
  std::cout << foo(42) << std::endl;
  return 0;
}

// foop.h
int foo(int a); // Function declaration

// foop.cpp
int foo(int a) { // Function definition
  return ++a;
}
로그인 후 복사

이 코드는 헤더 파일(.h)이 있기 때문에 올바르게 컴파일되고 실행됩니다. foo() 함수의 선언만 포함하고 정의는 별도의 .cpp 파일에 제공됩니다.

그러나 .cpp 파일 포함과 함께 main.cpp에 헤더 파일 포함:

// main.cpp
#include <iostream>
#include "foop.cpp" // Implementation file containing the function definition
로그인 후 복사

이렇게 하면 컴파일러 오류가 발생합니다.

multiple definition of foo(int)
first defined here
로그인 후 복사

전처리기가 헤더 파일의 내용을 복사하기 때문입니다. 포함된 파일을 기본 소스 파일에 추가합니다. .cpp 파일을 포함하면 foo() 함수 정의가 main.cpp에 효과적으로 복사되므로 함수 정의가 중복됩니다.

함수 중복을 방지하려면 헤더(.h) 파일을 포함하는 것이 좋습니다. 선언용 및 정의용 .cpp 파일에만 해당됩니다. 이렇게 하면 프로그램에서 기능이 한 번만 정의되도록 할 수 있습니다.

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

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