나는 C++ 11의 꽉 루프에서 인라인 할 필요가있는 함수를 가지고있다.GCC, Clang 및 인텔 컴파일러에서 하나의 매크로로 인라인을 실행 하시겠습니까?
이 함수를 헤더와 별도의 파일에 구현하고 그것이 사용되는 모든 곳에서 인라인되도록해야한다. 또한 clang, GCC 및 인텔 컴파일러 모두를 사용하여 컴파일하려고합니다.
요구 사항을 자세히 설명합니다.
#define force_inline <something here>
헤더에서
:
force_inline void foo();
내가 구현 파일에서이 작업을 수행 할 수 있어야한다 :
void foo() {... Code.. }
나는 내가 뭔가를 할 수 있도록 해주는 매크로를 찾고 있어요
그냥 분명히하기 위해 헤더에 코드를 넣고 싶지는 않습니다. 나는 그들이 그 기능의 선언만을 포함하기를 바란다.
모든 컴파일러에서 작동하는 매크로로 인라이닝 할 수있는 방법이 있습니까?
내가 지금까지 가지고있는 가장 좋은 방법은이 매크로입니다 :
#define forceinline inline __attribute__((always-inline))
ICC가 필요한 것으로 보인다 인라인을 보장하고 헤더의 완전한 이행 (코드를 인라인 함께 할 수 없다) 모두 inline
함수의.
추신 : 예, 성능을 측정했는데 실제로 기능을 인라인하는 것이 더 빠르다는 사실을 알고 있습니다. 그리고 아니오, 컴파일러는 나를 위해 그것을하지 않습니다.
컴파일과 링크를 위해'gcc -flto -O2'를 사용하십시오. 또는 단순히 헤더 파일에'static inline' 함수를 정의하면됩니다. –
답변이 너무 많습니까? 나는 세 컴파일러 모두에서 동시에 작동하는 매크로를 찾고있다. –
매크로는 인라인에 유용하지 않습니다. –