GCC 의attribute__ ((constructor) 와attribute__ ((destructor))
다음은 간단 한 예 를 통 해 gcc 의 를 소개 합 니 다.attribute__ (constructor) 속성의 역할.
gcc 함수 설정 허용attribute__ ((constructor) 와attribute__ (destructor) 두 가지 속성 은 말 그대로 수 정 된 함 수 를 구조 함수 나 석조 함수 로 하 는 것 이다.프로그래머 는 다음 과 같은 방식 으로 함수 에 이 속성 을 설정 할 수 있 습 니 다.
void funcBeforeMain() __attribute__ ((constructor));
void funcAfterMain() __attribute__ ((destructor));
함수 이름 앞 에 놓 을 수도 있 습 니 다:
void __attribute__ ((constructor)) funcBeforeMain();
void __attribute__ ((destructor)) funcAfterMain();
(constructor) 속성 을 가 진 함 수 는 main () 함수 전에 실 행 됩 니 다. (destructor) 속성 을 가 진 함 수 는 main () 이 종 료 될 때 실 행 됩 니 다.
다음은 간단 한 예 를 들 어 보 겠 습 니 다.
#include <stdio.h>
void
__attribute__((constructor)) funcBeforeMain()
{
printf("%s...
", __FUNCTION__);
}
void
__attribute__((destructor)) funcAfterMain()
{
printf("%s...
", __FUNCTION__);
}
int main()
{
printf("main...
");
return 0;
}
컴 파일 및 실행 프로그램:
[root@ubuntu workshop]# gcc constructor.c -o constructor [root@ubuntu workshop]# ./constructor funcBeforeMain... main... funcAfterMain...
프로그램 실행 결 과 를 통 해 알 수 있 듯 이 constructor 속성 을 설정 한 funcBeforeMain () 함 수 는 프로그램 이 main () 함수 에 들 어가 기 전에 호출 되 었 고 destructor 속성 을 설정 한 funcAfterMain () 함 수 는 main () 함수 가 돌아 온 후에 호출 되 었 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GCC 확장attribute__ ((visibility("hidden")))이러한 상황을 생각해 보면 프로그램은 어떤 함수 A를 호출하고 A 함수는 두 개의 동적 링크 라이브러리liba.에 존재한다.so,libb.so에서, 그리고 프로그램 실행은 이 두 라이브러리를 연결해야 한다. 이때 프...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.