Професионална програма
Loading...
+ Нов въпрос
RaUndreundre avatar RaUndreundre 52 Точки

Visual Studio Code със стандарт C++11

Здравейте,
За целите на курса C++ Advanced, по препоръка на лектора, трябва да си настроя IDE-то на C++11 за да е съвместимо с джъдж (за да не ме боли главата, както каза той :-D ).
Утрепах няколко часа в четене и проби - не ще и не ще. - все си стои на C++14.
Някой да е минавал през тази мизерия за VSCode?

Тагове:
0
C++ Advanced
j.petrov_90 avatar j.petrov_90 327 Точки

Привет,
Не ползвам Visual Studio Code, но намерих това:
https://code.visualstudio.com/docs/cpp/config-msvc

Иди на секцията C/C++ configurations

This opens the C/C++ Configurations page. When you make changes here, VS Code writes them to a file called c_cpp_properties.json in the .vscode folder.

Папките, които започват с точка обикновенно са скрити за file exporer-a, освен, ако не му дадеш да показна скрити файлове и папки.

Visual Studio Code places these settings in .vscode\c_cpp_properties.json. If you open that file directly, it should look something like this:
Предполагам, ако смениш cppStandard: "c++17" на c++11 би следвало да сработи.

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": ["${workspaceFolder}/**"],
      "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
      "windowsSdkVersion": "10.0.18362.0",
      "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "intelliSenseMode": "msvc-x64"
    }
  ],
  "version": 4
}
0
RaUndreundre avatar RaUndreundre 52 Точки

Благодаря за отдленото време. За съжаление това не сработва при мен. Някъде го държи това 14 и туй си е.
Ще го мъча като намеря време а за сега ще имам едно наум за джъджа.
За проверка на стандарта ползвам следния код и си мисля че би трябвало да е правилен.

#include<iostream>
int main() {
   if (__cplusplus == 201703L)
      std::cout << "C++17" << std::endl;
   else if (__cplusplus == 201402L)
      std::cout << "C++14" << std::endl;
   else if (__cplusplus == 201103L)
      std::cout << "C++11" << std::endl;
   else if (__cplusplus == 199711L)
      std::cout << "C++98" << std::endl;
   else
      std::cout << "pre-standard C++" << std::endl;
}

 

0
Smeshan avatar Smeshan 73 Точки

Привет,
при мен с този код за проверка винаги изписва C++98 :? независимо дали слагам 14 или 17?
Иначе изобщо нямам такъв файл в c_cpp_properties.json в .vscode дори след като направя промени уж да се запишат там.

Аз нещо съм изпуснал, но какво трябва да се внимава с джъдж ако не е настроен на с++11?

Поздрави,
Илиян

0
04/06/2021 18:16:04
Axiomatik avatar Axiomatik 1518 Точки

StackOverflow => https://stackoverflow.com/questions/53995830/compiling-c11-in-visual-studio-code

Go to Settings > User Settings In here, search for Run Code Configuration:

Under this menu, find: "code-runner.executorMap"

Edit this Setting by adding it to User Setting as below for C++11 support:

"code-runner.executorMap":{
    "cpp": "cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
},


OR

Edit this Setting by adding it to User Setting as below for C++17 support:

"code-runner.executorMap":{
    "cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
},

 

0
nikant avatar nikant 2 Точки

И за мен това се появява, като проблем от време на време - във VS работи, в Judge обикновено компилатора дава грешка.

Засега съм решил въпроса, като тествам кода в Code Blocks. Там не знам как да проверя на каква версия е С++, но засега на 100% дава идентични резултати, като в Judge.

Във VS не е нужно да му задавам #include<algorithm>, в Judge компилатора дава  грешка и от Code Blocks разбрах какъв е проблема.

Функцията accumulate за вектори в единия компилатор е в <algorithm>, в другия е в <numeric>

Засега това съм установил, като разлика или поне не се сещам за нещо друго.

1
06/06/2021 12:21:49