2013-08-02 49 views
6

Birçok farklı işlevlere sahip ve hepsi buna benzer __func__ kullanarak basit printf ifadeleri vardır:Neden __func__ C bazı işlevlerde <unknown> döndürür?

printf("%s - hello world!", __func__);

Şimdi içine çalıştırıyorum sorun bazı fonksiyonlarda o <unknown> yerine fonksiyonun döner olmasıdır ad.

Neden? Yanlış bir şey mi yapıyorum? AFAIK __func__, c99'un bir parçasıdır, bu yüzden neden reklamı olarak çalışmadığını anlamıyorum.

Debian'da GCC 4.7.2 kullanıyorum.

+1

Bir [SSCCE] sağlayabiliyor musunuz? (Http://www.sscce.org/) Bu http://bugs.mysql.com/bug.php?id=65294 adresine benzediğini merak ediyorum. Bir başlık dahil edilirken bir sorun. –

+2

Bize bir yetkili durum gösterebilir misiniz? – nouney

+0

C uyumluluğu için farklı gcc seçeneklerini kullanarak farklı modüller oluşturuyor olabilir misiniz? – alk

cevap

2

araçlarının bu bug benzer bir şey yapıyor ve şöyle __func__ tanımlayan olmalıdır dahil bir başlık gibi geliyor:

define __func__ "<unknown>" 

ve bu başlık (ler) dahil Dolayısıyla, yalnızca görüyorum. Bunun sınanması için hızlı bir yol, 'u __func__'un çalışmadığı bir kod bölümünde kullanmaktır. Sonra, onu daraltmak ve hangi başlığın sorunlu bir mantığa sahip olduğunu bulup düzeltmeniz gerekiyor.