Question

Quand Éclipse crée un nouveau fichier (.c ou .h fichier) dans un projet C, l'éditeur crée toujours automatiquement un #define en haut du fichier comme ceci :Si le fichier est nommé « myCFile.c », il y aura un #define au début du fichier comme ceci

#ifndef MYCFILE_C_
#define MYCFILE_C_

J'ai vu d'autres éditeurs faire cela également (Codewright et SlikEdit je pense).Le #defines cela ne semble rien faire pour l'éditeur car je peux simplement les supprimer sans aucun problème, et je ne vois pas pourquoi je voudrait les utiliser.Est-ce que quelqu'un sait pourquoi ils sont là ?

Était-ce utile?

La solution

C'est pour se prémunir contre plusieurs définitions.

Autres conseils

Parfois, les gens incluent un fichier .c entier dans d'autres fichiers .c (ou même des fichiers .h), cela a donc exactement le même objectif, à savoir empêcher qu'un fichier d'inclusion soit inclus plusieurs fois et que le compilateur crache plusieurs erreurs de définition.

Il est étrange, cependant, que ce soit le comportement par défaut d'un éditeur de mettre cela dans autre chose qu'un fichier .h.Ce serait une fonctionnalité rarement nécessaire.

Une version plus moderne consiste à utiliser :

#pragma once

Il est assez inhabituel de voir cela dans un fichier .c, normalement cela se trouve uniquement dans les fichiers d'en-tête.

Je pense que c'est un retour aux problèmes d'inclusion en C, où plusieurs copies de la source seraient incluses - à moins que vous ne soyez méticuleux avec les chaînes d'inclusion (un fichier en inclut n autres).Vérifier si un symbole est défini et inclure uniquement si le symbole est défini - était un moyen de s'en sortir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top