Naked 함수Naked Functions

Microsoft 전용Microsoft Specific

naked 저장소 클래스 특성은 Microsoft 전용 C 언어 확장입니다.The naked storage-class attribute is a Microsoft-specific extension to the C language. naked 저장소 클래스 특성으로 선언된 함수의 경우, 컴파일러는 코드를 프롤로그 및 에필로그 코드 없이 생성합니다.For functions declared with the naked storage-class attribute, the compiler generates code without prolog and epilog code. 이 기능을 이용하여 인라인 어셈블러 코드로 사용자 정의 프롤로그/에필로그 코드 시퀀스를 작성할 수 있습니다.You can use this feature to write your own prolog/epilog code sequences using inline assembler code. naked 함수는 가상 장치 드라이버 작성에 특히 유용합니다.Naked functions are particularly useful in writing virtual device drivers.

naked 특성은 함수의 정의에만 관련되고 형식 수정자가 아니기 때문에 naked 함수는 확장된 특성 구문을 사용합니다(확장된 저장소 클래스 특성 참조).Because the naked attribute is only relevant to the definition of a function and is not a type modifier, naked functions use the extended attribute syntax, described in Extended Storage-Class Attributes.

다음 예제에서는 naked 특성으로 함수를 정의합니다.The following example defines a function with the naked attribute:

__declspec( naked ) int func( formal_parameters )  
   /* Function body */  

또는Or, alternatively:

#define Naked   __declspec( naked )  

Naked int func( formal_parameters )  
   /* Function body */  

naked 특성은 함수의 프롤로그 및 에필로그 시퀀스에 사용되는 컴파일러 코드 생성에만 영향을 줍니다.The naked attribute affects only the nature of the compiler's code generation for the function's prolog and epilog sequences. 이러한 함수를 호출하기 위해 생성되는 코드에는 영향을 주지 않습니다.It does not affect the code that is generated for calling such functions. 따라서 naked 특성을 함수 형식의 일부로 간주하지 않으며, 함수 포인터는 naked 특성을 가질 수 없습니다.Thus, the naked attribute is not considered part of the function's type, and function pointers cannot have the naked attribute. 또한 naked 특성은 데이터 정의에 적용될 수 없습니다.Furthermore, the naked attribute cannot be applied to a data definition. 예를 들어, 다음 코드는 오류를 생성합니다.For example, the following code generates errors:

__declspec( naked ) int i;  /* Error--naked attribute not */  
                            /* permitted on data declarations. */  

naked 특성은 함수 정의에만 관련되며, 함수의 프로토타입에 지정될 수 없습니다.The naked attribute is relevant only to the definition of the function and cannot be specified in the function's prototype. 다음 코드에서는 컴파일러 오류가 생성됩니다.The following declaration generates a compiler error:

__declspec( naked ) int func();   /* Error--naked attribute not */  
                     /* permitted on function declarations.    */   \  

Microsoft 전용 종료END Microsoft Specific

참고 항목See Also

C 함수 정의C Function Definitions