Авто определяет в редакторах C & # 8230; Зачем?
-
09-06-2019 - |
Вопрос
Когда Eclipse создает новый файл ( .c или .h ) в проекте C, редактор всегда автоматически создает #define
в верхней части файла, например, так: если файл называется «myCFile.c», в начале файла будет #define
, как этот
#ifndef MYCFILE_C_
#define MYCFILE_C_
Я видел, как другие редакторы тоже это делали (я думаю, Codewright и SlikEdit).
#defines
, похоже, ничего не делает для редактора, так как я могу просто удалить их без проблем, и я не могу придумать причину, почему I хотел бы использовать их. Кто-нибудь знает, почему они там? Р>
Решение
Это нужно для защиты от нескольких определений .
Другие советы
Иногда люди включают целый файл .c в другие файлы .c (или даже в файлы .h), поэтому он имеет ту же самую цель - предотвратить включение включаемого файла несколько раз, а компилятор выплевывает множество ошибок определения. р>
Странно, однако, что поведение редактора по умолчанию заключается в том, чтобы помещать это в любой файл, кроме .h. Это было бы редко необходимой функцией.
Более современная версия должна использовать:
#pragma once
Довольно необычно видеть это в файле .c, обычно это только в заголовочных файлах.
Я думаю, что это возврат к проблемам C include, когда в него будут включены несколько копий исходного кода - если только вы не будете осторожны с цепочками включения (один файл включает в себя n других). Проверка того, определен ли символ и в том числе ли его определение, была выходом из этого.