2013-04-16 44 views
4

我有一個C++代碼庫已經存在了一段時間(10多年),它編譯和運行良好,但我注意到,當我在OS/X 10.8.x(山獅)下編譯它時,編譯器發出棄用關於一些碳功能的警告調用:如何處理MacOS/X 10.8.x中不推薦使用的碳功能?

../system/SetupSystem.cpp:575:44: warning: 'UpTime' is deprecated: first 
    deprecated in OS X 10.8 [-Wdeprecated-declarations] 
../system/SetupSystem.cpp:575:22: warning: 'AbsoluteToNanoseconds' is 
    deprecated: first deprecated in OS X 10.8 [-Wdeprecated-declarations] 
../system/SystemInfo.cpp:249:25: warning: 'MPProcessors' is deprecated: first deprecated in OS X 10.7 [-Wdeprecated-declarations] 

我想升級這個代碼庫做的事情(新蘋果批准的方式,從而避免了警告和未來的痛苦,如果/當蘋果最終消除這些功能),但我無法弄清楚新標準是什麼。我瀏覽了developer.apple.com上的OS/X文檔,但是我的搜索技巧缺乏或者他們的文檔是這樣的,因爲我幾乎沒有發現這些功能,也沒有關於它們的替換。

的具體問題,我有:

  1. 爲什麼這些功能過時?
  2. 我應該調用哪些函數呢?
  3. 是否有一些祕密文檔庫,我不知道會爲我回答這些類型的問題?
+0

您需要遷移到可可。你可以從這裏開始 - http://stackoverflow.com/a/3921777/2235132 – devnull

+1

如果我遷移到Cocoa,我的C++應用程序將成爲一個C++ - 帶有一點Objective-C-thrown-in應用程序,我懷疑這會使構建過程複雜化。沒有? –

+0

蘋果已棄用Carbon API。他們停止支持只是時間問題。它不應該使構建過程複雜化很多。 – devnull

回答

2

我發現對於上面列出的功能可用的替換:

  1. 正常運行時間()可以通過一個呼叫被替換以mach_absolute_time(),如詳細here
  2. AbsoluteToNanoseconds()可以用一些數學來代替,如上面的鏈接所示。
  3. MPProcessors可以通過調用來代替,以host_info(),像這樣:
 
#include <mach/mach_host.h> 

mach_msg_type_number_t infoCount = HOST_BASIC_INFO_COUNT; 
host_info(gHostPort, HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount); 
int numProcessors = hostInfo.avail_cpus; 
+0

你是如何找到它們的?我正在尋找其他功能的替代品。 – apalopohapa

+0

只是通過大量的谷歌搜索恐怕... –

相關問題