본문 바로가기
Build System

GCC attribute

by rewyear 2024. 8. 9.

GCC __attribute__((<__ATTR__>))

gcc 컴파일러가 제공하는 확장 기능으로 속성을 지정하는 키워드

해당 키워드를 통해서 변수 혹은 함수에 대한 속성을 지정할 있음.

 

종류

  • __attribute__((__used__)): 컴파일 최적화를 통해 사용하지 않는 변수들을 제외하는데 해당 속성을 지정하게 되면 사용하지 않는 변수에 대해서 제외시키지 않음
  • __attribute__((__aligned__(x))): 선언한 변수의 메모리 주소를 x 크기로 align
  • __attribute__((__packed__)): 구조체 변수에 대해서 padding 하지 않고 실제 data size만큼 할당. (4byte align)
    ex)  1번 case의 경우 padding에 의해 8byte 메모리를 할당. / 2번 case의 경우 해당 키워드를 통해  5byte 할당 
    typedef struct { int a; char b; } test;
    typedef struct { int a; char b; } __attribute__((__packed__)) test;
  • __attribute__((__weak__)): 함수 또는 변수 symbol 대하여 stub or default 함수를 정의해놓고 새로 override 있게 해주는 키워드.
  • __attribute__((__section__("section_name"))): 해당 키워드가 지정된 변수 혹은 함수가 "section_name" 위치해야 하는 것을 명시. section 대한 정의는 linker 통해 설정
300x250

'Build System' 카테고리의 다른 글

GCC attribute  (2) 2024.02.02