akohan
asked on
error on compilng a C++ file using g++
Hi group,
I'm getting warning as following when I compile two cpp files. These are not my files it happened I found them at http://www.functionx.com/cpp/examples/simpleclass.htm as I was trying to learn how "ctags" works in VIM or vi
In order to compile and run I use:
$g++ Exo.cpp Cube.cpp -o test
Questions:
1) What caueses warning and how can I fix it? currently I have output which works fine but need to know how to get rid of this warnnig.
2)Does anybody know how I can use ctags in vim? any good resource with example?
Source is at snippet window but error message is:
In file included from /usr/lib/gcc/i386-redhat-l inux/4.1.1 /../../../ ../include /c++/4.1.1 /backward/ iostream.h :31,
from cube.cpp:2:
/usr/lib/gcc/i386-redhat-l inux/4.1.1 /../../../ ../include /c++/4.1.1 /backward/ backward_w arning.h:3 2: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 <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
I'm getting warning as following when I compile two cpp files. These are not my files it happened I found them at http://www.functionx.com/cpp/examples/simpleclass.htm as I was trying to learn how "ctags" works in VIM or vi
In order to compile and run I use:
$g++ Exo.cpp Cube.cpp -o test
Questions:
1) What caueses warning and how can I fix it? currently I have output which works fine but need to know how to get rid of this warnnig.
2)Does anybody know how I can use ctags in vim? any good resource with example?
Source is at snippet window but error message is:
In file included from /usr/lib/gcc/i386-redhat-l
from cube.cpp:2:
/usr/lib/gcc/i386-redhat-l
Header File: cube.h
#ifndef CUBE_H
#define CUBE_H
class Cube
{
public:
Cube();
~Cube();
void setSide(double s);
double getSide();
double Area();
double Volume();
void Properties();
private:
double Side;
};
#endif
Source File cube.cpp
#include <iostream.h>
#include "cube.h"
Cube::Cube()
{
}
Cube::~Cube()
{
}
void Cube::setSide(double s)
{
Side = s <= 0 ? 1 : s;
}
double Cube::getSide()
{
return Side;
}
double Cube::Area()
{
return 6 * Side * Side;
}
double Cube::Volume()
{
return Side * Side * Side;
}
void Cube::Properties()
{
cout << "Characteristics of this cube";
cout << "\nSide = " << getSide();
cout << "\nArea = " << Area();
cout << "\nVolume = " << Volume() << "\n\n";
}
Main File: Exo.cpp
#include "cube.h"
void main()
{
Cube cube;
cube.setSide(-12.55);
cube.Properties();
Cube de;
de.setSide(28.15);
de.Properties();
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi Evilrix,
Thank so much for your advice. Now, I understand what it means.
About ctags I found it. It is a way of finding the declarations or definitions of enums, functions and classes and so. In big projects it is very helpful.
http://linux.byexamples.com/archives/177/vim-with-ctags/
Regards.
>> Thank so much
Very welcome and thanks for posting back about CTags.
Very welcome and thanks for posting back about CTags.
g++ -Wno-deprecated Exo.cpp Cube.cpp -o test
Additional...
All the old C++ headers that ended in .h were renamed to exclude the .h and the old ones were deprecated. All the C style headers were also renamed to start with a C also with the .h removed. For example, c++ header <string.h> is now called <string> and C header <stdlib.h> is now called <cstdlib>. You should use these new headers in preference to the old ones when writing C++ (When writing C you should prefer to use the original C headers, for example <stdlib.h>). Again, this is to do with placing things int he std:: namespace. It's a little bit of a mess but once you learn the rules it's not that big a deal.