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>

然后鼠标在iostream上Command+单击鼠标左键就好。

这样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和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
青柠之夏cc19 分钟前
前端拖拽功能原生实现,不引入拖拽库完成业务
开发语言·前端·python
ym hyd 11126 分钟前
题库建立与考试系统源码 Java+SpringBoot+Vue3 前后分离
java·开发语言·vue.js·spring boot·毕设
OKkankan32 分钟前
Python 高阶语法(一):高阶函数、闭包、lambda 与 functools——从底层真正理解装饰器
开发语言·python
geovindu39 分钟前
rust: Facade Pattern
开发语言·后端·设计模式·rust·外观模式
福大大架构师每日一题1 小时前
Rust 1.99.0发布:C 可变参数、裸函数、Cargo 配置、Rustdoc 性能与大量兼容性调整全解析
c语言·开发语言·rust
智鸟科技GemeOpen开发者智能设备1 小时前
平安校园 AI 智能实时告警系统 智鸟科技·GemeOpen + 谷华科技·融合创新方案白皮书
java·开发语言·python·物联网·智能家居
Wang's Blog1 小时前
Java框架 SpringCloud 快速入门: Feign 的自定义配置与日志级别
java·开发语言·spring cloud
成旭先生1 小时前
企业全景信息查询 API:工商照面 33 项、股东出资、变更与社保一次查全
java·开发语言·api接口·企业信息查询·工商数据·风控尽调·供应商准入
2601_962885721 小时前
批量取数比循环单取快多少?用 AlphaFeed klines.batch给多股票取数提速
开发语言·php·batch
动词ing2 小时前
【C语言题目练习】算法 整数反转
c语言·开发语言·算法