__declspec은 무엇이며 언제 사용해야합니까?
내가 __declspec
읽는 코드에서 인스턴스를 보았습니다 . 무엇입니까? 그리고이 구조를 언제 사용해야합니까?
이것은 C ++ 언어에 대한 Microsoft 고유의 확장으로, 스토리지 클래스 정보로 유형 또는 함수의 속성을 지정할 수 있습니다.
선적 서류 비치
표준 예제는 __declspec(dllimport)
및로 __declspec(dllexport)
, 링커에서 DLL로 (또는 각각) 심볼을 가져오고 내보내도록 지시합니다.
// header
__declspec(dllimport) void foo();
// code - this calls foo() somewhere in a DLL
foo();
( __declspec(..)
마이크로 소프트의 특정 내용을 마무리-호환성을 달성하기 위해 보통 매크로로 마무리합니다)
주로 심볼을 가져 오거나 심볼을 공유 라이브러리 (DLL)로 내보내는 데 사용됩니다. 비주얼 C ++ 및 GCC 컴파일러 지원 모두 __declspec(dllimport)
와 __declspec(dllexport)
. 다른 용도 (일부 Microsoft 만 해당)는 MSDN에 문서화 되어 있습니다.
__declspec 키워드 를 설명하는 또 다른 예 :
Windows 커널 드라이버를 작성할 때 인라인 어셈블러 코드를 사용하여 고유 한 프롤로그 / 에필로그 코드 시퀀스를 작성하려고 하므로 벌거 벗은 속성으로 함수를 선언 할 수 있습니다 .
__declspec( naked ) int func( formal_parameters ) {}
또는
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
알몸 (C ++)을 참조하십시오
기본적으로 Microsoft가 C ++ 확장을 도입하여 향후 표준 C ++ 확장과 충돌하지 않도록합니다. __declspec을 사용하면 함수 또는 클래스를 특성화 할 수 있습니다. 정확한 의미는 __declspec의 특성에 따라 다릅니다. 예를 들어 __declspec (naked)은 프롤로그 / 에필로그 생성 (인터럽트 처리기, 포함 가능한 코드 등)을 억제하고 __declspec (thread)는 변수를 스레드 로컬로 만듭니다.
__declspec 특성의 전체 목록은 MSDN에서 사용할 수 있으며 컴파일러 버전 및 플랫폼에 따라 다릅니다.
8 년이 지났음을 알고 있지만 MRuby에서 발견 된이 코드를 공유하여 __declspec()
꿀벌과 같은 수준에서 꿀벌을 어떻게 사용할 수 있는지 보여줍니다 export keyword
.
/** Declare a public MRuby API function. */
#if defined(MRB_BUILD_AS_DLL)
#if defined(MRB_CORE) || defined(MRB_LIB)
# define MRB_API __declspec(dllexport)
#else
# define MRB_API __declspec(dllimport)
#endif
#else
# define MRB_API extern
#endif
참고 URL : https://stackoverflow.com/questions/2284610/what-is-declspec-and-when-do-i-need-to-use-it
'IT' 카테고리의 다른 글
드롭 파일을 표준 html 파일 입력으로 드래그 (0) | 2020.06.21 |
---|---|
CTRL + SHIFT + Z 대신 IntelliJ (Android Studio) 다시 실행 바로 가기를 CTRL + Y로 구성하는 방법은 무엇입니까? (0) | 2020.06.21 |
C #에서 속성을 동적으로 추가 할 수 있습니까? (0) | 2020.06.21 |
Visual Studio 2015에서 C # 7을 사용하는 방법은 무엇입니까? (0) | 2020.06.21 |
CancellationTokenSource를 언제 처분해야합니까? (0) | 2020.06.21 |