473,473 Members | 1,988 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

C++ coding standarts and how to structure "bigger" projects

Hi there
I wonder if any of you could point me in a direction where I can find some
usefull information about coding standarts.

I have some generel experiense in programming but I lack many things
specific to C++.
One thing that causes me many troubles is how to properly nest "#include
'filename'" statements in combination with the "#pragma once" directive and
"using namespace".

I have one specific project containing ~15 header files and as many saource
files which gives me trouble when the compiler starts linking.
"unresolved externals" showing all the time. Compiling each file on it's own
does not show any errors.

Each file has it's own class, and pointers to some of the classes are given
to them so they can use each other (one file combines it all and creates
objects and pointers to them).
I know these problems occour because my understanding of how to structure
bigger (well for me this is "bigger" than I'm used to) projects are
insufficient.
I have not been able to find any usefull information regarding this topic
though I've been searching google all day.

This project are made in VC++ 7 but as far as I'm concerned the compiler
should not matter at all as long as I'm using the right coding standarts.
I might add that the project would previously compile just fine using GCC
but then terminate upon execution when one class member tries to access
public data in another class through it's pointer.

This shows me I need some general knowledge about projects with multiple
files that include each other.

I hope some of you can point me in direction towards the shining bright
light:)
- Mikkel
Jul 22 '05 #1
4 3062
"Mikkel christensen" <04***@eit.iha.dk> wrote...
I wonder if any of you could point me in a direction where I can find some
usefull information about coding standarts.
[...]
This shows me I need some general knowledge about projects with multiple
files that include each other.

I hope some of you can point me in direction towards the shining bright
light:)


I'd probably start with microsoft.public.vc.project_mgt newsgroup.

There are good books on VC++ as well (alas, I don't remember the titles,
the same newsgroup or m.p.vc.language should help you with that)

V
Jul 22 '05 #2

"Mikkel christensen" <04***@eit.iha.dk> wrote in message
news:cm**********@news.cybercity.dk...
Hi there
I wonder if any of you could point me in a direction where I can find some
usefull information about coding standarts.

I have some generel experiense in programming but I lack many things
specific to C++.
One thing that causes me many troubles is how to properly nest "#include
'filename'" statements in combination with the "#pragma once" directive
and
"using namespace".

I have one specific project containing ~15 header files and as many
saource
files which gives me trouble when the compiler starts linking.
"unresolved externals" showing all the time. Compiling each file on it's
own
does not show any errors.

Each file has it's own class, and pointers to some of the classes are
given
to them so they can use each other (one file combines it all and creates
objects and pointers to them).
I know these problems occour because my understanding of how to structure
bigger (well for me this is "bigger" than I'm used to) projects are
insufficient.


This is too big a topic to reply to in a newsgroup post.

Do you know what should go into a header file and what shouldn't? Do you
know the difference between a declaration and a definition (this seems to be
the commonest mistake). Do you know never to include one source file inside
another? Do you know that each header file should include the other header
files it needs to compile if it is the first header file included in a
source file? Do you know how to use include guards? Apparently not since you
are using the non-standard #pragma once, you should use include guards
instead. Do you know never to use 'using namespace' inside a header file?
Could you post a sample header file from your code. It would really help to
have some specifics to work on.

If any of the above seems interesting or surprising then respond and I'll
try an focus in on the specific areas you are having problems with.

And post some code!!!

john
Jul 22 '05 #3
Just to comment on a few of your problems...

<You wrote..
I have one specific project containing ~15 header files and as many saource
files which gives me trouble when the compiler starts linking.
"unresolved externals" showing all the time. Compiling each file on it's
own
does not show any errors.
And the reasons you can compile each file by itself, is that you do not
link...
The linker is the one complaining about "Unresolved externals" or
"unresolved symbols"...
My guess is, there is some kind og namespace conflict... One difference
between compilers I could think of is,
wether or not they what all members defined, even if they are not used in
the application. I think VC7.net wants
them defined, do not know about gcc though... (and I do not know if the
standard has anything on this)

With namespaces, be sure to structure your files so all #includes are
outside namespaces...
header file: "SomeCollectionOfSomeSort.h"
#pragma once

#include "MySpecial.h"

namespace Flanhart {
class SomeCollectionOfSomeSort {
public:
SomeCollectionOfSomeSort();
};

}//end namespace Flanhart

implementation file:"SomeCollectionOfSomeSort.cpp"

//include here - first the file you are implementing
#include "SomeCollectionOfSomeSort.h"

//include dependencies here

namespace Flanhart {
//implement here
SomeCollectionOfSomeSort::SomeCollectionOfSomeSort () {
//DoStuff
}

}//end namespace Flanhart
So do not try to #include anything while you are in a namespace, since the
header file itself states it is in a namespace.. If you cannot figure it
out, try removing all namespaces, and check if you can build, if you cannot,
then it is not a namespaces, but probably access to libraries or access to
your own unimplemented functions/methods/(statics)...

Hope this will help you

Jesper Madsen

"Mikkel christensen" <04***@eit.iha.dk> wrote in message
news:cm**********@news.cybercity.dk...
Hi there
I wonder if any of you could point me in a direction where I can find some
usefull information about coding standarts.

I have some generel experiense in programming but I lack many things
specific to C++.
One thing that causes me many troubles is how to properly nest "#include
'filename'" statements in combination with the "#pragma once" directive and "using namespace".

I have one specific project containing ~15 header files and as many saource files which gives me trouble when the compiler starts linking.
"unresolved externals" showing all the time. Compiling each file on it's own does not show any errors.

Each file has it's own class, and pointers to some of the classes are given to them so they can use each other (one file combines it all and creates
objects and pointers to them).
I know these problems occour because my understanding of how to structure
bigger (well for me this is "bigger" than I'm used to) projects are
insufficient.
I have not been able to find any usefull information regarding this topic
though I've been searching google all day.

This project are made in VC++ 7 but as far as I'm concerned the compiler
should not matter at all as long as I'm using the right coding standarts.
I might add that the project would previously compile just fine using GCC
but then terminate upon execution when one class member tries to access
public data in another class through it's pointer.

This shows me I need some general knowledge about projects with multiple
files that include each other.

I hope some of you can point me in direction towards the shining bright
light:)
- Mikkel

Jul 22 '05 #4
Mikkel christensen wrote:
I wonder if any of you could point me in a direction where I can find some
usefull information about coding standarts.
I have yet to see one single coding standard document that I agree with
(now) - even ones I wrote myself.

Project requirements change, tools change (and get better).

For example, at one point, my coding standard was to not use namespaces.
(because at the time the compilers and debuggers did not support them
well, this is no longer the case).

Exceptions are still in my grey area. Having used them in a recent
project, I found them both useful and generally more difficult to debug
in some cases.

The things that remain in my (unwritten) coding standard are benign
things like indentation etc. The rest are based on requrements of the
project.

Much of it is driven by a "Test Driven Design" (aka TDD) process where
the final design deliverables are interfaces and unit tests and peer
review is done on the unit tests themselves.

I have some generel experiense in programming but I lack many things
specific to C++.
One thing that causes me many troubles is how to properly nest "#include
'filename'" statements in combination with the "#pragma once" directive and
"using namespace".
The most portable thing is to use guards, e.g.

----- file.h -----

#ifndef x__file_h__x
#define x__file_h__x 1

.... stuff goes here ...

#endif // x__file_h__x

------------------

If you look at austria C++ you'll see what I mean.
http://austria.sourceforge.net/dox/h...8h-source.html

I have one specific project containing ~15 header files and as many saource
files which gives me trouble when the compiler starts linking.
"unresolved externals" showing all the time. Compiling each file on it's own
does not show any errors.
Are you targetting more than MS ? If so you might want to look at a
cross platform build system.

Each file has it's own class, and pointers to some of the classes are given
to them so they can use each other (one file combines it all and creates
objects and pointers to them).
I'm not understanding what you want to say.
I know these problems occour because my understanding of how to structure
bigger (well for me this is "bigger" than I'm used to) projects are
insufficient.
I have not been able to find any usefull information regarding this topic
though I've been searching google all day.

This project are made in VC++ 7 but as far as I'm concerned the compiler
should not matter at all as long as I'm using the right coding standarts.
I might add that the project would previously compile just fine using GCC
but then terminate upon execution when one class member tries to access
public data in another class through it's pointer.

This shows me I need some general knowledge about projects with multiple
files that include each other.

I hope some of you can point me in direction towards the shining bright
light:)


Take a look at how Austria C++ is organized - It uses MakeXS as it's
build tool which can be made to generate VC++ project files as well as
build on platforms that use GNU make. It works with cygwin under Win32.

Jul 22 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

23
by: assaf__ | last post by:
Hello, I am beginning to work on a fairly large project and I'm considering to use python for most of the coding, but I need to make sure first that it is reliable enough. I need to make sure...
36
by: Andrea Griffini | last post by:
I did it. I proposed python as the main language for our next CAD/CAM software because I think that it has all the potential needed for it. I'm not sure yet if the decision will get through, but...
14
by: Jason Heyes | last post by:
I have read item 26 of "Exceptional C++" that explains a way of minimising compile-time dependencies and, therefore, a way to improve compile speeds. The procedure involves replacing #include...
18
by: aum | last post by:
Hi all, I've been doing a fair bit of python gui programming on and off, jumping between different widget sets along the way, from anygui, to pythoncard, to tkinter/PMW, then to...
8
by: Maxi | last post by:
Hello, i'm sorry my bad english :( I have CR9 Webservice, how to change databadse name and User_name into Webservice method? (not Viewer Control) Tks!! -- --------------------------
169
by: JohnQ | last post by:
(The "C++ Grammer" thread in comp.lang.c++.moderated prompted this post). It would be more than a little bit nice if C++ was much "cleaner" (less complex) so that it wasn't a major world wide...
3
by: | last post by:
I'm seeking (probably basic) guidance on the right way to split a large site that's supposed to represent one domain(mydomain.org) into many small VS.NET projects, and how to avoid issues with...
27
by: duli | last post by:
Hi: I would like recommendations for books (in any language, not necessarily C++, C, python) which have walkthroughs for developing a big software project ? So starting from inception, problem...
6
by: Cirene | last post by:
Do you prefer writing your DAL code by hand, or do you like to use the graphical interface of creating XSD datasets in Visual Studio 2008? What do you feel are the pros/cons? I hope this makes...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
1
muto222
php
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.