5

しばらく (10 年以上) 使用されている C++ コードベースがあり、コンパイルして正常に動作しますが、OS/X 10.8.x (Mountain Lion) でコンパイルすると、コンパイラが非推奨の警告を発することに気付きました。それが呼び出す Carbon 関数のいくつか:

../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]

このコードベースを Apple が承認した新しい方法にアップグレードしたい (したがって、Apple が最終的にこれらの機能を削除した場合の警告や将来の苦痛を回避したい) が、新しい標準が何であるかがわかりません。developer.apple.com で OS/X のドキュメントを調べましたが、検索スキルが不足しているか、ドキュメントが不足しているかのどちらかです。

具体的な質問:

  1. これらの関数が廃止されたのはなぜですか?
  2. 代わりにどの関数を呼び出す必要がありますか?
  3. この種の質問に答えてくれる、私が知らない秘密のドキュメント リポジトリはありますか?
4

1 に答える 1

2

上記の関数の使用可能な代替品を見つけました。

  1. ここで詳しく説明されているように、UpTime() は mach_absolute_time() の呼び出しに置き換えることができます。
  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;
于 2013-04-18T00:32:01.767 に答える