c++ 헤더파일에 다른 헤더파일을 선언해도 될까요?

c++ 헤더파일에 다른 헤더파일을 선언해도 될까요?

작성일 2023.05.08댓글 3건
    게시물 수정 , 삭제는 로그인 필요

안녕하세요
C++ 헤더파일에 클래스만 정의하는데, 제가 클래스에 TCP/IP 관련 변수 및 Vector 관련 변수를 사용했는데
이때 이 클래스는 TCP/IP 및 Vector 관련 헤더파일이 필요한데 이 헤더파일은 어디에 정의하면 될까요?

클래스 선언부에 정의하면 재정의 에러가 발생합니다.
헤더파일에 선언하면 재정의 에러가 발생하지 않고 정상 작동되는데 헤더 파일에 이렇게 클래스 관련
헤더를 선언해도 되는 건가요?



profile_image 익명 작성일 -

여러군대에 동일한 헤더를 사용하셨더라도 맨위에 #pragma once를 해놓으면 빌드시 이미 읽어들인 헤더를 중복해서 읽지 않습니다.

profile_image 익명 작성일 -

네, C++ 헤더파일에 다른 헤더파일을 포함할 수 있습니다. 이것을 "헤더 파일 인클루드(Header file include)"라고합니다.

올바른 헤더 파일 위치는 헤더 파일에서 실제로 사용되는 변수와 함수가 선언된 헤더 파일을 포함시키는 것입니다. 예를 들어, TCP/IP와 관련된 변수를 사용하는 클래스의 경우, 해당 변수 및 함수가 선언 된 헤더 파일을 포함시키는 것이 좋습니다.

헤더 파일을 다른 헤더 파일에 포함시키는 경우, 여러 번 포함되는 문제가 발생할 수 있습니다. 이러한 문제를 방지하기 위해, 헤더 파일 내부에 조건부 컴파일 지시어를 사용하여 한 번만 포함되도록해야합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

#ifndef MY_HEADER_FILE_H

#define MY_HEADER_FILE_H

// Header file contents

#endif

이렇게 하면 MY_HEADER_FILE_H 매크로가 정의되어 있지 않은 경우 헤더 파일 내용이 포함되고, 그렇지 않은 경우 포함되지 않습니다. 이렇게하면 헤더 파일이 여러 번 포함되는 것을 방지 할 수 있습니다.

profile_image 익명 작성일 -

안녕하세요!

C++에서는 헤더 파일 안에 다른 헤더 파일을 포함시킬 수 있습니다. 이를 "포함(include)"이라고 합니다. 포함된 헤더 파일은 선언만 하고 정의는 하지 않는 것이 일반적입니다.

따라서, 클래스 헤더 파일에서 TCP/IP 및 Vector 관련 헤더 파일을 포함(include)시키는 것이 가능합니다. 이렇게 하면 해당 클래스를 사용하는 소스 파일에서 해당 헤더 파일만 include하면 됩니다.

예를 들어, 다음과 같이 클래스 헤더 파일에 TCP/IP와 Vector 관련 헤더 파일을 포함시킬 수 있습니다.

#ifndef MY_CLASS_H

#define MY_CLASS_H

#include <vector>

#include <arpa/inet.h>

class MyClass {

// 클래스 멤버 변수와 메서드 정의

};

#endif

위 코드에서 #include 문을 통해 <vector><arpa/inet.h> 헤더 파일을 포함시켰습니다.

헤더 파일에서 #include로 다른 헤더 파일을 포함(include)시키는 것은 일반적인 방법입니다. 하지만, 너무 많은 헤더 파일을 포함시키면 빌드 시간이 오래 걸리는 등의 문제가 발생할 수 있으므로, 필요한 헤더 파일만 포함(include)시키는 것이 좋습니다.

이상이 도움이 되었길 바랍니다!

https://www.jamongpick.com/33/35690

C++ 헤더파일 2개 서로 선언해야될때

헤더파일이 두개 있다고 가정할게요. A.h B.h 근대 A.h헤더에 B.h를 사용해야해서 "B.h"를 선언했어요 그리고 B.h헤더에도 "A.h"를 선언했는대 재정의 오류가 뜨는대 어캐...

헤더파일에 변수 선언

헤더 파일에 변수를 선언하고(예를 들어 int aaa;) 이 헤더다른 두개의 C 소스 파일에서 include 한 후 컴파일 하면 잘 수행이 됩니다. 그런데 C++ 에서는...

소스파일 하나에만 헤더파일 선언하면

C언어에서 소스파일 하나에만 헤더파일 선언하면 다른 소스파일에서는 선언할필요... 뭐 객체지향 프로그래밍을 예로 들자면, (C언어와는 관계가 없으나 요즘 C# 아니면 C++을...

c++에서 헤더파일 선언

어떤 소스 코드를 보니까 헤더파일이 #include "./Net/WinSocket..h" #include "./Util/Type.... 이런 식으로 선언되어있던데 이게 무슨 의미인가요,,... ./Net/Type.h 현재...

C++ 헤더파일 질문합니다

... 헤더 파일C++에서 코드의 재사용성과 모듈화를 위해 사용됩니다. 헤더 파일은 일반적으로 함수의 선언, 클래스의 정의, 매크로 등을 포함하고 있습니다. 헤더 파일을...

헤더파일에 선언과 정의에 대해...

C++에서 하나의 헤더파일과 2개의 소스파일이 있다고... 할때 헤더파일에 extern int a; (<-선언) 이것은 일단... extern은 현재 obj 파일이 아닌 다른 obj에서 정의된...

C++ 헤더파일 중복 컴파일 문제...

... 하고 싶은것은 저렇게 전역으로 메모리를 잡아놓고 다른파일에서 편하게... 헤더 파일선언만 넣어두고, 소스 파일에는 정의와 구현을 하는게...

c++ 조건에 따른 헤더파일 선언

... h라는 헤더파일을 사용하지 않아야 하거든요. os에 따라서 헤더파일을... h> #pragma comment(lib, "d2d1") 이렇게 두개를 써야하는데, xp에서는 선언되지...