0.8 — A few common C++ problems

In this section, we’ll address some of the common issues that new programmers seem to run across with fairly high probability. This is not meant to be a comprehensive list of compilation or execution problems, but rather a pragmatic list of solutions to very basic issues. If you have any suggestions for other issues that might be added to this list, post them in the comments section below.

General run-time issues

Q: When executing a program, the console window blinks and then closes immediately.

First, add or ensure the following lines are near the top of your program (Visual Studio users, make sure these lines appear after #include “pch.h” or #include “stdafx.h”, if those exist):

Second, add the following code at the end of your main() function (right before the return statement):

This will cause your program to wait for the user to press a key before continuing, which will give you time to examine your program’s output before your operating system closes the console window.

Other solutions, such as the commonly suggested system(“pause”) solution may only work on certain operating systems and should be avoided.

Older versions of Visual Studio may not pause when the program is run in Start With Debugging (F5) mode. Try running in Start Without Debugging (Ctrl-F5) mode.

Q: I ran my program and get a window but no output.

Your virus scanner or anti-malware may be blocking execution. Try disabling it temporarily and see if that’s the issue.

Q: My program compiles but it isn't working correctly. What do I do?

Debug it! There are tips on how to diagnose and debug your programs later in chapter 3.

General compile-time issues

Q: When I compile my program, I get an error about unresolved external symbol _main or [email protected]

This means your compiler can’t find your main() function. All programs must include a main() function.

There are a few things to check:
a) Does your code include a function named main?
b) Is main spelled correctly?
c) When you compile your program, do you see the file that contains function main() get compiled? If not, either move the main() function to one that is, or add the file to your project (see lesson 2.7 -- Programs with multiple code files for more information about how to do this).
d) Did you create a console project? Try creating a new console project.

Q: I'm trying to use C++11/14/17/XX functionality and it doesn't work

If your compiler is old, it may not support these more recent additions to the language. In that case, upgrade your compiler.

For modern IDEs/compilers, your compiler may be defaulting to an older language standard. We cover how to change your language standard in lesson 0.12 -- Configuring your compiler: Choosing a language standard.

Q: When trying to use cin, cout, or endl, the compiler says cin, cout, or endl is an 'undeclared identifier'

First, make sure you have included the following line near the top of your file:

Second, make sure each use of cin, cout, and endl are prefixed by “std::”. For example:

If this doesn’t fix your issue, then it may be that your compiler is out of date, or the install is corrupted. Try reinstalling and/or upgrading to the latest version of your compiler.

Q: When trying to use endl to end a printed line, the compiler says end1 is an 'undeclared identifier'

Make sure you do not mistake the letter l (lower case L) in endl for the number 1. endl is all letters. Make sure your editor is using a font that makes clear the differences between the letter lower case L, upper case i, and the number 1. Also the letter capital o and the number zero can easily be confused in many non-programming fonts.

Visual Studio issues

Q: When compiling with Microsoft Visual C++, you get a C1010 fatal error, with an error message like "c:\vcprojects\test.cpp(263) :fatal error C1010: unexpected end of file while looking for precompiled header directive"

This error occurs when the Microsoft Visual C++ compiler is set to use precompiled headers but one (or more) of your C++ code files does not #include “stdafx.h” or #include “pch.h” as the first line of the code file.

Our suggested fix is to turn off precompiled headers, which we show how to do in lesson 0.7 -- Compiling your first program.

If you would like to keep precompiled headers turned on, to fix this problem, simply locate the file(s) producing the error (in the above error, test.cpp is the culprit), and add the following line at the very top of the file(s):

Older versions of Visual Studio use “stdafx.h” instead of “pch.h”, so if pch.h doesn’t resolve the issue, try stdafx.h.

Note that for programs with multiple files, every C++ code file needs to start with this line.

Alternatively, you can turn off precompiled headers.

Q: Visual Studio gives the following error: "1MSVCRTD.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "int __cdecl invoke_main(void)" ([email protected]@YAHXZ)"

You’ve likely created a Windows graphical application rather than a console application. Recreate your project, and make sure to create it as a Windows (or Win32) Console project.

Q: When I compile my program, I get a warnings about "Cannot find or open the PDB file"

This is a warning, not an error, so it shouldn’t impact your program. However, it is annoying. To fix it, go into the Debug menu -> Options and Settings -> Symbols, and check “Microsoft Symbol Server”.

Something else

Q: I have some other problem that I can't figure out. How can I get an answer quickly?

As you progress through the material, you’ll undoubtedly have questions or run into unexpected problems. What to do next depends on your problem. But in general, there are a few things you can try.

First, ask Google. Find a good way to phrase your question and do a Google search. If you have received an error message, paste the exact message into google using quotes.
Odds are someone has already asked the same question and there is an answer waiting for you.

If that fails, ask on a Q&A board. There are websites designed for programming questions and answers, like Stack Overflow. Try posting your question there. Remember to be thorough about what your problem is, and include all relevant information like what OS you’re on and what IDE you’re using.

0.9 -- Configuring your compiler: Build configurations
0.7 -- Compiling your first program

292 comments to 0.8 — A few common C++ problems

  • Ali Nazari

    Instead of using

    just use getchar() or cin.get() or if you on windows use

    or also you can define a variable and then with

    pause the console.

  • Joseph G

    Progressing with no issues. Loving it...

  • Manuel Calzadillas

    Done whith this lesson
    No issues so far

  • Ankit

    Earlier I've installed codeblocks, today again uninstalled and installed newer version of codeblocks now it is not working hep me out!

    i have added the path to the environment variables but still i failed to execute.

  • Yes, that's too focused article. I came across the same problems months back. After reading this, I started recalling them.

  • fishFAST

    I've been using VisualStudio on windows with no problems. Now I'm trying to use Code::Blocks and the Hello World program does this in the command terminal:

    Process returned 32761 (0x7FF9)   execution time : 1.106 s
    Press any key to continue.
    And google isn't helping.

  • Neko Chan

    I think we can use "using namespace std;" below the "#include<iostream>" instead of using "std::" as a prefix for every usage of cin, cout and endl.

  • Cris

    One thing I've noticed is that this tutorial uses std::
    If you put
    using namespace std;
    at the top of your code

    You won't have to put std:: before everything.

    • Matthew

      I saw the exact same thing, but then after coding for a few weeks (and asking questions), people have been pointing me to this question on Stack Overflow:

      To sum up, its good practice to use it!

    • Sahil

      A namespace is basically like a container that is used to avoid naming conflicts in a program, if you have say a "cout" with some other functionality in another namespace you will not be able to use it in your program since the compiler will always use the "std" version of it if you've used the "using namespace std". This may not matter when you are learning and will save some time but its a bad practice in the long run.

  • kvstaa

    Hello, im usin Visual Studio and the debug show me this

    'HelloWorld.exe' (Win32): 'C:\Users\Lenovo\source\repos\HelloWorld\Debug\HelloWorld.exe' cargado. Símbolos cargados.
    'HelloWorld.exe' (Win32): 'C:\Windows\SysWOW64\ntdll.dll' cargado.
    'HelloWorld.exe' (Win32): 'C:\Windows\SysWOW64\kernel32.dll' cargado.
    'HelloWorld.exe' (Win32): 'C:\Windows\SysWOW64\KernelBase.dll' cargado.
    'HelloWorld.exe' (Win32): 'C:\Windows\SysWOW64\msvcp140d.dll' cargado.
    'HelloWorld.exe' (Win32): 'C:\Windows\SysWOW64\vcruntime140d.dll' cargado.
    'HelloWorld.exe' (Win32): 'C:\Windows\SysWOW64\ucrtbased.dll' cargado.
    'HelloWorld.exe' (Win32): 'C:\Windows\SysWOW64\kernel.appcore.dll' cargado.
    'HelloWorld.exe' (Win32): 'C:\Windows\SysWOW64\msvcrt.dll' cargado.
    'HelloWorld.exe' (Win32): 'C:\Windows\SysWOW64\rpcrt4.dll' cargado.
    El subproceso 0x232c terminó con código 0 (0x0).
    El subproceso 0x2368 terminó con código 0 (0x0).
    El subproceso 0xa50 terminó con código 0 (0x0).
    El programa '[2432] HelloWorld.exe' terminó con código 0 (0x0).

    When i execute the program without the debuggin works fine, but when I open de .exe in the directory the windows opens and inmediatly closes up

  • tibike

    fatal error: array (iostream etc.): No such file or directory
    The above compiler error may be caused by giving .c extension instead of .cpp for your file... :) Worth to mention.

  • Hi, when I compile this code, it gives me error: unused variable 'x' [-Werror=unused-variable]
    Here is the code
    1 #include <iostream>
    3 int main()
    4 {
    5    int x{ 2 + 3 }
    7 return 0;
    8 }

    Someone please help me out
    What can I do?

    • nascardriver

      You have declared a variable `x`, but you're not using it. This doesn't make sense so the compiler is warning you.
      If you use `x`, the warning goes away. For example you can print `x`

  • Ensaen

    When I run the program I  get my directory added to the console that outputs "Hello World!". How do I remove this from future projects?

    here's a screenshot

    thanks btw for the guide! it is very very well done!

  • Phillip

    Thank you for providing such detailed information.

  • mian

    Dear sir,
    how i known about your other website like can i get the list of your all website.
    and knowledge about Artificial intelligence & data structure are necessary for programmer.Is there any website website development or designing like this
    Thanks for this tutorial
    please reply

  • Craig

    Hi everyone!!

    I'm new here. I just registered for BSc in Computer Science with one of the universities here in SA, majoring in Maths & Computer Science. Currently busy with the basics....quiet interesting. But I am honestly clueless on what can I do/create at this level. Or at what level can I be able to create projects using C++

  • Anon

    I wanted to bring up a potential problem Code Blocks users might face when trying to run their executables outside of the IDE.
    The exe it creates in debug build rely on DLL files inside the Code::Blocks MINGW folder, but when running them outside of Code Blocks the DLLs cannot be found.
    The solution is to add the MinGW\Bin to System Path
    C:\Program Files\CodeBlocks\MinGW\bin
    If you need help on how to edit system path you'll have to google that, apparently windows 10 made it easier to do and there are a few dedicated programs to make it less of a hassle.

  • Jose Contreras

    I am using Particle IDE to run the "Hello World" code but when I try to compile the code I receive the same note which is:

    Error: Could not compile. Please review your code
    Thank you for your help.

    • Samoxx

      Hey I'm not very experienced with IDEs but the error seems to be an IDE problem. Solve the problem by trying another IDE. However, I think the author mentioned that you should look up errors online (more specific: thread pages like stack or for your case on particle community). I picked up something for you that might help:
      If that didn't help search for yourself! I'm sure you'll find something, I bet you are not the only one with that problem (Searching for a solution online is just like testing and debugging. Give your error message and modify your search input until you'll get a result that helps you).

  • José

    I followed the guide of the previous versiom when I created my project, and I still get the error LNK2019

  • Ephy

    I would have been memey as all hell and given people the lmgtfy link instead of just telling people to look it up on google.

  • Paulo Filipe

    Hey, I am revisiting this website from scratch after slightly over an year of being here.
    I have now learned Java and built some Android projects as well!!

    I just felt the need to revisit this marvelous website that was my entering point into programming, and to be honest: I MISS POINTERS and operator overloads!!! I miss c++'s complexity!!

    Hello everyone, I am glad to be back!!

    • nascardriver

      Hello again! I'm glad to hear you're still programming :)
      If Android development is something you want to do, but you don't like Java, you can use C++. Have a look at Qt. There's also the NDK, but I never used that so I can't tell you about it.

  • CSS

    FYI if you go to run your program in Code::Blocks in Linux, you'll need to make sure under Settings -> Environment that you have the right Terminal selected for the program to run in. By default in Arch KDE it pulls an error; if you're using the KDE Desktop environment change the drop down to "konsole -e".

    Which terminal you end up using is up to you of course. :)

  • Brennan

    My suggestion for common problems would be a tutorial about #include guards. When beginning, I wasted countless hours chasing out linking/naming errors before I finally figured out what include guards were.

  • Vitaliy Sh.

    "Debug it! There are tips on how to diagnose and debug your programs later in chapter 1 or 2."

    "in chapter 3" (Debugging C++ Programs)?

  • Vitaliy Sh.

    here: "... before your operating system closes the console window."

    0.7:    "before your IDE"

  • Vitaliy Sh.


    0.7:  "// .. we find a newline" (but no word "character")

  • Vitaliy Sh.

    here:  "Second, add the following code at the end of your main() function (right before the return statement):"

    0.7:    Second, add the following code at the end of the main() function (just before the return statement):

    here:   "(right ...",     "your main()"
    0.7:      "(just ..." ,  "the main()"
    "... before the return statement)"

  • Vitaliy Sh.

    "(Visual Studio users, make sure these appear after ..."

    Redundancy in 0.7?
    In 0.7 there is word "lines" after "these":

    "First, add or ensure the following lines are near the top of your program (Visual Studio users, make sure these lines appear after #include "pch.h" or #include "stdafx.h", if those exist):"

  • Vitaliy Sh.

    "Try running in Start Without Debugging (ctrl-F5) mode."

    As your requested: no capitalization in "ctrl".

  • Vitaliy Sh.

    <a href="">Stack Overflow</a>

    Can your, please, change to https (redirects to it anyway)?

Leave a Comment

Put all code inside code tags: [code]your code here[/code]