Search

Enter your search terms

Submit search form

0.7 — A few common C++ problems

By Alex on December 16th, 2007 | last modified by Alex on February 5th, 2018

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.

Problem 1: When executing a program from the IDE, the console window blinks and then closes immediately.

Answer 1: Some compilers (eg. Bloodshed’s Dev C++) don’t automatically pause the console screen after the program has finished executing. If this is the case with your compiler, the following two steps will fix your problem:

First, add the following line near the top of your program:

1

#include <iostream>

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

1

2

3

std::cin.clear();// reset any error flags

std::cin.ignore(32767,'\n');// ignore any characters in the input buffer until we find an enter character

std::cin.get();// get one more char from the user

This will cause your program to wait for you to press a key before continuing, which will give you time to examine your program’s output before your compiler 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.

Note: Visual Studio will not pause at the end of a console application if it is run with debugging (Debug Menu->Start Debugging). If you want it to pause, you can either use the code solution above, or run your program without debugging (Debug Menu->Start Without Debugging).

Problem 2a: When compiling with Microsoft Visual C++, you get the following error: “c:vcprojectstest.cpp(263) :fatal error C1010: unexpected end of file while looking for precompiled header directive”
Problem 2b: When compiling with Microsoft Visual C++, your program produces compile errors, but your program doesn’t look incorrect.

Answer 2: This occurs when the Microsoft Visual C++ compiler is set to use precompiled headers (which it is by default) but one (or more) of your C++ code files does not #include the stdafx.h header as the first line. To fix this problem, simply locate the file(s) producing the error (in the above error, test.cpp is the culprit), and ensure the following line is at the very top of the file(s):

1

#include "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.

Problem 3: When trying to use cin, cout, or endl, the compiler says cin, cout, or endl is an “undeclared identifier”

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

1

#include <iostream>

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

1

std::cout<<"Hello world!"<<std::endl;

Problem 4: When trying to use endl to end a printed line, the compiler says end1 is an “undeclared identifier”

Answer 4: Make sure you do not mistake the letter l (lower case L) in endl for the number 1. endl is all letters. I recommend using a font that makes it 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.

Problem 5: My program compiles but it isn’t working correctly. What do I do?

There are a few things to check:
a) Does your code include a function named main?
b) Is main spelled correctly?
c) Is the file containing main part of your project? (if not, either move the main function to one that is, or add the file to your project. See lesson 1.8 -- Programs with multiple files for more information about how to do this).
d) Is the file containing function main set to compile? (Also see lesson 1.8 -- Programs with multiple files for more information about how to do this).

Problem 9: When I compile my program, I get a warning about “Cannot find or open the PDB file”

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

Problem 10: I’m using Code::Blocks or g++ on the command line, and none of the C++11 functionality works

Answer 11: Most likely you’ve created the wrong type of project. Make sure you’re creating a Win32 Console Application, not a Win32 Project.

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

Answer 12: Your virus scanner may be blocking execution. Try disabling it temporarily and see if that’s the issue.

Problem 13: I can’t get C++11, C++14, or C++17 functionality to work with my compiler.

Answer 13: If your compiler is old, it may not support these more recent additions to the language. Best thing to do is update your compiler. Alternatively, you can try seeing if your compiler has support for these but has it turned off by default. For GCC/G++, you can try passing compiler flags -std=c++11, -std=c++14, or -std=c++17. For Code::Blocks, make sure the appropriate global compiler setting is set. We show how to do that in lesson 0.5 -- Installing an Integrated Development Environment (IDE).

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.

Error C2676 binary '>>': 'std::basic_ostream<char,std::char_traits<char>>' does not define this operator or a conversion to a type acceptable to the predefined operator test c:\users\medion\source\repos\test\test\source.cpp 5

Alex did you get this info from any books or websites, or did you learn it yourself then type it out? This is very impressive. I am creating a Word document for all of these lessons. If you give me your email i can give it to you. But for now i want to focus on this question.