Article View: pl.comp.lang.c
Article #268129Re: Ciemna strona C++
From: Seweryn Habdank-Wojewódzki
Date: Wed, 07 Nov 2007 22:25
Date: Wed, 07 Nov 2007 22:25
63 lines
2645 bytes
2645 bytes
Witam
Maciej Sobczak wrote:
> Nie jest to takie oczywiste, bo using namespace może być zupełnie
> sensownie użyte np. w ciele funkcji, która jest zdefiniowana w
> nagłowku. Np:
>
> template <typename T>
> void print(const T & t)
> {
> using namespace std;
> cout << t;
> }
Jaki jest poziom zagnieżdżenia tego using? Tak na prawdę szkodliwe jest
tylko globalne using, jak sobie ktoś w swojej przestrzeni nazw tak zrobi to
sam sobie powróz ukręcił na karku.
Można ewentualnie patrzeć czy nie dajemy tak:
namespace foo
{
using namespace ::std;
}
Potrzebne są dwa liczniki, jeden kontrolujący poziom zagnieżdzenia, drugi
wskazujący, czy dane zagnieżdżenie dotyczy namespace, czy nie.
> Nie ma powodu, żeby tego zabraniać
Też tak uważam. W zasadzie to wystarczy sprawdzić co jest przed "{"
poprzedzającym wyrażenie using i wiadomo czy to jest groźne czy nie.
Praktycznie należy zapamiętać dwa wyrażenia poprzedzające "{" i
jeżeli "using namespace" (UN) występuję na poziomie 0 to zawsze alarm.
Jeżeli UN występuje na poziomie > 0 to odpamiętuje się dwa wyrazy przed "{"
jeśli one są cokolwiek inne niż {bleble, namespace} albo {namespace, xxx} to
jest raczej dobrze.
Przykład paskudny:
#define NASTY_DEFINE
#define NASTY_DEFINE1
#define NASTY_DEFINE2
#define NASTY_DEFINE3
namespace foo NASTY_DEFINE NASTY_DEFINE1 NASTY_DEFINE2 NASTY_DEFINE3
{
}
> a odróżnienie tego od tych
> "brzydkich" przypadków nie jest proste.
Proszę, czy możesz podać coś konkretnego?
Pozdrawiam.
--
|\/\/| Seweryn Habdank-Wojewódzki
\/\/
Technical Details
Message-ID:
<fgtd7m$pp0$1@news.vectranet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.vectranet.pl!not-for-mailReferences:
<fghgeo$spf$1@nemesis.news.tpi.pl> <geauv4-p5c.ln1@router.piechotka.com.pl> <fgi02b$mv5$1@news.dialog.net.pl> <fgt8fm$72r$4@inews.gazeta.pl> <fgt8h5$72r$5@inews.gazeta.pl> <1194472555.796343.35790@z9g2000hsf.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.vectranet.pl!not-for-mail From: Seweryn Habdank-Wojewódzki <shw_mail@wp.pl> Newsgroups: pl.comp.lang.c Subject: Re: Ciemna strona C++ Date: Wed, 07 Nov 2007 23:25:31 +0100 Organization: VectraNET - http://www.vectranet.pl Lines: 64 Message-ID: <fgtd7m$pp0$1@news.vectranet.pl> References: <fghgeo$spf$1@nemesis.news.tpi.pl> <geauv4-p5c.ln1@router.piechotka.com.pl> <fgi02b$mv5$1@news.dialog.net.pl> <fgt8fm$72r$4@inews.gazeta.pl> <fgt8h5$72r$5@inews.gazeta.pl> <1194472555.796343.35790@z9g2000hsf.googlegroups.com> Reply-To: shw_mail@wp.pl NNTP-Posting-Host: 078088193244.osw.vectranet.pl Mime-Version: 1.0 X-Trace: news.vectranet.pl 1194473526 26400 78.88.193.244 (7 Nov 2007 22:12:06 GMT) X-Complaints-To: usenet@news.vectranet.pl NNTP-Posting-Date: Wed, 7 Nov 2007 22:12:06 +0000 (UTC) User-Agent: KNode/0.10.5 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit