2012-02-04 31 views
9

'std :: this_thread' bir üyesi değildir:'verim Çünkü mevcut iplik elde etmek için güvenilir

std :: this_thread :: verim();

Ama ne yazık ki GCC iyi bilir:

'verim' D_GLIBCXX_USE_NANOSLEEP, ya da ne benzer

Bazı unuttun mu 'std :: this_thread' üyesi kesmek

değil

?

+1

Çalışmanız gerektiğini düşündüğünüz bir program ekleyebilir misiniz? – Mankarse

cevap

13

Evet, bu, _GLIBCXX_USE_NANOSLEEP ile benzer bir sorun gibi görünüyor. GCC, _GLIBCXX_USE_SCHED_YIELD makrosuna bağlı olarak koşullu olarak derlenmiş yield sahiptir. Bunu tanımlarsanız derlemesi gerekir.

Bu GCC 4.8'den itibaren düzeltilecektir.

7

Kodunuzda _GLIBCXX_USE_NANOSLEEP veya _GLIBCXX_USE_SCHED_YIELD tanımlamamalısınız. Bunlar GCC/libstdC++ - dahili makrolardır, yani bunu tanımlamalıdır. Tanımlanmamışlarsa, GCC'nin işlevlerin kullanılabilirliğini kontrol etme seçeneği ile yapılandırılmamış olmasından kaynaklanır. Görünüşe göre, kullandığınız herhangi bir sistem için bu seçeneği etkinleştirmek için herhangi bir olumsuzluk olmadığından, KİK'nizi kimin yaptıracağını sorabilirsiniz. Tamamlanana kadar, kodunuzdaki makroyu etkinleştirmekten daha güvenli bir saldırı, makroları tanımlamak için sisteminizdeki c++config.h dosyasını değiştirmektir.

1

Program_eldinin algılanmasını sağlamak için gcc'yi yapılandırırken '--enable-libstdcxx-time' kullanmanız gerekebilir. Bazı nedenlerden dolayı, birden çok özellik için tek bir denetim var

İlgili konular