By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,260 Members | 1,338 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,260 IT Pros & Developers. It's quick & easy.

const int NULL = 0

P: n/a
Bonjours à tous,

Dans la Bible, l'ami Stroustrup conseil d'utiliser 0 à la place de NULL.
Il indique également pour ceux qui voudraient continuer à utiliser NULL d'en
faire la déclaration suivante:

const int NULL = 0;

Cependant, j'ai peur qu'en faisant une telle déclaration dans un .hpp, le
compilateur me cré un symbole (au sens "linkage" du terme) pour la
constante (i.e. une sorte de variable globale non-modifiable) par
fichier .cpp incluant le fameux header.

Au final, l'étape de link risque d'etre douloureuse!!!!

Apres quelques tests (un peu trop à la va-vite je dois l'avouer) il
semblerait que:

- GCC) arrive linker SI la variable est "const" dans le cas contraire, il
n'y parvient pas!!!

- Visual 6.0) n'arrive jamais à linker

Avez vous des info à ce sujet? est-ce GCC qui fait des optimisations dans
certains cas? est-ce Visual 6.0 qui a une/des limitation(s) à se sujet?
Est-ce moi qui ai mal fait mes tests ("vite fait mal fait")?
De plus je pense que sa proposition est assez moyenne car meme si je peux -
dans un de mes headers - redéfinir NULL par "const int NULL = 0;" je cours
de grands risques avec l'inclusion de headers standards: mon NULL rentrera
en conflit avec le NULL standard et se dernier remplacera le miens au
préprocessing pour me donner un résultat assez ... tordu!!!

Ou alors:
- je peux faire avant ma définition un #undef NULL
- je peux faire mon propre NULL: "const int MYNULL = 0;"

Merci de votre réaction

Philippe

Jul 23 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a

Philippe Mesmeur wrote:
Bonjours à tous,


Ni gao su wo shenme?

Jul 23 '05 #2

P: n/a
On 2005-02-03 18:20:29 -0500, Philippe Mesmeur <ph**************@noos.fr> said:
Bonjours Ã* tous,

Dans la Bible, l'ami Stroustrup conseil d'utiliser 0 Ã* la place de NULL.
Il indique également pour ceux qui voudraient continuer Ã* utiliser NULL d'en
faire la déclaration suivante:


[snip]

Other than include the appropriate header(s), you don't have to do
anything special to be able to use NULL. You certianly don't have to
define it yourself.

Just include one or more of <clocale>,<cstddef>,<cstdio>,<cstdlib>,<cstring> ,
<ctime>, or<cwchar>

--
Clark S. Cox, III
cl*******@gmail.com

Jul 23 '05 #3

P: n/a
"Philippe Mesmeur" <ph**************@noos.fr> wrote in message
news:42***********************@nan-newsreader-07.noos.net...
Bonjours à tous,

Dans la Bible, l'ami Stroustrup conseil d'utiliser 0 à la place de NULL.
Il indique également pour ceux qui voudraient continuer à utiliser NULL
d'en
faire la déclaration suivante:

const int NULL = 0;

Cependant, j'ai peur qu'en faisant une telle déclaration dans un .hpp, le
compilateur me cré un symbole (au sens "linkage" du terme) pour la
constante (i.e. une sorte de variable globale non-modifiable) par
fichier .cpp incluant le fameux header.

Au final, l'étape de link risque d'etre douloureuse!!!!

Apres quelques tests (un peu trop à la va-vite je dois l'avouer) il
semblerait que:

- GCC) arrive linker SI la variable est "const" dans le cas contraire, il
n'y parvient pas!!!

- Visual 6.0) n'arrive jamais à linker

Avez vous des info à ce sujet? est-ce GCC qui fait des optimisations dans
certains cas? est-ce Visual 6.0 qui a une/des limitation(s) à se sujet?
Est-ce moi qui ai mal fait mes tests ("vite fait mal fait")?
De plus je pense que sa proposition est assez moyenne car meme si je
peux -
dans un de mes headers - redéfinir NULL par "const int NULL = 0;" je cours
de grands risques avec l'inclusion de headers standards: mon NULL rentrera
en conflit avec le NULL standard et se dernier remplacera le miens au
préprocessing pour me donner un résultat assez ... tordu!!!

Ou alors:
- je peux faire avant ma définition un #undef NULL
- je peux faire mon propre NULL: "const int MYNULL = 0;"

Merci de votre réaction

Philippe


Why not just follow Stroustrop's advice and use 0 rather than NULL? That's
what I do and I have never been sorry.

--
Cy
http://home.rochester.rr.com/cyhome/
Jul 23 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.