스택큐힙리스트

C++에서 main 함수를 extern "C"로 선언하는 것은 합법적인가요? 본문

카테고리 없음

C++에서 main 함수를 extern "C"로 선언하는 것은 합법적인가요?

스택큐힙리스트 2023. 11. 20. 15:26
반응형

저는 저레벨 프로그래머이기 때문에 자주 수행 파일의 모듈 시작 코드와 함께 작업하므로 crt0와 같은 코드가 어떻게 작동하는지 잘 이해하고 있습니다. C++ 코드를 작성할 때, C 시작 코드가 main 함수를 호출하기 위해 수행할 작업과 일치하도록 보통 main 함수를 extern C로 선언합니다. 따라서 일반적으로 아래와 같은 선언을 main 함수 (Windows을 특정하게 대상으로 하는 경우에는 wmain 함수)에 사용합니다:


extern C int main(int argv, const char *const *argv)
extern C int __cdecl wmain(int argv, const wchar_t *const *argv)

main 함수에서 extern C을 사용하는 것은 합법일까요? 또한, argv의 타입으로 const char *const *을 사용하는 것은 char *[]와 대체 가능한 것일까요?

답변 1

연결은 구현이 정의되어 있습니다 (3.6.1p3) :



main의 링크 (3.5)는 구현에 따라 정의됩니다.



또한, 나중에 한 질문에 대해서는 const char* const* (3.6.1p2)이 완전히 허용되는 것입니다:



구현은 main 함수를 사전 정의해서는 안 됩니다. 이 함수는 함수 오버로딩을해서는 안 되며, int형의 반환 유형을 가져야하지만 그 외의 유형은 구현에 정의되어 있습니다.


답변 2

Yes, it is legal in C++ to declare the main function as extern C. Here's an SEO-conscious Korean essay on this topic:
제목: C++에서 extern C으로 main 함수를 선언하는 것은 합법적인가요?
서론:
C++은 유연하고 강력한 프로그래밍 언어로 알려져 있습니다. 이 언어는 다양한 기능과 기능을 제공하여 개발자들에게 많은 유연성을 제공합니다. 그러나 extern 'C'를 사용하여 기능을 선언할 때 몇 가지 제한 사항이 있을 수 있습니다. 이에 대해서 알아보고, 'extern C'로 main 함수를 선언하는 것이 합법적인지 알아보겠습니다.
본론:
C++에서 extern 'C'를 사용하는 가장 일반적인 이유는 C 언어와의 상호 운용성을 위해 입니다. C++은 많은 C++ 고유의 기능과 기능을 제공하지만, 때로는 C 언어와의 상호 운용성이 필요할 때가 있습니다. 'extern C' 키워드를 사용하면 C++ 컴파일러에게 특정 함수를 C 스타일로 링크하도록 지시할 수 있습니다.
main 함수는 프로그램의 시작점으로, C++에서 특별하게 처리됩니다. C++ 컴파일러는 자동으로 main 함수를 호출하고 초기화하는 기능을 제공합니다. 따라서 main 함수를 'extern C'로 선언하는 것이 일반적인 상황에서는 필요하지 않을 수 있습니다.
그러나 가끔은 특정 상황에서 main 함수를 C 스타일로 선언하는 것이 유용할 수 있습니다. 예를 들어, C++ 프로그램을 다른 언어와 상호 운용하거나, 외부 인터페이스와 통신해야 하는 경우 등이 있습니다. 이런 경우 'extern C'를 사용하여 main 함수를 C 스타일로 구현하는 것이 필요할 수 있습니다.
중요한 점은 C++에서 'extern C'로 main 함수를 선언하는 것은 합법적이라는 것입니다. C++ 언어 사양은 main 함수의 서명을 제한하지 않기 때문입니다. 그러나 이는 C++ 컴파일러에게서 지원되지 않을 수 있으며, 프로그램이 제대로 작동하지 않을 수 있으므로 주의가 필요합니다.
결론:
C++에서 main 함수를 extern C로 선언하는 것은 합법적입니다. 이는 C++ 언어 사양에서 허용하기 때문입니다. 그러나 이러한 선언은 주의해서 사용해야 합니다. main 함수에 대한 C 스타일의 선언이 필요한 특정 상황에서만 사용해야 하며, 일반적으로는 필요하지 않을 수 있습니다. 따라서 개발자는 프로그램의 요구 사항에 맞게 적절한 방법을 선택해야 합니다.
키워드: C++, extern C, main 함수, 합법적인 선언, 상호 운용성

반응형
Comments