Bruce Eckel의 설명은 헤더 파일에 "네임스페이스 사용"을 포함할 때 발생할 수 있는 위험을 강조합니다. 이유를 이해하기 위해 예를 살펴보겠습니다.
다음 코드가 포함된 "header.h"라는 헤더 파일이 있다고 가정합니다.
<code class="c++">#include <string> using namespace std; struct string { const char* p; }; // Beware: another string!</code>
이 헤더는 다음과 같은 새로운 문자열 구조체를 정의합니다. 표준 라이브러리의 std::string과 다릅니다.
이제 "header.h"가 포함된 소스 파일 "source.cpp"를 고려하세요.
<code class="c++">#include "header.h" int main() { string x; // Error: ambiguous - which string is wanted? }</code>
이 코드를 컴파일할 때 컴파일러는 사용할 문자열 정의를 결정할 수 없기 때문에 오류가 발생합니다. 이러한 모호함은 "using 네임스페이스 std;" 때문에 발생합니다. 헤더 파일의 지시문은 헤더를 포함하는 파일을 포함하여 모든 후속 코드에 영향을 미칩니다.
이 예에서는 사용자 정의 문자열 구조체의 이름을 바꾸거나 "using 네임스페이스 std;"를 배치하여 문제를 쉽게 해결할 수 있습니다. 클래스나 함수 범위 내의 지시문. 그러나 더 복잡한 시나리오에서는 이러한 잠재적인 충돌을 식별하고 해결하기 어려울 수 있습니다.
헤더 파일에 "네임스페이스 사용"을 배치하는 것에 대한 우려는 잠재적인 이름 충돌을 넘어섭니다. 이는 또한 "
따라서 헤더 파일에 "네임스페이스 사용"을 사용하지 않는 것이 좋습니다. 대신, 이름 충돌 및 표준 라이브러리 헤더 변경의 잠재적인 영향을 완전히 이해하는 특정 클래스 또는 함수의 범위 내에서 사용하세요.
위 내용은 C 헤더 파일에서 '네임스페이스 사용'을 사용하는 것이 왜 나쁜 생각인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!