2008-09-01 7 views
2

Wenn Eclipse- eine neue Datei erstellt (.c oder .h-Datei) in einem C-Projekt der Editor immer automatisch ein #define an der Spitze der Datei wie folgt erstellt: Wenn die Datei ‚myCFile gestattet. c‘wird es wie diesesAuto definiert in C-Editoren ... Warum?

#ifndef MYCFILE_C_ 
#define MYCFILE_C_ 

eine #define am Anfang der Datei sein habe ich andere Editoren dies auch tun gesehen (Codewright und SlikEdit glaube ich). Die #defines scheinen nichts für den Editor zu tun, da ich sie einfach ohne Probleme löschen kann, und ich kann mir keinen Grund vorstellen, warum ich würde sie verwenden möchten. Weiß jemand, warum sie dort sind?

Antwort

0

Ich denke, es ist ein Rückfall von C Include-Problemen, wo mehrere Kopien der Quelle enthalten wären - es sei denn, Sie sind sorgfältig mit Include-Ketten (Eine Datei enthält n andere). Prüfen, ob ein Symbol definiert ist und nur wenn das Symbol definiert ist - war ein Ausweg.

+0

Es gibt Dinge, die in '* .h' gehen sollten (wie' typedef' und 'struct' Definitionen), aber das _kann nicht_ wiederholt werden. Das ist also kein Rückfall, wie Sie sagen. – vonbrand

1

Manchmal enthalten Personen eine vollständige .c-Datei in anderen .c-Dateien (oder sogar .h-Dateien), so dass genau das verhindert wird, dass eine Include-Datei mehrmals eingeschlossen wird und der Compiler mehrere Definitionsfehler ausgibt .

Es ist seltsam, dass es das Standardverhalten eines Editors wäre, dies in alles außer einer .h-Datei zu setzen. Dies wäre eine selten benötigte Funktion.

1

Eine modernere Version davon ist zu verwenden:

#pragma once 

Es ist ziemlich ungewöhnlich, dies in einer C-Datei, um zu sehen, in der Regel nur in den Header-Dateien ist.

Verwandte Themen