【问题标题】:What to do about Carbon functions that are deprecated in MacOS/X 10.8.x?如何处理 MacOS/X 10.8.x 中已弃用的 Carbon 函数?
【发布时间】:2013-04-16 23:55:49
【问题描述】:

我有一个 C++ 代码库,它已经存在了一段时间(10 年以上),它可以编译并运行良好,但我注意到当我在 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 最终删除这些功能时/当 Apple 最终删除这些功能时出现警告和未来的痛苦),但我无法弄清楚新的标准是。我查看了 developer.apple.com 上的 OS/X 文档,但要么是我缺乏搜索技能,要么是他们的文档,因为我几乎没有发现任何关于这些功能的信息,也没有关于它们的替代品。

我的具体问题:

  1. 为什么不推荐使用这些函数?
  2. 我应该调用哪些函数?
  3. 是否有一些我不知道的秘密文档库可以为我解答这类问题?

【问题讨论】:

  • 您需要迁移到 Cocoa。你可以从这里开始——stackoverflow.com/a/3921777/2235132
  • 如果我迁移到 Cocoa,我的 C++ 应用程序会变成一个 C++-with-a-bit-of-Objective-C-thrown-in 应用程序,我怀疑这会使构建过程复杂化。没有?
  • Apple 不久前弃用了 Carbon API。他们停止支持只是时间问题。它不应该使构建过程变得非常复杂。

标签: c osx-mountain-lion deprecated macos-carbon


【解决方案1】:

我找到了上面列出的功能的可用替代品:

  1. UpTime() 可以替换为对 mach_absolute_time() 的调用,详见 here
  2. AbsoluteToNanoseconds() 可以用一些数学运算代替,如上面的链接所示。
  3. 可以通过调用 host_info() 来替换 MPProcessors,如下所示:
#include 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;

【讨论】:

  • 你是怎么找到他们的?我正在寻找其他功能的替代品。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 2022-11-20
  • 2012-03-14
  • 2010-09-14
相关资源
最近更新 更多