[[프로그래밍_NOTE]]/C , C++ 39

extern

1. 변수에 사용할 경우 선언된 글로벌 변수를 외부에서 사용하고 싶을때 쓰는 것으로, 메모리에 별도로 잡히지 않는다. 컴파일러는 extern을 만나게 되면, 외부 어딘가에 해당 전역변수가 선언되어 있다고 판단한다. 2. 함수에 사용할 경우 static (정적) 키워드를 사용할 경우는 해당 파일안에서만 함수를 호출가능. extern(외부) 키워드를 사용할 경우는 어디에서든 호출할 수 있도록 외부함수로 만들어줌.

extern "C"

흔히 볼수 있는 아래의 코드는? #ifdef _cplusplus extern "C"{ #endif ... ... #ifdef _cplusplus } #endif C++는 컴파일시 함수 이름을 모두 다른 이름으로 바꿔주기 때문에 C에서 컴파일된 함수를 링크시킬 때는 해당 함수의 선언부 혹은 include 부분에 extern "C"라는 키워드를 사용하여 해당 함수가 C로 컴파일된 함수라는 것을 컴파일러에게 명시적으로 알려줘야 한다. ( 쉽게 이야기하면 C로 컴파일된 함수를 C++ 에서 부를 수 없기에, 이를 가능하게 하는 기법이다. ) //exercise // ■ C++ 에서 C 에서 컴파일된 함수를 가져다 쓰려면? 1. C를 컴파일하여 오브젝트 파일 생성 ( i.e : gcc -c CFile.c ) 2. ..

Namespace [네임스페이스]

발췌 : Essential C++ / 인포 북 [Citation Start"]네임스페이스는 사용자의 프로그램 환경 내에서 이름 충돌(name crash)없이 사용할 수 있도록 라이브러리의 이름을 한데 묶는 방법을 말합니다. (이름 충돌은 하나의 어플리케이션 내에서 같은 이름을 가진 두 개체가 존재해 프로그램이 그들을 구별하지 못할 때 발생합니다. 이름 충돌이 발생하면 해결될 때까지는 프로그램이 실행될 수 없습니다.) 즉, 네임스페이스는 같은 이름을 서로 다르게 분리하는 방법 입니다.[" Citation End]