C/C++ support for Visual Studio Code is provided by a Microsoft C/C++ extension to enable cross-platform C and C++ development on Windows, Linux, and macOS.
An operator is a symbol that operates on a value or a variable. For example: + is an operator to perform addition. In this tutorial, you will learn about different C operators such as arithmetic, increment, assignment, relational, logical, etc. With the help of examples. Using the CUDA Toolkit you can accelerate your C or C applications by updating the computationally intensive portions of your code to run on GPUs. To accelerate your applications, you can call functions from drop-in libraries as well as develop custom applications using languages including C, C, Fortran and Python. C is a compiled language meaning your program's source code must be translated (compiled) before it can be run on your computer. VS Code is first and foremost an editor, and relies on command-line tools to do much of the development workflow. The C/C extension does not include a C compiler or debugger.
Install the extension
- Open VS Code.
- Select the Extensions view icon on the Activity bar or use the keyboard shortcut (⇧⌘X (Windows, Linux Ctrl+Shift+X)).
- Search for
'C++'
. - Select Install.
After you install the extension, when you open or create a *.cpp
file, you will have syntax highlighting (colorization), smart completions and hovers (IntelliSense), and error checking.
Install a compiler
C++ is a compiled language meaning your program's source code must be translated (compiled) before it can be run on your computer. VS Code is first and foremost an editor, and relies on command-line tools to do much of the development workflow. The C/C++ extension does not include a C++ compiler or debugger. You will need to install these tools or use those already installed on your computer.
There may already be a C++ compiler and debugger provided by your academic or work development environment. Check with your instructors or colleagues for guidance on installing the recommended C++ toolset (compiler, debugger, project system, linter).
Some platforms, such as Linux or macOS, have a C++ compiler already installed. Most Linux distributions have the GNU Compiler Collection (GCC) installed and macOS users can get the Clang tools with Xcode.
Check if you have a compiler installed
Make sure your compiler executable is in your platform path (%PATH
on Windows, $PATH
on Linux and macOS) so that the C/C++ extension can find it. You can check availability of your C++ tools by opening the Integrated Terminal (⌃` (Windows, Linux Ctrl+`)) in VS Code and trying to directly run the compiler.
Checking for the GCC compiler g++
:
Checking for the Clang compiler clang
:
Note: If you would prefer a full Integrated Development Environment (IDE), with built-in compilation, debugging, and project templates (File > New Project), there are many options available, such as the Visual Studio Community edition.
If you don't have a compiler installed, in the example below, we describe how to install the Minimalist GNU for Windows (MinGW) C++ tools (compiler and debugger). MinGW is a popular, free toolset for Windows. If you are running VS Code on another platform, you can read the C++ tutorials, which cover C++ configurations for Linux and macOS.
Example: Install MinGW-x64
We will install Mingw-w64 via MSYS2, which provides up-to-date native builds of GCC, Mingw-w64, and other helpful C++ tools and libraries. Click here to download the MSYS2 installer. Then follow the instructions on the MSYS2 website to install Mingw-w64.
Add the MinGW compiler to your path
Add the path to your Mingw-w64 bin
folder to the Windows PATH
environment variable by using the following steps:
Using Context Clues
- In the Windows search bar, type 'settings' to open your Windows Settings.
- Search for Edit environment variables for your account.
- Choose the
Path
variable and then select Edit. - Select New and add the Mingw-w64 destination folder path, with
mingw64bin
appended, to the system path. The exact path depends on which version of Mingw-w64 you have installed and where you installed it. If you used the settings above to install Mingw-w64, then add this to the path:C:msys64mingw64bin
. - Select OK to save the updated PATH. You will need to reopen any console windows for the new PATH location to be available.
Check your MinGW installation
To check that your Mingw-w64 tools are correctly installed and available, open a new Command Prompt and type:
If you don't see the expected output or g++
or gdb
is not a recognized command, make sure your PATH entry matches the Mingw-w64 binary location where the compiler tools are located.
Hello World
To make sure the compiler is installed and configured correctly, we'll create the simplest Hello World C++ program.
Create a folder called 'HelloWorld' and open VS Code in that folder (code .
opens VS Code in the current folder):
Now create a new file called helloworld.cpp
with the New File button in the File Explorer or File > New File command.
Add Hello World source code
Now paste in this source code:
Now press ⌘S (Windows, Linux Ctrl+S) to save the file. You can also enable Auto Save to automatically save your file changes, by checking Auto Save in the main File menu.
Build Hello World
Now that we have a simple C++ program, let's build it. Select the Terminal > Run Build Task command (⇧⌘B (Windows, Linux Ctrl+Shift+B)) from the main menu.
This will display a dropdown with various compiler task options. If you are using a GCC toolset like MinGW, you would choose C/C++: g++.exe build active file.
This will compile helloworld.cpp
and create an executable file called helloworld.exe
, which will appear in the File Explorer.
Run Hello World
From a command prompt or a new VS Code Integrated Terminal, you can now run your program by typing '.helloworld'.
If everything is set up correctly, you should see the output 'Hello World'.
This has been a very simple example to help you get started with C++ development in VS Code. The next step is to try one of the tutorials listed below on your platform (Windows, Linux, or macOS) with your preferred toolset (GCC, Clang, Microsoft C++) and learn more about the Microsoft C/C++ extension's language features such as IntelliSense, code navigation, build configuration, and debugging.
Tutorials
Get started with C++ and VS Code with tutorials for your environment:
Documentation
You can find more documentation on using the Microsoft C/C++ extension under the C++ section of the VS Code website, where you'll find topics on:
Remote Development
VS Code and the C++ extension support Remote Development allowing you to work over SSH on a remote machine or VM, inside a Docker container, or in the Windows Subsystem for Linux (WSL).
To install support for Remote Development:
- Install the VS Code Remote Development Extension Pack.
- If the remote source files are hosted in WSL, use the Remote - WSL extension.
- If you are connecting to a remote machine with SSH, use the Remote - SSH extension.
- If the remote source files are hosted in a container (for example, Docker), use the Remote - Containers extension.
Using Chitubox
Feedback
If you run into any issues or have suggestions for the Microsoft C/C++ extension, please file issues and suggestions on GitHub. If you haven't already provided feedback, please take this quick survey to help shape this extension for your needs.
Perhaps you would like to have a function that will accept any number ofvalues and then return the average. You don't know how many arguments will bepassed in to the function. One way you could make the function would be toaccept a pointer to an array. Another way would be to write a function thatcan take any number of arguments. So you could write avg(4, 12.2, 23.3, 33.3,12.1); or you could write avg(2, 2.3, 34.4); The advantage of this approach isthat it's much easier to change the code if you want to change the number ofarguments. Indeed, some library functions can accept a variable list ofarguments (such as printf--I bet you've been wondering how that works!).Whenever a function isdeclared to have an indeterminate number of arguments, in place of the lastargument you should place an ellipsis (which looks like '...'), so, inta_function ( int x, ... ); would tell the compiler the function should accepthowever many arguments that the programmer uses, as long as it is equal to atleast one, the one being the first, x.
We'll need to use some macros (which work much like functions, and you cantreat them as such) from the stdarg.h header file to extract the values storedin the variable argument list--va_start, which initializes the list, va_arg,which returns the next argument in the list, and va_end, which cleans up thevariable argument list.
To use these functions, we need a variable capable of storing avariable-length argument list--this variable will be of type va_list. va_listis like any other type. For example, the following code declares a list thatcan be used to store a variable number of arguments. va_start is a macro which accepts two arguments, a va_list and the name of thevariable that directly precedes the ellipsis ('...'). So in the functiona_function, to initialize a_list with va_start, you would write va_start (a_list, x ); va_arg takes a va_list and a variable type, and returns the next argument inthe list in the form of whatever variable type it is told. It then moves downthe list to the next argument. For example, va_arg ( a_list, double ) willreturn the next argument, assuming it exists, in the form of a double. Thenext time it is called, it will return the argument following the lastreturned number, if one exists. Note that you need to know the type of eachargument--that's part of why printf requires a format string! Once you'redone, use va_end to clean up the list: va_end( a_list );
Using Colons
To show how each of the parts works, take an example function: It isn't necessarily a good idea to use a variable argument list at all times;the potential exists for assuming a value is of one type, while it isin fact another, such as a null pointer being assumed to be an integer.Consequently, variable argument lists should be used sparingly.Previous: Recursion