naked(C++)
Microsoft 전용
특성으로 선언된 함수의 naked
경우 컴파일러는 프롤로그 및 에필로그 코드 없이 코드를 생성합니다. 이 기능을 이용하여 인라인 어셈블러 코드로 사용자 정의 프롤로그/에필로그 코드 시퀀스를 작성할 수 있습니다. naked 함수는 가상 디바이스 드라이버 작성에 특히 유용합니다. naked
이 특성은 x86 및 ARM에서만 유효하며 x64에서는 사용할 수 없습니다.
구문
__declspec(naked) declarator
설명
naked
특성은 함수 정의와만 관련이 있고 형식 한정자가 아니므로 naked 함수는 확장 특성 구문과 __declspec 키워드(keyword) 사용해야 합니다.
함수가 __forceinline 키워드(keyword) 표시되어 있더라도 컴파일러는 naked 특성으로 표시된 함수에 대한 인라인 함수를 생성할 수 없습니다.
특성이 멤버가 아닌 메서드의 naked
정의 이외의 항목에 적용되는 경우 컴파일러에서 오류를 발생합니다.
예제
이 코드는 특성을 사용하여 함수를 naked
정의합니다.
__declspec( naked ) int func( formal_parameters ) {}
또는 다음을 수행합니다.
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
naked
특성은 함수의 프롤로그 및 에필로그 시퀀스에 사용되는 컴파일러 코드 생성에만 영향을 줍니다. 이러한 함수를 호출하기 위해 생성되는 코드에는 영향을 주지 않습니다. 따라서 naked
특성을 함수 형식의 일부로 간주하지 않으며, 함수 포인터는 naked
특성을 가질 수 없습니다. 또한 naked
특성은 데이터 정의에 적용될 수 없습니다. 예를 들어 이 코드 샘플은 오류를 생성합니다.
__declspec( naked ) int i;
// Error--naked attribute not permitted on data declarations.
naked
특성은 함수 정의에만 관련되며, 함수의 프로토타입에 지정될 수 없습니다. 예를 들어 이 선언은 컴파일러 오류를 생성합니다.
__declspec( naked ) int func(); // Error--naked attribute not permitted on function declarations
Microsoft 전용 종료
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기