.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!