검색결과 리스트
C++ 11에 해당되는 글 12건
- 2014.04.02 #ifdef __cplusplus 코드를 사용하는 이유
- 2014.04.01 컴파일러 C++ 11 지원 여부 상태 & C++ FAQ
글
프로그래밍 일반
2014. 4. 2. 12:31
#ifdef __cplusplus 코드를 사용하는 이유
C++11 에는 매크로 __cplusplus 가 현재의 값인 199711L과 다른 (더 큰) 값으로 설정될 예정이라고 한다.
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
가끔 위와 같은 코드를 보게 되는데 해당 코드는 __cplusplus 라는 것이 디파인되어 있으면 extern "C" { 를 삽입하라는 뜻이다. 이런 코드를 사용하는 이유는 C와 C++간의 링커 재사용을 위해서 이다. 처음 C++를 설계할 때 컴파일러만 새로 설계하고 링커는 기존 라이브러리를 재사용하려고 기존의 C링커를 그대로 사용하였다. 하지만 C++에서는 함수 오버로딩 등과 같은 기능을 지원하기 위해 각 함수명을 인자에 따라 컴파일러가 다르게 부여한다. (name mangling)
당연히 C에 있던 함수들도 다른 이름이 주어지게 되고 그럴 경우 라이브러리와 링크가 안된다. extern "C"라는 건 name mangling을 하지 않도록 하는 작업이다. 그렇게해야 C라이브러리를 링크할 수 있기 때문이다.
설정
트랙백
댓글
글
프로그래밍 일반
2014. 4. 1. 17:45
RECENT COMMENT