다음 함수 선언을 설명 할 수있는 사람은 누구입니까?다음 함수 선언을 이해할 수 없습니다.
inline uint64_t MY_FUNC(unsigned long param) __attribute__ ((pure, always_inline));
다음 함수 선언을 설명 할 수있는 사람은 누구입니까?다음 함수 선언을 이해할 수 없습니다.
inline uint64_t MY_FUNC(unsigned long param) __attribute__ ((pure, always_inline));
always_inline
및 pure
는 gcc
기능 속성입니다. GCC documentation에서 : 최적화를 지정하지 않으면
always_inline
일반적으로, 함수는 인라인되지 않습니다. 인라인으로 선언 된 함수의 경우이 속성은 인라인에 적용되는 제한 사항과 상관없이 함수를 인라인합니다. 이러한 기능을 인라인하지 못하면 오류로 진단됩니다. 이러한 함수가 간접적으로 호출되면 컴파일러는 최적화 수준에 따라 컴파일러를 인라인하거나 인라인하지 않을 수 있으며 간접 호출을 인라인하지 못하면 진단되거나 진단되지 않을 수 있습니다.
귀하의 MY_FUNC
기능은 이미 inline
기능 지정자를 가지고 있지만 C에 inline
는 인라인 할 수있는 제안이 아니라 컴파일러가 함수를 인라인 할 의무가 없습니다.
순수
많은 함수는 반환 값을 제외하고 아무 효과가 없으며 자신의 반환 값은 매개 변수 및/또는 전역 변수에 따라 달라집니다. 이러한 함수는 산술 연산자처럼 일반적인 하위 식 제거 및 루프 최적화의 적용을받을 수 있습니다. 이 함수는 pure 속성으로 선언해야합니다.
inline uint64_t MY_FUNC(unsigned long param) __attribute__ ((pure, always_inline));
inline
- 기능은 최적화 힌트 또는 연결을 위해 하나, 인라인을 선언했다.uint64_t
- 고정 폭 반환 유형입니다. <stdint.h>
을 참조하십시오. MY_FUNC
unsigned long
함수 이름 - 매개 변수param
의 유형 - GCC 컴파일러 별 특성 - 매개 변수__attribute__ ((pure, always_inline))
의 이름입니다. ouah 누가 그들의 설명을 ninja'd을 참조하십시오."너무 광범위"로 투표 마감.
콘솔의 테이프 : man gcc ;-) – Oscar