Bugün bir süre önce geliştirdiğim bir proje üzerinde clang denedim. Bir derleme hatasıyla karşılaştığında şaşırdım, çünkü projemi g ++ kullanarak başarıyla derledim. Bu hatayı üretirg ++ 'da __attribute__ kullanılarak dengesiz parantez.
int main() {
__attribute__((aligned(16)) char arr[5];
}
:
test.cpp:2:32: error: expected ')'
__attribute__((aligned(16)) char arr[5];
^
)
Gördüğünüz gibi, bir umbalanced parantez var
Bu kısa pasajı hatası ile karşılaşıldı hattını yeniden üretir. Üç tane '(' ve iki ') var. Bu açıkça bir derleme hatası üretmesi gerektiği gibi görünüyor.
Bu anahtar kelimenin geçerli bir kullanımı var mı? Olduğunu gösteren the documentation'da bir şey bulamıyorum.
G ++ 4.5.2 ve clang 2.8 kullanıyorum. g yerine gcc kullanırken bu hata ++ tespit edildiği
not edin.
devletler . * * Bu anahtar kelimeyi çift parantez içinde bir özellik belirtimi izler "***. Bu nedenle, aynı sayıda parantez ile kapatma hakkında kesin açık sözlü kelimeler söylemez, ancak tüm gcc örnekleri eşleşen parantezi gösterir, böylelikle bir hataya benzer. –
Evet, aslında bir böcek gibi görünüyor. Tam tersini gösterebilecek bir şey bulamıyorum. – mfontanini
@ DavidRodríguez-dribeas clang bunu destekliyor. Yani, g ++, bu açıklamayı doğru şekilde ayrıştırmıyor gibi görünüyor. clang doğru şeyi yapıyor (en azından şüpheliyim ki ... bu yüzden soruyorum: D) Burada bir hata bildirirken. '++ g üzerinde doğru derleyici hata veriyor – mfontanini