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 전용 종료

참고 항목

__declspec
키워드
Naked 함수 호출