2014-12-19 3 views

답변

2

always_inlinepuregcc 기능 속성입니다. GCC documentation에서 : 최적화를 지정하지 않으면

always_inline

일반적으로, 함수는 인라인되지 않습니다. 인라인으로 선언 된 함수의 경우이 속성은 인라인에 적용되는 제한 사항과 상관없이 함수를 인라인합니다. 이러한 기능을 인라인하지 못하면 오류로 진단됩니다. 이러한 함수가 간접적으로 호출되면 컴파일러는 최적화 수준에 따라 컴파일러를 인라인하거나 인라인하지 않을 수 있으며 간접 호출을 인라인하지 못하면 진단되거나 진단되지 않을 수 있습니다.

귀하의 MY_FUNC 기능은 이미 inline 기능 지정자를 가지고 있지만 C에 inline는 인라인 할 수있는 제안이 아니라 컴파일러가 함수를 인라인 할 의무가 없습니다.

순수

많은 함수는 반환 값을 제외하고 아무 효과가 없으며 자신의 반환 값은 매개 변수 및/또는 전역 변수에 따라 달라집니다. 이러한 함수는 산술 연산자처럼 일반적인 하위 식 제거 및 루프 최적화의 적용을받을 수 있습니다. 이 함수는 pure 속성으로 선언해야합니다.

0
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을 참조하십시오.

"너무 광범위"로 투표 마감.

관련 문제