Auto define en editores C… ¿Por qué?
-
09-06-2019 - |
Pregunta
Cuando Eclipse crea un nuevo archivo (.C o .h archivo) en un proyecto C, el editor siempre crea automáticamente un #define
en la parte superior del archivo así:Si el archivo se llama 'myCFile.c' habrá un #define
al comienzo del archivo como este
#ifndef MYCFILE_C_
#define MYCFILE_C_
También he visto a otros editores hacer esto (creo que Codewright y SlikEdit).El #defines
No parece hacer nada por el editor, ya que puedo eliminarlos sin ningún problema y no se me ocurre ninguna razón por la cual I querría usarlos.¿Alguien sabe por qué están ahí?
Solución
es para protegerse contra múltiples definiciones.
Otros consejos
A veces las personas incluyen un archivo .c completo en otros archivos .c (o incluso archivos .h), por lo que tiene exactamente el mismo propósito de evitar que un archivo de inclusión se incluya varias veces y que el compilador genere múltiples errores de definición.
Es extraño, sin embargo, que el comportamiento predeterminado de un editor sea poner esto en cualquier cosa que no sea un archivo .h.Esta sería una característica que rara vez se necesita.
Una versión más moderna de esto es usar:
#pragma once
Es bastante inusual ver esto en un archivo .c; normalmente está solo en los archivos de encabezado.
Creo que es un retroceso de los problemas de inclusión de C, donde se incluirían múltiples copias de la fuente, a menos que sea meticuloso con las cadenas de inclusión (un archivo incluye otros).Comprobar si un símbolo está definido e incluirlo solo si el símbolo está definido era una forma de solucionar este problema.