MacOS - Clang使用bits/stdc++.h - 非官方(竞赛用) - 通用方法

前言

Windows和MacOS双用户,Windows上cpp打竞赛/刷题 时使用bits/stdc++.h确实方便,毕竟不是实际项目的开发。

但MacOS的默认clang不包含bits/stdc++.h头文件,检索、github多星仓库的方法都不通用,故写此文已记之。

并且每次mac更新了developer kit之后,之前手动添加的bits/stdc++.h头文件都会失效,需要重新添加。

原理

不论是编译过程中还是在IDE的语法检测过程中,(若无指定特殊参数)都是会去默认库文件路径下查找目标头文件。

而clang默认没有bits/stdc++.h这个头文件,所以没办法#include <bits/stdc++.h>

所以直接新建个这个文件,放到库文件目录下就好了。

方法

网上clang库文件的位置都是一个固定路径,不同版本的MacOS(如最近新出的MacOS26)路径也不同。

如何确定clang默认库文件的位置?两个方法吧

方法一:IDE中获取

如果你使用IDE(大概率),如VsCode,直接随便创建个cpp文件,如:

cpp 复制代码
#include <iostream>

然后鼠标在iostreamCommand+单击鼠标左键就好。

这样VsCode就会打开iostream这个文件,这个文件所在路径就是clang库文件的默认路径。(如:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/

方法二:使用clang命令

MacOS上打开终端,输入命令clang -E -x c++ - -v < /dev/null,可以看到输出中包含如下内容:

复制代码
#include "..." search starts here:
#include <...> search starts here:
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1
 /Library/Developer/CommandLineTools/usr/lib/clang/17/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
 /Library/Developer/CommandLineTools/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks (framework directory)
End of search list.

看到没,#include <...> search starts here:,也就是说#include <xxx>的时候是从这些路径下开始搜索头文件的。

随便选一个(如第一个的/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/即可)。

最后的头文件添加

在上一步找到的库文件默认路径下新建文件夹bits,并将stdc++.h放入这个文件夹下就好了。

至于stdc++.h这个文件怎么来?可以在Windows上复制(maybe),也可以使用Github上的这个

End

The Real End, Thanks! 同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
C++ 老炮儿的技术栈12 小时前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt
橘颂TA12 小时前
【笔试】算法的暴力美学——牛客 NC213140 :除2!
c++·算法·结构与算法
三道渊13 小时前
进程通信与网络协议
开发语言·数据库·php
白露与泡影13 小时前
Java面试题库及答案解析(2026版)
java·开发语言·面试
wsoz13 小时前
Leetcode普通数组-day5、6
c++·算法·leetcode·数组
favour_you___13 小时前
2026_4_8算法练习题
数据结构·c++·算法
疯狂成瘾者13 小时前
Chroma向量数据库
开发语言·数据库·c#
我是唐青枫13 小时前
C#.NET Monitor 与 Mutex 深入解析:进程内同步、跨进程互斥与使用边界
开发语言·c#·.net
bbq粉刷匠13 小时前
Java--剖析synchronized
java·开发语言
ou.cs13 小时前
c# 信号量和锁的区别
开发语言·c#