2014-07-14 21 views
20

Bazı açık kaynaklı projeleri vs2013 c/C++ derleyicisini kullanarak derlemeye çalışıyorum. Dosya .c uzantısıdır. Aşağıdaki kod bazı hatalar (aşağıda) verir. Bunların hepsi beyannamedeki satır içi çizgiyi kaldırarak "sabitlenebilir". Not: gerçek bir fonksiyon, sadece açıklayıcıBildirimde satır içi kullanılamadı Hata oluştu C2054

static inline int pthread_fetch_and_add(int *val, int add, int *mutex) 
{ 
    return 0; 
} 

hataları hata C2054: bekleniyor '(' 'inline' hata C2085 takip etmek: 'pthread_fetch_and_add': değil biçimsel parametre listesinde hata C2143: sözdizimi hatası: eksik ';'. MSVC ile önce '{'

+2

VS tam olarak standart uyumlu bir derleyici değil, bu yüzden iyi şanslar, 'inline' kaldırma işleminin basit "düzeltmesini" kullanmanız gerektiğidir. – dasblinkenlight

cevap

29

Kullanım __inline

inline bir c99 anahtar kelime ve c99 henüz değil mi (tam) MSVC ile desteklenmiş

.

"Satır içi anahtar sözcük yalnızca C++ 'da kullanılabilir. __inline ve __forceinline anahtar sözcükleri hem C hem de C++ sürümlerinde bulunur. önceki sürümleri ile uyumluluk için _inline __inline eşanlamlıdır "

Kaynak:. http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx

+0

teşekkürler, bunun için birkaç saat harcadım :-( – user3836754

+0

@ user3836754 – ouah

5

basit bir çözüm MSVC derleyici ile inline __ = -Dinline etmektir

2

Aynı karşılaştım. .

#if defined(_MSC_VER) 
#define inline __inline 
#endif 

: sorunu yerine __inline her inline değişen, ben işlev bildirimleri tüm önce aşağıdaki eklendi Bu, orijinal kodun hala farklı bir derleyici ile derlenmesini sağlar (muhtemelen VS ile aynı sınırlamalara sahip değildi).