gpt4 book ai didi

c++ - 更新 OSX 命令行工具 6.3 后缺少 C++ header <__debug>

转载 作者:IT老高 更新时间:2023-10-28 12:12:28 24 4
gpt4 key购买 nike

从 App Store 更新到命令行工具 6.3 后,包括 <vector> 在内的程序或 <iterator>内部包含 <__debug> 将导致文件未找到错误,如下所示。 cpp 没什么意思,但包含在其中一个包含的 header 中。

c++ -O3 -I/Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers -L/Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/build/binaries/clusterStaticLibrary /Users/farleylai/Documents/dev/git/ESMS/Optimizer/build/StreamIt/FIR/511/512/combined_threads.cpp -o streamit -lcluster -lpthread -lstdc++
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/build/StreamIt/FIR/511/512/combined_threads.cpp:9:
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/node_server.h:22:
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/thread_info.h:20:
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/connection_info.h:19:
/Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/socket_holder.h:43:25: warning: delete called on 'mysocket' that is abstract but has non-virtual destructor
[-Wdelete-non-virtual-dtor]
if (!is_mem_socket) delete sock;
^
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/build/StreamIt/FIR/511/512/combined_threads.cpp:9:
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/node_server.h:22:
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/thread_info.h:26:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/vector:265:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/__bit_reference:15:
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/algorithm:641:10: fatal error: '__debug' file not found
#include <__debug>
^

有解决这个问题的想法吗?我不希望指定任何额外的 C++ 标志。

谢谢。

PS:macOS 10.10.3 上的 MacBook Pro

更新:

Apple 在其开发者论坛上验证了该问题。在命令行工具 6.2 中,包含 __debug 的条件如下,但在 6.3 中没有。

#ifdef _LIBCPP_DEBUG
# include <__debug>
#else
# define _LIBCPP_ASSERT(x, m) ((void)0)
#endif

还有 libcxx 的人谈到要移除 __debug here 的保护措施.感觉 __debug 在 OSX 上从来不存在。

最佳答案

通过 Apple's Developer Download Page 将命令行工具降级到 6.2 .

请注意为您的 OS X 下载正确的版本:

  • OS X 10.10 commandlinetoolsosx10.10forxcode6.2.dmg
  • OS X 10.9 commandlinetoolsosx10.9forxcode6.2.dmg

这是可行的,因为 __debug 的包含在命令行工具 6.2 中受到如下条件保护,但在 6.3 中没有。

#ifdef _LIBCPP_DEBUG
# include <__debug>
#else
# define _LIBCPP_ASSERT(x, m) ((void)0)
#endif

在我看来这是最安全的方式,因为:

  1. 您不会损害您的工具链
  2. Apple 修复问题后,您可以通过 App Store 轻松升级
  3. 如果您手动添加文件,则必须稍后将其删除,否则可能会出现更多问题

更新 - 21.04.2015

问题已由 Apple 修复。安装命令行工具6.3.1后一切正常!

关于c++ - 更新 OSX 命令行工具 6.3 后缺少 C++ header <__debug>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29529455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com