C 언어attribute__ 키워드 이해

발생 한 문제
다음은 redis 소스 코드 입 니 다. 그 중 에 가 나 타 났 습 니 다.attribute__,그렇다면 그것 은 도대체 무슨 뜻 일 까?
//redis-6.0.5/src/sds.h
struct __attribute__ ((__packed__)) sdshdr64 {
     
    uint64_t len; /* used */
    uint64_t alloc; /* excluding the header and null terminator */
    unsigned char flags; /* 3 lsb of type, 5 unused bits */
    char buf[];
};

이곳attribute__ (packed) 의 역할 은 컴 파일 러 에 게 구조 체 가 컴 파일 과정 에서 메모리 정렬 을 최적화 시 키 고 실제 점용 바이트 수 에 따라 정렬 하 는 것 을 알려 주 는 것 이다.왜 메모리 정렬 을 하지 않 습 니까?메모리 정렬 은 cpu 읽 기 효율 을 높 일 수 있 습 니 다. 개인 적 으로 redis 가 성능 을 확보 하 는 전제 에서 이렇게 하 는 것 은 메모리 절약 과 빠 른 주소 찾기 를 위 한 것 으로 이해 합 니 다.GNU C 의 가장 큰 특징 은 입 니 다.attribute__메커니즘.
  • __attribute__함수 속성 (Function Attribute), 변수 속성 (Variable Attribute), 유형 속성 (Type Attribute) 을 설정 할 수 있 습 니 다.
  • __attribute__쓰기 특징:attribute__앞 뒤 에는 두 개의 밑줄 이 있 고 뒤 에는 한 쌍 의 괄호 가 바짝 붙 어 있 으 며 괄호 안 에는 해당 하 는attribute__매개 변수.
  • __attribute__문법 형식: attribute ((attribute - list)
  • 그 위치 제약: 성명 의 끝부분 에 놓는다. "이전
  • attribute 관련 자료
    gun 문서:
  • 함수 속성 (함수 속성)http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
  • 변수 속성 (변수 속성)http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html
  • 유형 속성 (유형 속성)http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html

  • 참고 한 블 로그 들:
  • 이 총 결 은 매우 완전 하 다.https://www.jianshu.com/p/29eb7b5c8b2d
  • 이것 은 매우 통속 적 이 고 이해 하기 쉽다.http://blog.chinaunix.net/uid-25768133-id-3485479.html
  • 좋은 웹페이지 즐겨찾기