
수확대 커버 C++
2022-06-03 last update
7 minutes reading C++C++의 헤더 보호는 코드를 작성할 때 같은 이름으로 함수를 여러 번 정의하고 오류를 시도하면 구세주가 됩니다.모든 프로그래머는 헤더 파일에 함수 정의를 포함하는 것은 결코 좋은 방법이 아니라는 것을 알아야 한다.그러나 때때로 당신은 이렇게 해야 합니다.이 경우 C++에서 제목 보호를 올바르게 사용하는 방법을 알아야 합니다.따라서 본고는 C++에서 헤더 보호의 필요성을 토론한 다음에 몇 가지 예시를 통해 Ubuntu 20.04 시스템에서 어떻게 사용하는지 가르쳐 드리겠습니다.
코드를 작성할 때, 필요한 기능에 따라 일부 헤더 파일을 정의할 수 있습니다.이 헤더 파일을 만들면 모두 에 포함할 수 있습니다.실제 코드를 포함하는 cpp 파일입니다.그러나 때때로 이 헤더 파일들은 서로 의존한다.따라서 헤더 파일을 다른 헤더 파일에 포함해야 합니다.이 경우, 이 두 헤더 파일을 모두 에 포함할 때.cpp 파일, 헤더 파일의 같은 함수는 두 번 정의될 수 있습니다.이것은 컴파일을 생성할 때 오류를 초래할 수 있습니다. 왜냐하면 C++는 같은 코드에서 같은 함수를 두 번 정의하는 것을 엄격하게 금지하기 때문입니다.따라서 우리는 헤드 보호기를 사용하여 헤드 파일이 고장나지 않도록 보호하여 이 의존성 문제를 해결한다.
이 헤더 보호는 네 개의 프로세서 명령을 사용하여 실현할 수 있다. #ifndef, #define, #ifdef와 #endif.예를 들어, "#ifndef"명령에 코드를 포함할 때마다 컴파일러는 다음 코드를 정의했는지 항상 검사합니다.없으면 "#define"명령 뒤에 있는 문장을 실행합니다.그렇지 않으면 이 문장들은 무시될 것이다.이것은 반대로 프로그램이 항상 성공적으로 컴파일될 수 있고, 같은 코드에서 같은 함수를 여러 번 정의하지 않을 수 있도록 보장합니다."#ifdef"명령은 반대입니다.다음 두 가지 예시를 통해 당신은 이 모든 것을 더욱 잘 이해할 수 있을 것입니다.
C++에서 제목 보호의 중요성을 강조하기 위해서 이 예시를 자세히 보셔야 합니다.이 예에서, 우리는 두 개의 헤더 파일과 하나를 만들 것이다.cpp 파일.우리는 또 두 번째 헤더 파일에 첫 번째 헤더 파일을 포함할 것이다.그 다음에 우리는 이 두 개의 헤더 파일을 포함할 것이다.cpp 파일.여기서, 우리는 C++ 프로그램이 어떤 함수의 중복 정의를 만날 때마다, 항상 컴파일을 생성할 때 오류가 발생한다는 것을 설명하고자 합니다. 예를 들어 "이 오류를 복구하기 전에 코드가 컴파일되지 않습니다."다음 그림은 첫 번째 헤더 파일을 보여 줍니다.
우리의 첫 번째 헤더 파일의 이름은 "decimal.h"입니다. 이것은 10진 디지털 시스템을 가리키며, 0에서 9까지의 숫자, 즉 총 10개의 숫자를 포함합니다.이 헤더 파일에는 "iostream"라이브러리와 "std"이름 공간이 포함되어 있습니다.다음은 10진수 시스템에 존재하는 10진수의 총수를 되돌려주는 "getTotal()"이라는 함수입니다.
두 번째 헤더 파일은 다음 그림과 같습니다.
우리의 두 번째 헤더 파일의 이름은 "hex.h"이며, 이것은 16진 디지털 시스템을 가리킨다.이 파일에는 0에서 9까지의 숫자와 A에서 F까지의 문자가 모두 16개 숫자로 포함되어 있습니다.십진수 시스템도 16진수 시스템의 일부이기 때문에 우리는 첫 번째 헤더 파일만 두 번째 헤더 파일에 포함한다.
그리고 우리의.cpp 파일은 다음 그림과 같습니다.
우리 이름.cpp 파일은 "main.cpp"입니다. 이것은 주로 우리의 드라이버 기능을 포함하기 때문입니다.우선, 우리는 위에서 만든 두 개의 헤더 파일을 포함하고, 그 다음은 "iostream"라이브러리입니다.이후, 우리는'main ()'함수 내의 단말기에 메시지를 출력해서 사용자 코드 컴파일이 성공했음을 알리고 싶습니다.이 C++ 코드는 당신이 보기에 매우 정상적입니다.그러나 일단 그것을 실행하면 그 중의 오류를 찾아낼 수 있습니다.
우리가 우리의 것을 번역하고 집행할 때.cpp 파일, 다음 그림에서 보여준 오류는 우리의 터미널에서 생성된 것입니다.
지금 우리는 간단명료하게 이 잘못을 토론할 것이다.간단히 말하면, 이 오류 메시지는 함수 "getTotal ()"이 코드에서 두 번 정의되었음을 나타냅니다.현재, 당신은 이것이 어떻게 발생했는지 의심할 수 있습니다. 왜냐하면 우리는 이 함수를 한 번만 정의했기 때문입니다.응, 우리는 "hex.h"헤더 파일에 "decimal.h"헤더 파일을 포함했어.그리고 "main.cpp"파일에 이 두 파일을 동시에 포함할 때, 한 헤더 파일을 다른 헤더 파일에 포함하기 때문에, 두 번에 걸쳐 같은 함수를 정의했습니다.C++에서는 동일한 함수를 재정의하는 것을 엄격히 허용하지 않기 때문에 프로그램을 성공적으로 컴파일할 수 없습니다.C++에서 제목 보호를 사용해야 합니다.
이 예는 우리가 C++에서 헤드 보호를 사용하는 첫 번째 예에 대한 경미한 수정일 뿐이다.다음 그림은 수정된 "decimal.h"헤더 파일을 보여 줍니다.
이 수정된 헤더 파일에서 우리는 시작할 때'ifndef DECIMAL\u H'명령을 사용했고, 그 다음에'define DECIMAL\u H'명령을 사용했다."DECIMAL\u H"는 헤더 파일 "DECIMAL.H"의 이름입니다.그리고 나서 우리는 정상적인 코드가 생겼다.마지막으로, 우리는'endif'지령으로 우리의 프로그램을 끝냈다.
마찬가지로 우리는 같은 명령을 사용하여 두 번째 헤더 파일을 수정했다. 다음 그림과 같다.
그러나, 우리의'main.cpp'파일은 변하지 않습니다. 왜냐하면 우리는 그것을 이렇게 수정할 필요가 없기 때문입니다.지금, 우리가 우리를 번역하려고 시도할 때.cpp 파일, 오류 메시지가 생성되지 않았거나 다음 그림과 같이 성공적으로 컴파일되었습니다.
이 프로그램을 컴파일한 후에 우리는 그것을 실행했다.따라서 다음 그림과 같이 "main ()"함수를 통해 터미널에 표시되는 메시지가 터미널에 표시되기를 원합니다.
이번에, 우리의 프로그램은 성공적으로 실행되었다. 비록 우리의 "main.cpp"파일에 두 개의 헤더 파일이 포함되어 있지만, 이것은 완전히 필요한 곳에서 C++의 헤더 보호를 사용했기 때문이다.
이 안내서에서는 Ubuntu 20.04의 C++의 헤더 보호에 대해 설명합니다.처음에 우리는 제목 보호가 무엇인지 설명하면서 C++에 대한 필요성을 강조했다.그리고 우리는 두 가지 다른 예시를 상세하게 설명했다. 예를 들어 눈썹 보호에 대한 수요를 강조하고 그것을 어떻게 사용하는지 설명했다.이러한 예시를 잘 이해하면 왜 C++에서 헤더 파일을 처리할 때 헤더 파일 보호가 중요한지 금방 깨닫게 될 것입니다.
C++에서 제목 보호를 사용해야 하는 이유는 무엇입니까?
코드를 작성할 때, 필요한 기능에 따라 일부 헤더 파일을 정의할 수 있습니다.이 헤더 파일을 만들면 모두 에 포함할 수 있습니다.실제 코드를 포함하는 cpp 파일입니다.그러나 때때로 이 헤더 파일들은 서로 의존한다.따라서 헤더 파일을 다른 헤더 파일에 포함해야 합니다.이 경우, 이 두 헤더 파일을 모두 에 포함할 때.cpp 파일, 헤더 파일의 같은 함수는 두 번 정의될 수 있습니다.이것은 컴파일을 생성할 때 오류를 초래할 수 있습니다. 왜냐하면 C++는 같은 코드에서 같은 함수를 두 번 정의하는 것을 엄격하게 금지하기 때문입니다.따라서 우리는 헤드 보호기를 사용하여 헤드 파일이 고장나지 않도록 보호하여 이 의존성 문제를 해결한다.
이 헤더 보호는 네 개의 프로세서 명령을 사용하여 실현할 수 있다. #ifndef, #define, #ifdef와 #endif.예를 들어, "#ifndef"명령에 코드를 포함할 때마다 컴파일러는 다음 코드를 정의했는지 항상 검사합니다.없으면 "#define"명령 뒤에 있는 문장을 실행합니다.그렇지 않으면 이 문장들은 무시될 것이다.이것은 반대로 프로그램이 항상 성공적으로 컴파일될 수 있고, 같은 코드에서 같은 함수를 여러 번 정의하지 않을 수 있도록 보장합니다."#ifdef"명령은 반대입니다.다음 두 가지 예시를 통해 당신은 이 모든 것을 더욱 잘 이해할 수 있을 것입니다.
예제 #1: C의 제목 보호에 필요한 ++ 강조 표시
C++에서 제목 보호의 중요성을 강조하기 위해서 이 예시를 자세히 보셔야 합니다.이 예에서, 우리는 두 개의 헤더 파일과 하나를 만들 것이다.cpp 파일.우리는 또 두 번째 헤더 파일에 첫 번째 헤더 파일을 포함할 것이다.그 다음에 우리는 이 두 개의 헤더 파일을 포함할 것이다.cpp 파일.여기서, 우리는 C++ 프로그램이 어떤 함수의 중복 정의를 만날 때마다, 항상 컴파일을 생성할 때 오류가 발생한다는 것을 설명하고자 합니다. 예를 들어 "이 오류를 복구하기 전에 코드가 컴파일되지 않습니다."다음 그림은 첫 번째 헤더 파일을 보여 줍니다.

우리의 첫 번째 헤더 파일의 이름은 "decimal.h"입니다. 이것은 10진 디지털 시스템을 가리키며, 0에서 9까지의 숫자, 즉 총 10개의 숫자를 포함합니다.이 헤더 파일에는 "iostream"라이브러리와 "std"이름 공간이 포함되어 있습니다.다음은 10진수 시스템에 존재하는 10진수의 총수를 되돌려주는 "getTotal()"이라는 함수입니다.
두 번째 헤더 파일은 다음 그림과 같습니다.

우리의 두 번째 헤더 파일의 이름은 "hex.h"이며, 이것은 16진 디지털 시스템을 가리킨다.이 파일에는 0에서 9까지의 숫자와 A에서 F까지의 문자가 모두 16개 숫자로 포함되어 있습니다.십진수 시스템도 16진수 시스템의 일부이기 때문에 우리는 첫 번째 헤더 파일만 두 번째 헤더 파일에 포함한다.
그리고 우리의.cpp 파일은 다음 그림과 같습니다.

우리 이름.cpp 파일은 "main.cpp"입니다. 이것은 주로 우리의 드라이버 기능을 포함하기 때문입니다.우선, 우리는 위에서 만든 두 개의 헤더 파일을 포함하고, 그 다음은 "iostream"라이브러리입니다.이후, 우리는'main ()'함수 내의 단말기에 메시지를 출력해서 사용자 코드 컴파일이 성공했음을 알리고 싶습니다.이 C++ 코드는 당신이 보기에 매우 정상적입니다.그러나 일단 그것을 실행하면 그 중의 오류를 찾아낼 수 있습니다.
우리가 우리의 것을 번역하고 집행할 때.cpp 파일, 다음 그림에서 보여준 오류는 우리의 터미널에서 생성된 것입니다.

지금 우리는 간단명료하게 이 잘못을 토론할 것이다.간단히 말하면, 이 오류 메시지는 함수 "getTotal ()"이 코드에서 두 번 정의되었음을 나타냅니다.현재, 당신은 이것이 어떻게 발생했는지 의심할 수 있습니다. 왜냐하면 우리는 이 함수를 한 번만 정의했기 때문입니다.응, 우리는 "hex.h"헤더 파일에 "decimal.h"헤더 파일을 포함했어.그리고 "main.cpp"파일에 이 두 파일을 동시에 포함할 때, 한 헤더 파일을 다른 헤더 파일에 포함하기 때문에, 두 번에 걸쳐 같은 함수를 정의했습니다.C++에서는 동일한 함수를 재정의하는 것을 엄격히 허용하지 않기 때문에 프로그램을 성공적으로 컴파일할 수 없습니다.C++에서 제목 보호를 사용해야 합니다.
예 #2: C에서 제목 보호 + +
이 예는 우리가 C++에서 헤드 보호를 사용하는 첫 번째 예에 대한 경미한 수정일 뿐이다.다음 그림은 수정된 "decimal.h"헤더 파일을 보여 줍니다.

이 수정된 헤더 파일에서 우리는 시작할 때'ifndef DECIMAL\u H'명령을 사용했고, 그 다음에'define DECIMAL\u H'명령을 사용했다."DECIMAL\u H"는 헤더 파일 "DECIMAL.H"의 이름입니다.그리고 나서 우리는 정상적인 코드가 생겼다.마지막으로, 우리는'endif'지령으로 우리의 프로그램을 끝냈다.
마찬가지로 우리는 같은 명령을 사용하여 두 번째 헤더 파일을 수정했다. 다음 그림과 같다.

그러나, 우리의'main.cpp'파일은 변하지 않습니다. 왜냐하면 우리는 그것을 이렇게 수정할 필요가 없기 때문입니다.지금, 우리가 우리를 번역하려고 시도할 때.cpp 파일, 오류 메시지가 생성되지 않았거나 다음 그림과 같이 성공적으로 컴파일되었습니다.

이 프로그램을 컴파일한 후에 우리는 그것을 실행했다.따라서 다음 그림과 같이 "main ()"함수를 통해 터미널에 표시되는 메시지가 터미널에 표시되기를 원합니다.

이번에, 우리의 프로그램은 성공적으로 실행되었다. 비록 우리의 "main.cpp"파일에 두 개의 헤더 파일이 포함되어 있지만, 이것은 완전히 필요한 곳에서 C++의 헤더 보호를 사용했기 때문이다.
결론:
이 안내서에서는 Ubuntu 20.04의 C++의 헤더 보호에 대해 설명합니다.처음에 우리는 제목 보호가 무엇인지 설명하면서 C++에 대한 필요성을 강조했다.그리고 우리는 두 가지 다른 예시를 상세하게 설명했다. 예를 들어 눈썹 보호에 대한 수요를 강조하고 그것을 어떻게 사용하는지 설명했다.이러한 예시를 잘 이해하면 왜 C++에서 헤더 파일을 처리할 때 헤더 파일 보호가 중요한지 금방 깨닫게 될 것입니다.