.h or .cpp


 
Thread Tools Search this Thread
Top Forums Programming .h or .cpp
# 1  
Old 09-28-2011
.h or .cpp

I have the code below and cannot decide if to put it in a .h file or in a .cpp file

Code:
#ifndef VERBOSE_H
#define VERBOSE_H

#include "sstring.h"

enum Verbose { none = 0, low = 1, medium = 2, high = 3, diag = 4 };

bool  GetVerbose(String&  S, Verbose&  V) {
  S.ToUpper();
  if (S == String("NONE")) { V = none; return (true); }
  if (S == String("LOW")) { V = low; return (true); }
  if (S == String("MEDIUM")) { V = medium; return (true); }
  if (S == String("HIGH")) { V = high; return (true); }
  if (S == String("DIAG")) { V = diag; return (true); }
  return (false);
}

#endif

# 2  
Old 09-29-2011
That will cause duplicate symbol errors if you include that file in multiple .cpp files because you'd declare the same function body over and over.

I'd change it to this:

Code:
#ifndef VERBOSE_H
#define VERBOSE_H

#include "sstring.h"

enum Verbose { none = 0, low = 1, medium = 2, high = 3, diag = 4 };

extern bool  GetVerbose(String&  S, Verbose&  V);
#endif

Put the function body in one and only one .cpp file.

Alternatively, you could make it an inline function, which would prevent it from having a symbol definition at all.
# 3  
Old 09-29-2011
Thank you. If I include it inline, I would not need to have a .cpp file then. Is that right? Is it ok not to have a .cpp on some occasions like this one?

---------- Post updated at 05:02 AM ---------- Previous update was at 04:45 AM ----------

I had originally some code concerning a class (definition and implementation) in a header file put have now split it to have the definition and inline functions in the .h file, and the rest of the implementation in a .ccp file.

This is what I have for the .cpp file

The #ifndef, #define, #include and #endif were in the .h file. Should I remove them from the .cpp file as well, as to your explanation?

Code:
#ifndef COMPLEX_H
#define COMPLEX_H

#include <assert.h>
#include <cmath>
#include <iostream>

#include "gendef.h"

//////////////////////////////////////////////////////////////////////////

Complex&  Complex:operator /= (const Complex&  C) {
  assert((C.Re != 0) || (C.Im != 0));
  REAL  mod = (C.Re * C.Re) + (C.Im * C.Im);
  REAL  nr, ni;
  nr = ( (Re * C.Re) + (Im * C.Im) ) / mod;
  ni = ( (C.Re * Im) - (Re * C.Im) ) / mod;
  Re = nr;
  Im = ni;
  return (*this);
}

#endif

# 4  
Old 09-29-2011
Quote:
Originally Posted by kristinu
This is what I have for the .cpp file

The #ifndef, #define, #include and #endif were in the .h file. Should I remove them from the .cpp file as well, as to your explanation?
Those #ifndef/#define/#endif don't belong there, no. That arrangement is to prevent a .h file from being included more than once -- if you accidentally do so, FILE_H will already be defined and the preprocessor will harmlessly skip over the contents.

The string is completely arbitrary, by the way. You could have #ifndef SLARTIBARTFAST and it would work, as long as SLARTIBARTFAST is only used for one .h file.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

want to find out a function name in a cpp file

I have an error in my logs as it shows some function name . 1. I dnt know where is the file.cpp located only i know the machine . 2. How to find out that the function name is loacated in which path and which file into that machine. Thanks . (1 Reply)
Discussion started by: madfox
1 Replies

2. Programming

exit in cpp

In a program if we call exit(0), it exits the program and before that it closes all opened stream. In C++, it even does destroys the created objects. Is there any function available, which if called will do some basic clean ups (which includes object destruction) ??? (4 Replies)
Discussion started by: lipun4u
4 Replies

3. Shell Programming and Scripting

CPP to PERL

Hi all, can we convert a cpp program to perl scripting ? (4 Replies)
Discussion started by: Shell_Learner
4 Replies

4. Shell Programming and Scripting

reading a cpp file

I need to find all the methods in a cpp file ... using shell script Pls guide me regarding the grep criteria for searching methods I mean what are the patterns to be grepped in *.cpp which match methods Hope i have made myself clear Thanks and Regards -- Ultimatix (2 Replies)
Discussion started by: ultimatix
2 Replies

5. SCO

GNU cpp and make on SCO

Installed GNU make and the GNU C/C++ compiler on SCO Openserver 5.0.7 recently. Only a normal user is able to run make and compile programs - root is not able to. Under root, make do run, but root can't access the compiler at all, even tho I set root's path to point to the compiler.... (0 Replies)
Discussion started by: The_Librarian
0 Replies

6. Shell Programming and Scripting

If file = .cpp then print?

I'm trying to develop a script that makes it so only .cpp programs can print. I'm doing it for my computer programming class because everyone keeps printing the executable instead of the source code and it's wasting a lot of paper. How can I accomplish this? Thanks for the help. :D (5 Replies)
Discussion started by: Irish_Cereal
5 Replies

7. Programming

gcccommand found how to do with cpp

gcc help iam using kubuntu os (www.ubuntu.com) in that i dont find gcc but cpp command is there how to compile code with that & how to use gij for java in ubuntu (1 Reply)
Discussion started by: seshumohan
1 Replies

8. Programming

cpp in unix

sir i am trying to compile and execute cpp file in unix the command cpp <filename > is not working do you suggest any other command? thanking you (5 Replies)
Discussion started by: sandhyapidugu
5 Replies

9. UNIX for Dummies Questions & Answers

Hi Modem Problem And cpp

Hi am very new to unix.I got installed linux mandrake and the first problem is whith the modem i don't know why but it does not work. i config it on /dev/modem and some time it says "the modem is bussy" and some time it says: "Modem ready" but the modem did'n switch on Ok the other question... (3 Replies)
Discussion started by: user666
3 Replies
Login or Register to Ask a Question