C++ 11GCC, Clang ve Intel Compiler'da tek bir makroyla satır içi zorlanıyor musunuz?
'da sıkı bir döngüye gerek duyduğum bir işlev var. Bu işlevin, başlıktan ayrı bir dosyada uygulanmasını istiyorum ve yine de, kullanılmakta olduğu her yerde satır içine alınmaya zorlanmasını istiyorum. Ayrıca, hem clang, GCC hem de Intel derleyicisi ile derlemek istiyorum. Gereksinimi ortadan kaldırmak için
.
#define force_inline <something here>
başlıklarında
:
force_inline void foo();
Ve uygulama dosyasında bunu yapmak mümkün olmalıdır:
void foo() {... Code.. }
Bana böyle bir şey yapmak izin verecek bir makro arıyorum
Sadece açık olmak gerekirse, kodları başlıklarıma koymak istemiyorum. Sadece işlevin bildirimini içermelerini istiyorum.
Tüm bu derleyiciler üzerinde çalışan bir makro ile satır içi elde etmenin bir yolu var mı?
var bugüne kadar en iyi çözüm bu makro geçerli:
#define forceinline inline __attribute__((always-inline))
ICC ihtiyacı olduğunu görünüyor inlining garanti etmek ve başlıkta tam olarak uygulanmasını (kod inlining ile ilgisi yoktur) hem inline
fonksiyonun
Not: Evet, performansımı ölçtüm ve işlevinin satır içi karakterden daha hızlı olduğunu bildiğimi biliyorum. Ve hayır, derleyici benim için yapmaz.
"gcc -flto -O2" yi hem derlemek hem de bağlamak için kullanın. veya daha iyisi sadece başlık dosyanızda işlevinizi "statik satır içi" olarak tanımlar. –
Çok fazla cevap var mı? Üç derleyicide aynı anda çalışan makroyu arıyorum. –
Makrolar satır içi için kullanışlı değildir. –