extern 함수 예제

예를 들어, 클래스의 데이터 멤버가 참조 또는 값(참조또는 포인터가 아님) 형식인 경우와 같이 선언이 컴파일러에 충분하지 않은 경우입니다. 포인터에는 고정 메모리 용량(예: 64비트 시스템의 8바이트)이 필요하고 가리키는 형식에 의존하지 않기 때문에 항상 선언된(정의되지 는 않지만 정의되지 않은) 형식에 대한 포인터를 가질 수 있습니다. 해당 포인터를 반대한 경우 정의가 필요합니다. 또한 함수 선언의 경우 모든 매개 변수(값, 참조 또는 포인터에 의해 수행되든 상관없이)와 반환 형식만 선언되고 정의되지 않습니다. 매개 변수 및 반환 값 형식의 정의는 함수 정의에만 필요합니다. 이전에 는 변수 선언에 적용 된 C extern 키워드를 보여 주었습니다. 더 일반적으로 extern은 선언에 적용할 수 있습니다. C에서 선언할 수 있는 두 가지 종류의 변수와 함수가 있습니다. 따라서 외종 키워드는 함수 선언에도 적용할 수 있습니다. 예를 들어 프로그램이 여러 소스 파일에 있고 변수가 file1에 정의되어 file2 및 file3에 사용되는 경우 변수의 발생을 연결하기 위해 file2 및 file3에서 외부 선언이 필요합니다. 일반적인 방법은 각 소스 파일의 앞에 있는 #include 포함된 헤더라고 하는 별도의 파일에서 변수 및 함수의 외부 선언을 수집하는 것입니다. 접미사 .h는 헤더 이름에 대 한 일반적인.

C ++ 함수는 Dlsym과 함께 C에서와 마찬가지로 로드됩니다. 로드하려는 함수는 기호 이름이 엉망이 되지 않도록 외종 „C“로 정규화되어야 합니다. 외부 변수는 함수 내부에 선언될 수도 있습니다. 이 경우 외부 키워드를 사용해야 하며, 그렇지 않으면 컴파일러는 다른 범위, 수명 및 초기 값을 가진 로컬(자동) 변수의 정의를 고려합니다. 이 선언은 함수 모듈 전체가 아닌 함수 내부에서만 볼 수 있습니다. 해결책은 다형성을 통해 달성된다. 실행 할 수 있는 가상 멤버가 있는 기본 인터페이스 클래스와 모듈에서 파생된 구현 클래스를 정의합니다. 일반적으로 인터페이스 클래스는 추상적입니다(클래스는 순수 가상 함수가 있는 경우 추상적입니다). 다음은 c 언어의 외종 변수의 예입니다 function1이 호출될 때 file1.cpp의 변수 복사본은 10으로 설정됩니다.

function2가 호출되면 file2.cpp의 변수 복사본이 123으로 설정됩니다. 그러나 main.cpp에 인쇄된 값은 변수이며 변경되지 않습니다: 42. 우리는 f에 대한 함수 선언 (프로토 타입이라고도 함)이 있다고 가정해 봅시다. 그들을 명확히. 변수 /함수의 선언은 단순히 변수 / 함수가 프로그램의 어딘가에 존재하지만 메모리가 할당되지 않음을 선언합니다. 그러나 변수 / 함수의 선언은 중요한 역할을합니다. 그리고 변수 / 함수의 유형입니다. 따라서 변수가 선언되면 프로그램은 해당 변수의 데이터 형식을 알고 있습니다. 함수 선언의 경우 프로그램은 해당 함수에 대한 인수, 해당 데이터 형식, 인수 순서 및 함수의 반환 형식을 알고 있습니다.