Задать вопрос
@davidskyborn

Как обновить с++ на мак?

доброго дня всем. у меня macbook pro m2 (ios sonoma), использую visual studio code, учусь писать на с++. не получается писать некоторые функции и циклы на с++, выдается ошибка, указывающая на то, что у меня версия компилятора 98го года. запускаю в vs code код с проверкой:

int main() {
if (__cplusplus == 202002L) std::cout << "C++20\n";
else if (__cplusplus == 201703L) std::cout << "C++17\n";
else if (__cplusplus == 201402L) std::cout << "C++14\n";
else if (__cplusplus == 201103L) std::cout << "C++11\n";
else if (__cplusplus == 199711L) std::cout << "C++98\n";
else std::cout << "pre-standard C++\n";
}

на выходе получается ответ - "C++98"

проверяю расширение с++ внутри vs code - указано что компилятор последней версии, с++ 23.
проверки терминале самого мака тоже указывают на последнюю версию языка.

как быть?
не работают простейшие вещи типа range based for, которые видимо в языке появились уже после 98го года, но без них очень неудобно учиться.

спасибо
  • Вопрос задан
  • 292 просмотра
Подписаться 1 Простой 7 комментариев
Пригласить эксперта
Ответы на вопрос 2
TrueBers
@TrueBers
Гуглю за еду
Нажми Cmd+Shift+P.
Там напиши c++ edit config, выбери пункт C/C++: Edit Configurations (UI).
Там внизу найди C++ standard и выбери c++23.
Ответ написан
@codecity
Там дело в том что - может быть установлено несколько разных версий clang. К примеру, я установил через brew (при этом при установке XCode - уже был установлен другой clang - более старый). И чтобы это использовать с CMake в VS Code - нужно в tasks.json написать:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "CMake Build",
            "type": "shell",
            "command": "cmake",
            "args": [
                "--build",
                "build"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        },
        {
            "label": "CMake Configure",
            "type": "shell",
            "command": "cmake",
            "args": [
                "-S",
                ".",
                "-B",
                "build",
                "-DCMAKE_C_COMPILER=/opt/homebrew/opt/llvm/bin/clang",
                "-DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm/bin/clang++"
            ],
            "group": "build",
            "problemMatcher": []
        }
    ]
}


Это я вам скопировал то что 100% у меня работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы