-
November 25th, 2003, 12:36 AM
#1
Member
simple little C++ program not working....
Ive been able to get this working in Windows, but once i go into Linux, it doesnt work =/.
#include <iostream.h>
void main(void)
{
char first_name[64];
char last_name[64];
cout << "Type your first and last name: ";
cin >> first_name >> last_name;
cout << "Hey, " << first_name << " " << last_name;
}
Thats what I have, straight out of the book, It works in windows, but when i do $gcc name name.cpp
it says this
In file included from /usr/include/g++/backward/iostream.h:31,
from name.cpp:1:
/usr/include/g++/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.
name.cpp:5: error: `main' must return `int'
And i saw the main must return int, so i did return 0; after my last cout statement, but it still did nothing, are there different ways to write C++ in windows/linux? What am i doing wrong?!? >.<
thanks guys!
What do you get when you cross a nun and a penguin?
An operating system that won\'t go down on you.
-
November 25th, 2003, 01:52 AM
#2
I'm by no means a c++ coder.. but what the error is telling you is that your #include <iostream.h> line is wrong.... the new way of doing things is #include <iostream>
If you would like to prove this you could look in /usr/include/c++/<version>/ and you will see iostream but no iostream.h. I believe you will probably also have to include the line using namespace std; to code this properly .. however I'm not entirely sure on that one. just the way I understand it.. There are many skilled c++ coders.. check the tutorials forum and you'll see the basics of how to code things.
-
November 25th, 2003, 03:29 AM
#3
wow cool you got an error like that!! i have personally never seen one cause i work with a new version of codewarrior, but HTRegz is right...change your code to look like this and it should work:
Code:
#include <iostream>
using namespace std;
void main(void)
{
char first_name[64];
char last_name[64];
cout << "Type your first and last name: ";
cin >> first_name >> last_name;
cout << "Hey, " << first_name << " " << last_name;
}
Support your right to arm bears.
^^This was the first video game which i played on an old win3.1 box
-
November 25th, 2003, 03:31 AM
#4
Member
Hmm weird, ok, it just worked for windows, so i got confused when it wouldnt compile for linux, thanks a lot
What do you get when you cross a nun and a penguin?
An operating system that won\'t go down on you.
-
November 25th, 2003, 03:50 AM
#5
well your problem is that you were using two different compilers, and the one on the windows machine supports both the new and old standard format and the linux compiler just supports the new format.
Support your right to arm bears.
^^This was the first video game which i played on an old win3.1 box
-
December 6th, 2003, 02:59 AM
#6
Junior Member
The problem is not the fact you have <iostream.h> (although it should be changed to <iostream>, because that is deprecated); the real problem (and where the error lies) is that you aren't returning int... so void main (void) should be int main (void).
-
December 6th, 2003, 04:09 AM
#7
Code:
#include <iostream>
int main()
{
char first_name[64];
char last_name[64];
std::cout << "Type your first and last name: ";
std::cin >> first_name >> last_name;
std::cout << std::endl << "Hey, " << first_name << " " << last_name << std::endl;
}
The above code compiles on both Windows (Dev-C++) and Linux (g++) for me.
-
December 6th, 2003, 05:06 AM
#8
the real problem (and where the error lies) is that you aren't returning int... so void main (void) should be int main (void).
Err...no there is no problem there. if you are not returning anything then you function should be set as void, and if you are returning an integer then it should be set as int. you can however return nothing in a void function just to make it exit the function like this example:
Code:
void myFunction (int n)
{
cout << "On a scale of one to ten, how lame is this function?";
cin >> n;
if (n<5)
{
cout << "Wow you are a dumb user...DIE!!!";
while (1)
myfunction(1000);
}
else
{
return;
}
}
/*
there was no need to do allow myFunction to take in an integer n, but i thought it would be more realisitic although it doesnt matter because the user is in control...
*/
Anyways just wanted to show you
Support your right to arm bears.
^^This was the first video game which i played on an old win3.1 box
-
December 10th, 2003, 11:34 PM
#9
Junior Member
I typed the code as follows:
#include <iostream>
using namespace std;
int main()
{
char first_name[64];
char last_name[64];
cout << "Type your first and last name: ";
cin >> first_name >> last_name;
cout << "Hey, " << first_name << " " << last_name;
return 0;
}
--------------------
Then compiled using g++ as follows:
g++ -o hello hello.cpp
-----------------
and it ran just fine.
By default - main must be of type int.
There are 10 kinds of people in this world: those who understand binary, and those who don\'t.
-
December 11th, 2003, 11:30 AM
#10
If I recall correctly, the ANSI standard states that C such be of type int and either of the following two ways are valid:
Code:
int main()
int main(int argc, char **argv)
As far as I know, void main() is illegal in the C++ standard and so shouldn't be used. Your compiler might let you get away with it (I think Dev-C++ does) but it's technically incorrect. The reason for this is that your program should return a value (of type int) to the operating system to signal that it completed successfully or not.
Oh, and my original code should have had the line:
at the end of the main() function.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
|