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 (0) | 2024.08.09 |
---|