蓝桥ROS机器人之现代C++学习笔记支持C++17(未完成)

本文讲述了在Ubuntu 16.04系统中遇到的困难,即如何正确配置和安装C++17版本的clang++,并解决因版本差异导致的编译问题,包括C++14标准头文件路径和GLIBCXX_3.4.22版本冲突。

参考链接:

askubuntu.com/questions/1113974/using-c17-with-clang-on-ubuntu-16-04

mirror.linux-ia64.org/gnu/gcc/releases/


在 Ubuntu 16.04 上使用 C++17 和 clang++

我一辈子都想不出如何让 C++17 在 Ubuntu 16.04 上运行。

这适用于 Ubuntu 18.04:

sudo apt-get update
sudo apt-get install clang-6.0
它将 C++17 标准库头文件安装在/usr/include/c++/7. 但是,当我在 Ubuntu 16.04 中运行相同的命令时,我会在 中获得 C++14 标头/usr/include/c++/5,并且 C++17 功能将无法编译。

我也尝试按照此安装clang-7,但这导致了以下错误: clang: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.22' not found (required by clang)

抱歉,如果这是一个愚蠢的问题;我对这些东西很陌生,可能缺少一些明显的东西。

16.04
C++


最高分(默认)

4

+50
我遵循了同一篇文章,但几乎没有变化:

ldconfig设置后执行LD_LIBRARY_PATH。
将网址中的“18.04”更改为“16.04”。
安装是:

apt install build-essential xz-utils curl
curl -SL http://releases.llvm.org/7.0.1/clang+llvm-7.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz | tar -xJC .
cp -r clang+llvm-7.0.1-x86_64-linux-gnu-ubuntu-16.04/ /usr/local/clang-7.0.1
export LD_LIBRARY_PATH=/usr/local/clang-7.0.1/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/clang-7.0.1/bin:$PATH
ldconfig
然后创建if_test.cpp:

#include <iostream>

int main() {
    // if block with init-statement:
    if(int a = 5; a < 8) {
        std::cout << "Local variable a is < 8\n";
    } else {
        std::cout << "Local variable a is >= 8\n";
    }
    return 0;
}
源代码按以下指令编译:

clang++ -std=c++17 -stdlib=libc++ -Wall -pedantic if_test.cpp -o if_test
执行目标文件将给出正确的输出:

# ./if_test
Local variable a is < 8
 

### 获取蓝桥等考C++组别17级历年真题的途径 蓝桥等考C++组别17级的历年真题是备考过程中不可或缺的资源,通过练习真题可以更好地理解考试难度、题型分布以及常见解题思路。虽然官方并未公开大规模的真题下载渠道,但可以通过以下方式获取相关资源: - **蓝桥杯官网**:蓝桥杯竞赛官网提供了部分往届真题和样题,例如“特别数的和”等编程大题可以在官网或其配套练习平台中找到[^1]。建议注册账号并参与其在线训练营或模拟赛,以获取更多练习机会。 - **牛客网(NowCoder)**:牛客网设有蓝桥杯专题板块,其中包含了历届真题的重现与在线练习功能,支持C++语言提交并提供详细的题解和测试用例反馈。 - **蓝桥杯官方出版物**:蓝桥杯组委会曾出版过《蓝桥杯竞赛真题解析》系列书籍,其中涵盖了包括17级在内的多个组别的真题与详解,可通过正规图书平台购买[^1]。 - **GitHub与技术博客**:一些参赛选手或教练会在GitHub上分享历年真题的解题代码和思路分析,例如搜索“lanqiao 17级 真题”可以找到开源项目和题解资源。 - **培训机构与高校资源**:部分高校或编程培训机构会整理蓝桥杯历年真题作为教学资料,若为在校学生,可向指导老师或课程助教咨询是否有相关资源可供下载。 ### 示例代码:特别数的和(编程大题) 以下是一个典型的蓝桥杯编程大题“特别数的和”的C++实现: ```cpp #include <iostream> #include <string> using namespace std; bool contains(string s, char c) { return s.find(c) != string::npos; } int main() { long long n; cin >> n; long long sum = 0; for (long long i = 1; i <= n; ++i) { string num = to_string(i); if (contains(num, '2') || contains(num, '0') || contains(num, '1') || contains(num, '9')) { sum += i; } } cout << sum << endl; return 0; } ``` 该题要求统计1到n中包含数字2、0、1、9的自然数的总和,适用于蓝桥C++组别中等难度的编程大题练习。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值