logo

C의 __attribute__((생성자)) 및 __attribute__((소멸자)) 구문

GCC 컴파일러를 사용하여 C로 두 개의 함수를 작성합니다. 그 중 하나는 주 함수 이전에 실행되고 다른 하나는 주 함수 이후에 실행됩니다. GCC 특정 구문 : 1. __속성__((생성자)) 구문: 함수와 함께 사용될 때 이 특정 GCC 구문은 프로그램 시작 시, 즉 이전에 동일한 함수를 실행합니다. 기본() 기능. 2. __속성__((소멸자)) 구문 : 함수와 함께 사용될 때 이 특정 GCC 구문은 프로그램이 _exit를 통해 종료되기 직전에 동일한 함수를 실행합니다. 기본() 기능. 설명 : 생성자와 소멸자가 작동하는 방식은 공유 객체 파일에 각각 생성자 및 소멸자 속성으로 표시된 함수에 대한 참조가 포함된 특수 섹션(ELF의 .ctors 및 .dtors)이 포함되어 있다는 것입니다. 라이브러리가 로드/언로드될 때 동적 로더 프로그램은 그러한 섹션이 존재하는지 확인하고 존재하는 경우 거기에 참조된 함수를 호출합니다. 이와 관련하여 주목할 만한 몇 가지 사항은 다음과 같습니다. 1. __속성__((생성자)) 일반적으로 프로그램 시작 중에 공유 라이브러리가 로드될 때 실행됩니다. 2. __속성__((소멸자)) 일반적으로 프로그램 종료 시 공유 라이브러리가 언로드될 때 실행됩니다. 3. 두 개의 괄호는 아마도 함수 호출과 구별하기 위한 것입니다. 4. __기인하다__ GCC 특정 구문이며 함수나 매크로가 아닙니다. 드라이버 코드 : CPP
// C program to demonstrate working of // __attribute__((constructor)) and // __attribute__((destructor)) #include // Assigning functions to be executed before and // after main() void __attribute__((constructor)) calledFirst(); void __attribute__((destructor)) calledLast(); void main() {  printf('nI am in main'); } // This function is assigned to execute before // main using __attribute__((constructor)) void calledFirst() {  printf('nI am called first'); } // This function is assigned to execute after // main using __attribute__((destructor)) void calledLast() {  printf('nI am called last'); } 
Output:
I am called first I am in main I am called last 
퀴즈 만들기