You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

终端clang++编译C++代码成功,Makefile编译报std::async不存在错误

问题原因及解决方法

问题根源

你遇到的编译错误是因为Makefile中命令行的缩进使用了空格而非Tab键,导致make没有执行你写的clang++ -Wall -g -std=c++11 main.cpp命令,而是触发了make的默认C++编译规则,默认执行的命令是:

c++ main.cpp -o main

这个默认命令没有添加-std=c++11参数,编译器会以C98标准编译代码,而auto类型推导、std::async都是C11才引入的特性,因此会出现编译错误和警告。

解决方法

修改你的Makefile,将命令行前的空格替换为Tab键,确保规则内的命令行以Tab开头。同时建议加上-o main参数,让编译输出的可执行文件和make目标名一致,修改后的Makefile如下:

main: main.cpp
	clang++ -Wall -g -std=c++11 main.cpp -o main

(注:上述代码中clang++行开头是Tab,不是空格)

内容的提问来源于stack exchange,提问作者shubhcodegate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 18:45:10