programing

C++에서 C 코드를 사용하는 방법

yoursource 2023. 8. 15. 15:05
반응형

C++에서 C 코드를 사용하는 방법

간단한 질문입니다: C++가 프로그램에서 C 헤더 파일을 사용할 수 있습니까?

이것은 이상한 질문일 수 있습니다. 기본적으로 다른 프로그램(C 언어로 제작)의 소스 코드를 C++로 사용해야 합니다.일반적으로 두 헤더 파일 사이에 차이점이 있습니까?도서관을 바꾸면 어떨까요?저는 당신이 저를 도울 수 있기를 바랍니다.

예, C++ 코드에 C 헤더를 포함할 수 있습니다.다음을 추가하는 것이 일반적입니다.

#ifdef __cplusplus
extern "C"
{
#endif

// C header here

#ifdef __cplusplus
}
#endif

C++ 컴파일러가 함수 선언 등을 C++가 아닌 C로 처리해야 한다는 것을 알 수 있도록 합니다.

C 코드를 프로젝트의 일부로 C++ 코드와 함께 컴파일할 경우, 보통처럼 헤더 파일을 포함하고 C++ 컴파일러 모드를 사용하여 코드를 컴파일해야 합니다. 그러나 일부 C 코드는 C++ 컴파일러로 "깨끗하게" 컴파일되지 않습니다.malloc주조가 필요함).

반면에 라이브러리 또는 프로젝트에 포함되지 않은 다른 코드가 있는 경우 헤더가 다음과 같이 표시되어 있는지 확인해야 합니다.extern "C"그렇지 않으면 컴파일된 함수 이름에 대한 C++ 명명 규칙이 적용되어 C 컴파일러에서 사용하는 명명 규칙과 일치하지 않습니다.

여기에는 두 가지 옵션이 있습니다. 헤더 파일 자체를 편집하거나 추가합니다.

#ifdef __cplusplus 
extern "C" {
#endif

... original content of headerfile goes here. 

#ifdef __cplusplus 
}
#endif

또는 이러한 헤더를 편집할 수 없는 경우 다음 양식을 사용할 수 있습니다.

#ifdef __cplusplus 
extern "C" {
#endif
#include <c_header.h>
#ifdef __cplusplus 
}
#endif

네, 하지만 당신은 C++ 컴파일러에게 헤더의 선언이 C라고 말해야 합니다.

extern "C" {
#include "c-header.h"
}

많은 C 헤더는 이미 포함되어 있으며, 포장되어 있습니다.#if defined __cplusplus그것은 거의 틀림없이 약간 이상하지만(C 헤더의 C++ 구문) 편의를 위해 종종 수행됩니다.

언급URL : https://stackoverflow.com/questions/17448014/how-to-use-c-code-in-c

반응형