2012-02-04 44 views
9

我試圖得到當前線程的成員:'產率' 不是 '的std :: this_thread'

的std :: this_thread ::收率();

但不幸的是GCC知道得更清楚:

'產量' 不是 '的std :: this_thread' 成員

沒有忘記對一些破解類似D_GLIBCXX_USE_NANOSLEEP,或者什麼?

+1

你可以添加一個你認爲應該工作的最小程序? – Mankarse 2012-02-04 10:09:30

回答

13

是的,這似乎是一個類似於_GLIBCXX_USE_NANOSLEEP的問題。 GCC根據宏_GLIBCXX_USE_SCHED_YIELD有條件編譯yield。如果你定義了它,它應該編譯。

這將固定爲GCC 4.8。

7

您不應在代碼中定義_GLIBCXX_USE_NANOSLEEP_GLIBCXX_USE_SCHED_YIELD。它們是GCC/libstdC++ - 內部宏,所以應該定義它。如果它們沒有定義,那是因爲GCC沒有配置檢查功能可用性的選項。由於無論您使用哪種系統,啓用該選項顯然沒有缺點,您可以詢問提供GCC的用戶是否願意這樣做。在完成之前,比在代碼中啓用宏更安全的方法是修改系統中的c++config.h文件以定義宏。

1

配置gcc啓用sched_yield檢測時,可能需要使用'--enable-libstdcxx-time'。出於某種原因,有一個單一的檢查多個功能

相關問題