const int NULL = 0

  • Thread starter Philippe Mesmeur
  • Start date
P

Philippe Mesmeur

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
 
C

Clark S. Cox III

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>
 
C

Cy Edmunds

Philippe Mesmeur 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:

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,062
Latest member
OrderKetozenseACV

Latest Threads

Top