Getting weird error using g++ compiler [duplicate] - c++

This question already has answers here:
Compilation error: stray ‘\302’ in program, etc
(12 answers)
Closed 8 years ago.
When I try to compile my code using g++ in terminal, I get an error:
Decoder.cpp:32:1: fout: stray ‘\302’ in program
Decoder.cpp:32:1: fout: stray ‘\262’ in program
Decoder is a class that decodes lines from an inputfile. I have no idea what these errors can be. When I look on the internet, they say it has something to do with whitespaces. No clue why! I used to write empty spaces to an output file: like this out << " ";. But I never got an error untill now.
So I went to eclipse, and my code runs fine. Back to g++ and I get the same error. Any idea why?

You've somehow ended up with a non-ASCII character (Unicode "superscript two") in line 32 of your source. Delete that character, replace it with whatever is supposed to be there (a normal 2, perhaps? or maybe nothing?), and be careful where you copy and paste code from.

There could be invisible control character on line 32. Please rewrite the complete line. That should fix your compilation issue.
You may as well refer: https://stackoverflow.com/a/6572148/815812

Related

4 same unhelpful errors for every error I receive in c++

I am using spdlog, opengl, glad, and glfw in my project. No matter what error I am receiving, it is ALWAYS preceded by the 4 same errors. For example, let's say I have the following code:
std::cout << "sup";
then it will run perfectly. Okay now, let's say I have a typo and I do this:
std:cout<< "sup";
I get the following errors:
Here are the first 2 errors.. they redirect to FMT core.h file
and then the last two redirect to FMT format.h
Does anyone know why this could be happening? it is not made or break, whenever I have an error and I fix it these go away but it's just annoying and I would like to understand why.
It looks as though this PR will fix your issue?
https://github.com/fmtlib/fmt/pull/1279
Maybe just update fmt to the latest version?

Trouble with sum.ml from Real World Ocaml

I'm currently working my way through Real World Ocaml and I got stuck running the OCaml "corebuild" compiled version of sum.ml:
$ ./sum.native
1
2
3
Uncaught exception:
(Invalid_argument "Float.of_string ")
Raised at file "pervasives.ml", line 31, characters 25-45
Called from file "sum.ml", line 7, characters 44-61
Called from file "sum.ml", line 10, characters 24-46
What am I doing wrong?
Thank you!
When I try to recreate your reported error, I don't see it. Things work fine and I get the answer of 6.0. Possibly I'm using a different version of Core.
Update
The problem occurs if you type an extra newline after the last number. Float.of_string fails when the input string is empty. I think that's what you're seeing because there is an empty line between the last number and the error report. If you type ^D to terminate the input, there's no empty line.

Gnu debugger can't remove variable from display? [duplicate]

This question already has answers here:
GDB: How to remove a variable from the auto display
(2 answers)
Closed 5 years ago.
I am working on a c++ program on linux ubuntu 16.04 and I've done a tutorial on gnu debugger.
I am having some problems with my code and as I step through it it's easier for me to compare two variables at each part fullPath and argv[1]
But once I get past that particular segment I want to remove argv[1].
I called them with the following:
display argv[1]
display fullPath
But when I try to remove argv[1] with undisplay argv[1] I get an error that reads the following:
warning: bad display number at or near 'argv[1]'
It still continues to display argv[1] unless I exit debugger and start it again without displaying it. Is there a way to fix this?
NOTE
I've also tried delete argv[1] which also doesn't work.
The undisplay command is expecting a list number, not an expression. You can see the list numbers for all your auto-display expressions by typing:
info display
Let's say that argv[1] is assigned item 3 in that list. You would then remove it with:
undisplay 3

How can I insert an input in sublime compiler [duplicate]

This question already has answers here:
Sublime Text with console input for c++ programs
(2 answers)
Closed 8 years ago.
I started to use sublime text 2 editor today to write c/c++ programs, but when I run this code
#include <cstdio>
int main(){
int n;
scanf("%d",&n);
printf("%d\n",n);
return 0;
}
I am expecting the compiler to ask for an input.
but instead, it just prints the initial value of (n) which is garbage.
How can i insert an input ?
I suppose what you want to do is input data in the same panel where Sublime Text show results, well friend, you can't.
The only thing you can do is configure Sublime Text for running the compiled program in an external terminal. The link chris provide you is a good start.
On the other hand when you say: expecting the compiler to ask for an input, is a conceptual error. The compiler is not whom is expecting the input. The input is being expected by the compiled program.

"No newline at end of file" warning, even after putting in a newline [closed]

This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.
Closed 10 years ago.
I've been trying to learn C++ lately, and all has been going well until today. I'm trying to make a very simple application that basically just asks a user for a number and then displays the factorial of that number.
When I try to compile the file in Cygwin (g++ factorial.cpp -o fact), I get the following warning "warning: no newline at end of file". Following the words of the warning, I added a newline at the end of the file and tried it again...with the exact same result. Whether I try one newline or twenty, it never seems to compile.
I attached the simple, and still unfinished, file below (Except imagine there is a blank line at the end of it. This noob can't get it show up in code view):
#include <iostream>
#include <string>
using namespace std;
int getInput();
void displayFactorial(int);
int main()
{
int number = getInput();
displayFactorial(number);
return 0;
}
int getInput()
{
int userNumber;
bool okNumber;
while(okNumber == false){
cout << "Please eneter a number in the range of 1-10";
cin >> userNumber;
if(userNumber >= 1 and userNumber <=10){
okNumber = true;
}
else{
cout << "Incorrect number" << endl;
}
}
return userNumber;
}
void displayFactorial(int number){
string displayString = number + "! =";
int total;
for(int i = 0; i<=number; i++){
//displayString += "
}
cout << displayString;
}
// File ended the line above this (with a new line. This line added by Martin so it shows)
Any idea what could cause that warning if it's not the newline?
First of all a warning does not prevent a program from compiling.
Second: Are you sure you compile the file you are editing?
I held some tutorials at my university and most of the beginners made this mistake.
If you can definitely say you are compiling the file you are editing, then it could be caused by different new line settings but I consider this highly improbable.
Which editor/IDE do you use?
All you have to do is wait for the new C++0x standard. A newline is no longer required at the end of the source file. (And this took 40 years?)
Most Unix-based text editors will add a trailing newline automatically, but apparently
Notepad++ (which I've never used) doesn't.
The file doesn't need to end with a blank line (which would be represented as two newline
characters in a row), just a properly terminated one.
See if Notepad++ has a configuration option that tells it to automatically append a newline
when saving a file, or at least to ask whether you want to add one.
Great explanation - I had the same problem and solved it simply by using WordPad instead of Notepad :)
The problem has nothing to do with your C++ code; I can almost guarantee you that the uninitialized boolean in your program didn't cause the issue. It's a problem with the source file itself. A "Hello, world" program would have produced the same warning.
A text file, including a C++ source file, consists of lines of characters, where each line is terminated by an end-of-line marker. In Unix, and therefore in Cygwin (with the default settings), the end-of-line marker is a single '\n' (newline, linefeed) character. (Windows uses CR-LF pair ("\r\n").
It's possible for the very last line of a text file not to end with a newline character, but g++ prefers it to be terminated properly.
Most Unix-based text editors will add a trailing newline automatically, but apparently Notepad++ (which I've never used) doesn't.
The file doesn't need to end with a blank line (which would be represented as two newline characters in a row), just a properly terminated one.
See if Notepad++ has a configuration option that tells it to automatically append a newline when saving a file, or at least to ask whether you want to add one.
(The missing newline at the end of the file is probably what caused your problems pasting the code when you posted the question.)
Maybe it is some problem with some invisible character? I copy-paste your code and gets compiled without any warnings/errors, under Cygwin with the following g++:
$ g++ --version
g++ (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
It ended up that not initializing a boolean variable to false was the issue. However, I'm not sure whether it was actually the initialization that was the problem, or just the fact that the text editor might not actually save a file if you just append whitespace to the end of it. For those wondering, this was happening to me in Notepad++.