On Mon, 2003-12-15 at 17:19, cstrato wrote: > Dear Justin > > Thank you, but first I tested Eddie Offermann´s suggestion to use: > extern const char *kXPSName; > in my header file, and it solved my problem. > > Nevertheless I decided to wrap the #include statements in the #ifndef > statements. Long time ago I did this all the time, but with root I > have abandonded it because everythink seems to work fine w/o it. You may save some compile time by agressively putting inclusion guards around your `#include' directives, and putting headers guards in all headers, like so: // -*- mode: c++ -*- Hi Emacs this is a C++ header file called foo.h #ifndef FOO_H #define FOO_H .... #endif // // EOF // // -*- mode: c++ -*- Hi Emacs this is a C++ source file called foo.cxx #ifndef FOO_H # include "foo.h" #endif .... // EOF The reason is, if you only include the guards in the header file, the file _will_ in fact be sought for _and_ opened by the preprocessor. However, if you include it with inclusion guards, the preprocessor won't even bother go look for the file as the guard (preprocessor-) symbol is already defined. BTW. Never _ever_ _define_ things in a header, unless it's a template header: template <typename T> class foo { static foo* _instance; static T _lock; foo() {} ~foo() {{ foo(const foo& f) {} public: static& instance() { if (!_instance) { _lock.lock(); if (!_instance) _instance = new foo<T>; _lock.unlock(); } return *_instance; } }; template <typename T> foo* foo<T>::_instance = 0; tempalte <typename T> T foo<T>::_lock = T(); or an inline (member) function: inline void function() { std::cout << "Hello World" << std::endl; } struct foo { void function(); }; inline void foo::function() { std::cout << "Hello World" << std::endl; } Everything else is defined in compiled code, and if needed declared as `extern' in some header file. `Hidden' global variables should be static to some file with appropriate get/set functions - but why not use a singleton instead? Yours, -- ___ | Christian Holm Christensen |_| | ------------------------------------------------------------- | | Address: Sankt Hansgade 23, 1. th. Phone: (+45) 35 35 96 91 _| DK-2200 Copenhagen N Cell: (+45) 24 61 85 91 _| Denmark Office: (+45) 353 25 404 ____| Email: cholm@nbi.dk Web: www.nbi.dk/~cholm | |
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:17 MET