Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #14644

Re: #include and namespaces

From Victor Bazarov <v.bazarov@comcast.invalid>
Newsgroups comp.lang.c++
Subject Re: #include and namespaces
Date 2012-03-01 07:54 -0500
Organization A noiseless patient Spider
Message-ID <jinri9$cet$1@dont-email.me> (permalink)
References <8266241.1084.1330590876018.JavaMail.geo-discussion-forums@vblb5>

Show all headers | View raw


On 3/1/2012 3:34 AM, Luca Cerone wrote:
> I've a header mylib.h
> that contains the line
>
> using namespace std ; // before the declaration of my namespace
> //and functions.

That's A BAD IDEA(tm).

Do not put 'using' directives in headers.

> I put this because I'm declaring several functions that use vectors
> and strings and I'd like not to write std:: in front of every of such types.

In this particular case the convenience of not having to type 'std::' is 
trumped by the problems your 'using' directive creates.  So, don't do that.

> Everything works fine, but there is a small issue:
> when I include the header in my main.cpp
> it is like if I've written
> using namespace std ;
> in the preamble.

It's not "like if".  You did write that.  You included that specific 
text by writing <<#include "mylib.h">> in your 'main.cpp'.

> For the std it is no big deal, but for my custom namespaces it is.
>
> So how can I use the namespace in mylib.h

You have to understand one *very important* thing here.  "mylib.h" is 
just text you're going to inject into other modules by means of the 
preprocessor "#include" directive.  You don't "use the namespace" in 
'mylib.h' because you don't compile 'mylib.h' separately.  If you "use" 
anything in that header, you use that anything anywhere your header 
happens to be #include'd.

 > and its implementation mylib.cpp,

Write

    using namespace std;

in 'mylib.cpp' _only_.

> but not in the main.cpp? (unless explicitely declared of course).

V
-- 
I do not respond to top-posted replies, please don't ask

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

#include and namespaces Luca Cerone <luca.cerone@gmail.com> - 2012-03-01 00:34 -0800
  Re: #include and namespaces Victor Bazarov <v.bazarov@comcast.invalid> - 2012-03-01 07:54 -0500
    Re: #include and namespaces Luca Cerone <luca.cerone@gmail.com> - 2012-03-01 06:38 -0800
      Re: #include and namespaces Victor Bazarov <v.bazarov@comcast.invalid> - 2012-03-01 14:26 -0500
        Re: #include and namespaces Luca Cerone <luca.cerone@gmail.com> - 2012-03-02 00:47 -0800
    Re: #include and namespaces yatremblay@bel1lin202.(none) (Yannick Tremblay) - 2012-03-01 17:38 +0000
      Re: #include and namespaces Gareth Owen <gwowen@gmail.com> - 2012-03-01 18:07 +0000
        Re: #include and namespaces yatremblay@bel1lin202.(none) (Yannick Tremblay) - 2012-03-01 18:52 +0000
          Re: #include and namespaces Paavo Helde <myfirstname@osa.pri.ee> - 2012-03-01 15:13 -0600
      Re: #include and namespaces "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2012-03-01 19:07 +0100
        Re: #include and namespaces yatremblay@bel1lin202.(none) (Yannick Tremblay) - 2012-03-02 08:02 +0000
          Re: #include and namespaces "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2012-03-02 11:12 +0100
  Re: #include and namespaces Anand Hariharan <mailto.anand.hariharan@gmail.com> - 2012-03-01 11:20 -0800
    Re: #include and namespaces Victor Bazarov <v.bazarov@comcast.invalid> - 2012-03-01 14:30 -0500
      Re: #include and namespaces "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2012-03-01 20:53 +0100
        Re: #include and namespaces Miles Bader <miles@gnu.org> - 2012-03-02 09:51 +0900
        Re: #include and namespaces Daniel <danielaparker@gmail.com> - 2012-03-02 05:13 -0800
          Re: #include and namespaces Miles Bader <miles@gnu.org> - 2012-03-02 22:59 +0900
            Re: #include and namespaces Daniel <danielaparker@gmail.com> - 2012-03-02 10:31 -0800
              Re: #include and namespaces Miles Bader <miles@gnu.org> - 2012-03-03 10:54 +0900
              Re: #include and namespaces "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2012-03-03 08:53 +0100
  Re: #include and namespaces Juha Nieminen <nospam@thanks.invalid> - 2012-03-02 18:37 +0000
    Re: #include and namespaces Luca Cerone <luca.cerone@gmail.com> - 2012-03-03 04:22 -0800

csiph-web