OESF | ELSI | pdaXrom | OpenZaurus | Zaurus Themes | Community Links | Ibiblio

IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> How To Use Multiple .cpp Files?
Capn_Fish
post Aug 19 2007, 04:07 PM
Post #1





Group: Members
Posts: 2,350
Joined: 30-July 06
Member No.: 10,575



I'm starting to hopefully code a game for the Z, but I need to put stuff not only in multiple .hpp files but also in .cpp files. Does anybody have a good link for how to do this? My horrible searching skills failed to turn anything up.

Also, is there a good tutorial for using the autotools/makefiles? Those seem to be important to using multiple source files as well.

Thanks.
Go to the top of the page
 
+Quote Post
koan
post Aug 19 2007, 04:14 PM
Post #2





Group: Members
Posts: 328
Joined: 25-February 04
From: UK
Member No.: 2,025



QUOTE(Capn_Fish @ Aug 19 2007, 04:07 PM)
I'm starting to hopefully code a game for the Z, but I need to put stuff not only in multiple .hpp files but also in .cpp files. Does anybody have a good link for how to do this? My horrible searching skills failed to turn anything up.

Also, is there a good tutorial for using the autotools/makefiles? Those seem to be important to using multiple source files as well.

Thanks.
*


What is an hpp file ?

I assume you mean a C/C++ header file; most people use .h and for C++ source files they use .cc or .cpp. Some people even use .C. I prefer .cc.

How about arm-linux-g++ file1.cpp file2.cpp -o myprogram ?

You can do it all using GNU make. I have the O'Reilly book; I've found it useful.

I don't know about the dev system for pdaXrom. Do they use tmake/qmake ?
Go to the top of the page
 
+Quote Post
Capn_Fish
post Aug 19 2007, 04:58 PM
Post #3





Group: Members
Posts: 2,350
Joined: 30-July 06
Member No.: 10,575



Thanks for the quick reply. How do I make function calls to the other .cpp files then? I don't understand how it works if you aren't including them.

I use .hpp instead of .h because editors with syntax highlighting highlight differently for C than they do for C++, which makes it odd to read. With .hpp, they use the C++ highlighting, making it more consistant.
Go to the top of the page
 
+Quote Post
Meanie
post Aug 19 2007, 05:18 PM
Post #4





Group: Members
Posts: 2,808
Joined: 21-March 05
From: Sydney, Australia
Member No.: 6,686



QUOTE(Capn_Fish @ Aug 20 2007, 10:58 AM)
Thanks for the quick reply. How do I make function calls to the other .cpp files then? I don't understand how it works if you aren't including them.

I use .hpp instead of .h because editors with syntax highlighting highlight differently for C than they do for C++, which makes it odd to read. With .hpp, they use the C++ highlighting, making it more consistant.
*


you are supposed to have function definitions for each of your methods and include those in header files so that other source files that need to use them can then simply include those headers.

hpp files are a newer standard for cpp header files and usually are used to define cpp templates. you can even mix cpp and c objects to some extend by using the extern c definitions...

tmake/qmake are for generating QTE / QT makefiles. if you are trying to generate makefiles for QT under pdaXrom you would also be using qmake, but for general c/c++ code, you would use automake to generate the build templates and then run configure and make to actually compile and build.
Go to the top of the page
 
+Quote Post
Capn_Fish
post Aug 19 2007, 06:01 PM
Post #5





Group: Members
Posts: 2,350
Joined: 30-July 06
Member No.: 10,575



Ah, that mostly clears it up. A couple of follow-up questions:

1. So I make a prototype function in the header ( void myfunction(int myint); ), then have the complete function in the .cpp file? (Yes, as it works)

2. How do I use automake if I don't have a configure.in or configure.ac file?

Thanks.

EDIT: I'm getting errors when I try to compile with the files like they are:

CODE
Fish LOZR # g++ lozr.cpp sprite.cpp screen.cpp input.cpp  -o lozr -lSDL -lSDL_image
lozr.cpp: In function 'int main(int, char**)':
lozr.cpp:42: warning: deprecated conversion from string constant to 'char*'
/tmp/ccXyIXFl.o:(.bss+0x0): multiple definition of `spriteMain'
/tmp/cc2NlQAW.o:(.bss+0x20): first defined here
/tmp/ccXyIXFl.o:(.bss+0x2c): multiple definition of `surfScreen'
/tmp/cc2NlQAW.o:(.bss+0x4c): first defined here
/tmp/ccEAhPKQ.o:(.bss+0x0): multiple definition of `surfScreen'
/tmp/cc2NlQAW.o:(.bss+0x4c): first defined here
/tmp/ccxIcIsw.o:(.bss+0x0): multiple definition of `myEvent'
/tmp/cc2NlQAW.o:(.bss+0x0): first defined here
collect2: ld returned 1 exit status
Fish LOZR #


What's wrong?

This post has been edited by Capn_Fish: Aug 19 2007, 06:44 PM
Go to the top of the page
 
+Quote Post
danr
post Aug 20 2007, 12:48 AM
Post #6





Group: Members
Posts: 138
Joined: 12-February 04
Member No.: 1,830



QUOTE(Capn_Fish @ Aug 20 2007, 02:01 AM)
EDIT: I'm getting errors when I try to compile with the files like they are:

CODE
Fish LOZR # g++ lozr.cpp sprite.cpp screen.cpp input.cpp  -o lozr -lSDL -lSDL_image
lozr.cpp: In function 'int main(int, char**)':
lozr.cpp:42: warning: deprecated conversion from string constant to 'char*'
/tmp/ccXyIXFl.o:(.bss+0x0): multiple definition of `spriteMain'
/tmp/cc2NlQAW.o:(.bss+0x20): first defined here
/tmp/ccXyIXFl.o:(.bss+0x2c): multiple definition of `surfScreen'
/tmp/cc2NlQAW.o:(.bss+0x4c): first defined here
/tmp/ccEAhPKQ.o:(.bss+0x0): multiple definition of `surfScreen'
/tmp/cc2NlQAW.o:(.bss+0x4c): first defined here
/tmp/ccxIcIsw.o:(.bss+0x0): multiple definition of `myEvent'
/tmp/cc2NlQAW.o:(.bss+0x0): first defined here
collect2: ld returned 1 exit status
Fish LOZR #


What's wrong?
*


If your .cpp files are #including the same header file, then the header file needs guards around it to stop it being included more than once.

So for example, if your header is called header.h, you would have the following in it:

CODE
#ifndef HEADER_H
#define HEADER_H
<usual header code>
#endif


This would then ensure that the header file is included only once during compilation.

Dan
Go to the top of the page
 
+Quote Post
Capn_Fish
post Aug 20 2007, 06:24 AM
Post #7





Group: Members
Posts: 2,350
Joined: 30-July 06
Member No.: 10,575



I've done that, that's why I find this so odd (not to mention the fact that I've never tried to build an app this way).

Do I need to do it in the .cpp files too? It sounds wrong, but you never know.
Go to the top of the page
 
+Quote Post
Capn_Fish
post Aug 20 2007, 01:20 PM
Post #8





Group: Members
Posts: 2,350
Joined: 30-July 06
Member No.: 10,575



I figured it out. I needed to use "extern (variable)" in the header, then put the actual thing in the .cpp file.
Go to the top of the page
 
+Quote Post
koan
post Aug 20 2007, 06:25 PM
Post #9





Group: Members
Posts: 328
Joined: 25-February 04
From: UK
Member No.: 2,025



QUOTE(Meanie @ Aug 19 2007, 05:18 PM)
hpp files are a newer standard for cpp header files and usually are used to define cpp templates. you can even mix cpp and c objects to some extend by using the extern c definitions...


Hi Meanie,

Is hpp really a new standard ? I never heard of it. Can you supply a link to where I can find more info ?

I always mixed C and C++ in header files with no problems.

thanks

koan
Go to the top of the page
 
+Quote Post
Meanie
post Aug 20 2007, 06:40 PM
Post #10





Group: Members
Posts: 2,808
Joined: 21-March 05
From: Sydney, Australia
Member No.: 6,686



QUOTE(koan @ Aug 21 2007, 12:25 PM)
QUOTE(Meanie @ Aug 19 2007, 05:18 PM)
hpp files are a newer standard for cpp header files and usually are used to define cpp templates. you can even mix cpp and c objects to some extend by using the extern c definitions...


Hi Meanie,

Is hpp really a new standard ? I never heard of it. Can you supply a link to where I can find more info ?

I always mixed C and C++ in header files with no problems.

thanks

koan
*



http://filext.com/file-extension/HPP

well, the hpp standard for c++ headers was introduced after c++ came to which naturally was after the c standard so in effect, the hpp header convention for c++ headers and h for c headers was newer. however, it was not widely adopted and because of non consensus reasons caused by many programmers that still mix and match c and c++ and many people still use .h files for cpp. hpp headers are used for pure c++ code only and since many cpp programs still have elements of c in them and most people were programming in a hybrid c/c++ mode anyway, the result was hpp was not used that much so mainly c++ extensions which are pure c++ will use hpp file extensions.
anyway, its just a convention which makes it easier to detect c++ headers. some people also use .hh instead of .hpp so its not really a standard but more like a convention, but let's not fight about wording symantics. hpp is a commonly used standard convention but not an enforced standard...
Go to the top of the page
 
+Quote Post
koan
post Aug 20 2007, 10:51 PM
Post #11





Group: Members
Posts: 328
Joined: 25-February 04
From: UK
Member No.: 2,025



QUOTE(Meanie @ Aug 20 2007, 06:40 PM)


OK, thanks.

I just thought that as you were saying it's a standard I'd missed something.

To be perfectly straightforward though, I've never met source code that used .hpp

koan
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 19th December 2014 - 08:22 PM