VS Code 修改 C++ 标准同时修改错误检测标准

修改C++标准基于使用Code Running拓展

可以看我上一章文章

VS Code 整洁的打印内容到终端https://blog.csdn.net/2301_76542477/article/details/161060041?sharetype=blogdetail&sharerId=161060041&sharerefer=PC&sharesource=2301_76542477&spm=1011.2480.3001.8118

打开用户设置文件,只需要为编译命令添加上执行的C++版本即可
-std=C++23

复制代码
"cpp": " Clear-Host; Set-Location $dir; $exe = \"$fileNameWithoutExt.exe\"; g++ \"$fileName\" -std=c++23 -o $exe; if ($?) { & .\\$exe }",

当你修改完以后你的程序就能正常编译,但是VS Code的红线依然存在

我们还需要修改IntelliSense

按Ctrl + Shift + P 输入命令:C/C++: Log Diagnostics

往上找到Standard Version查看当前使用的标准

当前使用的是C++17这和设置的不一样

打开用户设置添加如下

复制代码
"C_Cpp.default.cppStandard": "c++23",

保存后即可完成修改

完成修改后再次检查一下

没问题即可

错误检查就正常了

最后给个代码试试看,下面的代码是需要C++20,默认的VS Code是运行不了的

如果你配置完后能正常运行并且没有小红线就表示你成功了!

复制代码
#include <iostream>
#include <initializer_list>
#include <stdexcept>
using namespace std;

template <typename T, typename U>
concept Addable = requires(T a, U b) {
    a + b;
};

template <typename T>
concept type = !std::is_same_v<T, float>;  // 排除 float 类型

template <typename T>
requires type<T>
class MyArray {
private:
    T* data;
    size_t size;

public:
    MyArray(size_t n) {
        size = n;
        data = new T[n]{};
    }

    MyArray(initializer_list<T> list) {
        size = list.size();
        data = new T[size];

        size_t i = 0;
        for (auto& val : list) {
            data[i++] = val;
        }
    }

    ~MyArray() {
        delete[] data;
    }

    MyArray(const MyArray& other) {
        size = other.size;
        data = new T[size]{};
        for (size_t i = 0; i < size; i++) {
            data[i] = other.data[i];
        }
    }

    MyArray& operator=(MyArray other) {
        swap(data, other.data);
        swap(size, other.size);
        return *this;
    }

    T& operator[](size_t index) {
        return data[index];
    }

    const T& operator[](size_t index) const {
        return data[index];
    }

    size_t getSize() const {
        return size;
    }
};

template<typename T, typename U>
requires Addable<T, U>
auto operator+(const MyArray<T>& left, const MyArray<U>& right) {
    using ResultType = decltype(left[0] + right[0]);

    size_t n = (left.getSize() < right.getSize()) ? left.getSize() : right.getSize();

    MyArray<ResultType> temp(n);

    for (size_t i = 0; i < n; i++) {
        temp[i] = left[i] + right[i];
    }

    return temp;
}

template<typename T>
ostream& operator<<(ostream& os, const MyArray<T>& arr) {
    os << "[";
    for (size_t i = 0; i < arr.getSize(); i++) {
        os << arr[i];
        if (i + 1 < arr.getSize()) {
            os << ", ";
        }
    }
    os << "]";
    return os;
}

int main() {
    MyArray<int> a = {1, 2, 3};

    cout << "a = " << a << endl;

    return 0;
}
相关推荐
hsg7713 分钟前
简述:Rust、GeoRust、自主研发GIS平台
开发语言·后端·rust
承渊政道24 分钟前
飞算Java炫技赛:Java×Unity数字孪生园区平台的从零落地记录
java·开发语言·unity·技术分享·vibe coding·飞算javaai·飞算java ai炫技赛
不负岁月无痕27 分钟前
STL --C++哈希表封装unordered_map/set
c++·visualstudio·哈希算法·散列表·unordered
wdfk_prog6 小时前
嵌入式面试真题第 10 题:高优化等级下共享状态可见性、内存模型与系统级同步设计
java·linux·开发语言·面试·职场和发展·架构·c
卓怡学长7 小时前
w255基于springboot仓库管理系统
java·数据库·spring boot·spring·intellij-idea
x-cmd8 小时前
Mac 涨价后,本地 AI 还能千元入门吗?
linux·人工智能·macos·ai·agent·amd·本地ai入门
闻道且行之9 小时前
TurboOCR:基于PP-OCRv6的极速Windows离线OCR工具,深度解析3.4GB依赖背后的技术架构
c++·人工智能·python·qt·机器学习·ocr
这个DBA有点耶9 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
kyriewen10 小时前
AI 写的 React 组件,合并前必查的 6 个坏味道——每个都有代码对比
前端·javascript·react.js
许彰午10 小时前
95_Python内存管理与垃圾回收
开发语言·python