Domanda

Quando Eclisse crea un nuovo file (.C O .H file) in un progetto C l'editor crea sempre automaticamente un file #define nella parte superiore del file in questo modo:Se il file si chiama "myCFile.c" ci sarà un file #define all'inizio del file in questo modo

#ifndef MYCFILE_C_
#define MYCFILE_C_

Ho visto anche altri editor fare lo stesso (Codewright e SlikEdit credo).IL #defines non sembra fare nulla per l'editor poiché posso semplicemente eliminarli senza problemi e non riesco a pensare a un motivo per cui IO vorrebbe usarli.Qualcuno sa perché sono lì?

È stato utile?

Soluzione

E' da evitare molteplici definizioni.

Altri suggerimenti

A volte le persone includono un intero file .c in altri file .c (o anche file .h), quindi ha esattamente lo stesso scopo di impedire che un file di inclusione venga incluso più volte e che il compilatore sputi più errori di definizione.

È strano, tuttavia, che il comportamento predefinito di un editor sia quello di inserirlo in qualsiasi cosa tranne che in un file .h.Questa sarebbe una funzionalità raramente necessaria.

Una versione più moderna di questo consiste nell'utilizzare:

#pragma once

È abbastanza insolito vederlo in un file .c, normalmente è solo nei file header.

Penso che sia un ritorno al passato dei problemi di inclusione di C, in cui verrebbero incluse più copie del sorgente, a meno che tu non sia meticoloso con le catene di inclusione (un file ne include n altri).Controllare se un simbolo è definito e includerlo solo se il simbolo è definito era una via d'uscita.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top