__attribute__((visibility("default")))
- 프로그래밍/C 프로그래밍
- 2022. 4. 10.
반응형
__attribute__((visibility(""))) 매크로를 활용하면 라이브러리 내에 구현된 함수를 라이브러리 외부에서 호출할 수 있을지 여부를 결정할 수 있다.
라이브러리 내 함수를 구현할 때,
아래와 같이 __attribute__((visibility("default"))) 속성을 부여하면 해당 함수가 라이브러리 외부에 노출되어, 해당 함수를 라이브러리 외부에서 호출할 수 있다. 즉, 라이브러리를 링크하는 어플리케이션에서 해당 함수를 호출할 수 있다.
void __attribute__((visibility("default"))) do_something()
{
...
}
반대로,
아래와 같이 __attribute__((visibility("hidden"))) 속성을 부여하면 해당 함수가 라이브러리 외부에 노출되지 않아, 해당 함수를 라이브러리 외부에서 호출할 수 없다. 즉, 라이브러리를 링크하는 어플리케이션에서 해당 함수를 호출할 수 없다.
void __attribute__((visibility("hidden"))) do_something()
{
...
}
개인의 취향에 따라 다음과 같은 방식으로 코드 가독성을 높여볼 수도 있다.
#define OPEN_API __attribute__((visibility("default")))
#define INTERNAL __attribute__((visibility("hidden")))
// 라이브러리 외부에서도 호출 가능한 함수
void OPEN_API do_something_external()
{
...
}
// 라이브러리 내부에서만 호출 가능한 함수
void INTERNAL do_something_internal()
{
...
}
참고로 __attribute__((visibility(""))) 매크로는 GNU C 컴파일러로 컴파일하는 경우에 의미가 있다.
'프로그래밍 > C 프로그래밍' 카테고리의 다른 글
빌드 에러 - undefined reference to mp_prime_is_prime (0) | 2021.03.25 |
---|---|
실행 에러 - free(): invalid size (0) | 2021.03.24 |
빌드 에러 - undefined reference to log10f (0) | 2021.03.22 |
Object Identifier asn.1 인코딩 방법 (0) | 2021.02.11 |
C 프로그래밍 : 두 GPS 좌표간 목적지 방위각(bearing) 계산하기 (0) | 2020.04.29 |
C 프로그래밍 : 두 GPS 좌표간 거리(distance) 구하기 (3) | 2020.04.29 |
C 프로그래밍 : 네트워크 인터페이스 MAC 주소 문자열을 바이트열로 변환 (2) | 2020.02.13 |
C 프로그래밍 : MAC 주소 출력 매크로 - MAC 주소 출력문을 간단하게. (0) | 2020.02.12 |